😒
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
import { Module } from '@nestjs/common'
|
||||
import { UserSchema } from './user.schema'
|
||||
import { MessageModule } from '../Message/message.module'
|
||||
|
||||
@Module({
|
||||
imports: [MessageModule],
|
||||
providers: [UserSchema],
|
||||
exports: [UserSchema],
|
||||
})
|
||||
|
||||
@@ -5,17 +5,21 @@ import {
|
||||
PothosSchema,
|
||||
SchemaBuilderToken,
|
||||
} from '@smatch-corp/nestjs-pothos'
|
||||
import { Builder } from '../Graphql/graphql.builder'
|
||||
import { Builder, SchemaContext } from '../Graphql/graphql.builder'
|
||||
import { PrismaService } from '../Prisma/prisma.service'
|
||||
import { clerkClient } from '@clerk/express'
|
||||
import { UnauthorizedException } from '@nestjs/common'
|
||||
import { MailService } from '../Mail/mail.service'
|
||||
import { MessageSchema } from 'src/Message/message.schema'
|
||||
import { Message } from '@prisma/client'
|
||||
import { PubSubEvent } from 'src/common/pubsub/pubsub-event'
|
||||
@Injectable()
|
||||
export class UserSchema extends PothosSchema {
|
||||
constructor(
|
||||
@Inject(SchemaBuilderToken) private readonly builder: Builder,
|
||||
private readonly prisma: PrismaService,
|
||||
private readonly mailService: MailService,
|
||||
private readonly messageSchema: MessageSchema,
|
||||
) {
|
||||
super()
|
||||
}
|
||||
@@ -366,5 +370,22 @@ export class UserSchema extends PothosSchema {
|
||||
},
|
||||
}),
|
||||
}))
|
||||
|
||||
// Subscription section
|
||||
this.builder.subscriptionFields((t) => ({
|
||||
userScopedMessage: t.field({
|
||||
type: this.messageSchema.message(),
|
||||
subscribe: async (_, _args, ctx: SchemaContext) => {
|
||||
if (!ctx.isSubscription) throw new Error('Not allowed')
|
||||
const {
|
||||
websocket: { pubSub },
|
||||
} = ctx
|
||||
return pubSub.asyncIterator([
|
||||
`${PubSubEvent.NEW_MESSAGE}.${ctx.websocket.me?.id}`,
|
||||
]) as unknown as AsyncIterable<Message>
|
||||
},
|
||||
resolve: async (payload: Message) => payload,
|
||||
}),
|
||||
}))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user