import { Injectable } from '@nestjs/common' import { Logger } from '@nestjs/common' import { MessageContextType, MessageType } from '@prisma/client' import { PrismaService } from 'src/Prisma/prisma.service' import { PubSubService } from 'src/PubSub/pubsub.service' import { PubSubEvent } from 'src/common/pubsub/pubsub-event' @Injectable() export class NotificationService { constructor( private readonly prisma: PrismaService, private readonly pubSub: PubSubService, ) {} async sendNotification(userId: string, title: string, content: string) { Logger.log(`Send notification to ${userId}`, 'NotificationService') await this.prisma.message.create({ data: { recipientId: userId, content, type: MessageType.TEXT, context: MessageContextType.NOTIFICATION, }, }) await this.pubSub.publish(`${PubSubEvent.NOTIFICATION}.${userId}`, { title, content, }) } }