import {Args, Parent, Query, ResolveField, Resolver} from "@nestjs/graphql"; import {Agent} from "./models/agent.model"; import {PrismaService} from "../prisma/prisma.service"; import {GraphQLString} from "graphql"; import {NotFoundException} from "@nestjs/common"; @Resolver(() => Agent) export class AgentResolver { constructor( private prismaService: PrismaService, ) {} @Query(() => [Agent]) listAgents() { return this.prismaService.agent.findMany({ include: { unlocks: true, entries: true, }, }); } @Query(() => Agent) async getAgent( @Args({ name: 'code', type: () => GraphQLString }) code: string, ) { const agent = await this.prismaService.agent.findFirst({ where: { slug: code }, }); if (!agent) throw new NotFoundException(); return agent; } @ResolveField('unlocks') async unlocks(@Parent() entry: Agent) { const result = await this.prismaService.agent.findFirst({ where: { id: entry.id }, select: { unlocks: true }, }); return result.unlocks; } @ResolveField('entries') async entries(@Parent() entry: Agent) { const result = await this.prismaService.agent.findFirst({ where: { id: entry.id }, select: { entries: true }, }); return result.entries; } }