import { ObjectType, Field, ID, ArgsType, InputType, registerEnumType, Int } from 'type-graphql'; import { Permission } from '@seed/interfaces/permission'; import { AccountTypeEnum } from '@src/accounts/account.components'; import { EngineModel } from '@seed/engine/EngineModel'; import { NotificationDBInterfaceSchema, NotificationDBSchema, NotificationSchema } from './schemas/notifications.schema'; import { plainToClass } from 'class-transformer'; import { IEngineSchema } from '@seed/engine/EngineSchema'; import { sendNotificationHanlder } from './services/NotificationService'; const permissions: Permission = { c: [AccountTypeEnum.admin], r: [AccountTypeEnum.public], w: [AccountTypeEnum.admin], d: [AccountTypeEnum.admin], }; @ObjectType() export default class NotificationModel extends EngineModel { public constructor(input?: NotificationDBInterfaceSchema & Partial) { const dataInit = plainToClass(NotificationDBSchema, input || {}); super({ collectionName: 'notifications', permissions: permissions, dataInit, }); } plainToClass(plain: any): NotificationSchema | NotificationSchema[] { return plainToClass(NotificationSchema, plain); } async afterCreate(): Promise { await sendNotificationHanlder(this); } async afterUpdate(): Promise {} async afterDelete(): Promise {} }