import { GraphQLNonNull, GraphQLBoolean, } from 'graphql'; import { createDeviceInputType, updateDeviceInputType, deviceType } from './types'; import { authorized } from '../../auth'; import { DEVICE_REGISTERED } from './events'; import { publish } from '../../pubsub'; import { IDeviceRegistration } from '../../model/device'; import { registerDevice, updateDevice } from '../deviceRepository'; interface IDeviceRegistrationInput { input: IDeviceRegistration; } export default { registerDevice: { description: 'Register device', type: deviceType, args: { input: { type: new GraphQLNonNull(createDeviceInputType) }, }, resolve: authorized( ['AM', 'CD', 'CE'], async (_: any, { input }: IDeviceRegistrationInput) => { debugger; const device: Partial = await registerDevice(input); publish(DEVICE_REGISTERED, device); return device; }, ), }, updateDevice: { description: 'Update device', type: deviceType, args: { input: { type: new GraphQLNonNull(updateDeviceInputType) }, }, resolve: authorized( ['AM', 'CD', 'CE'], async (_: any, { input }: IDeviceRegistrationInput) => { const device: Partial = await updateDevice(input); publish(DEVICE_REGISTERED, device); return device; }, ), }, };