import { Context, Parent, ResolveField, Resolver } from '@nestjs/graphql'; import { Person } from '../models/Person'; import { Client } from '../../client'; import { UUID } from '../../global/scalars/UUID'; import {EmailAddress} from '../../global/scalars/EmailAddress' @Resolver(() => Person) export class PersonResolver { @ResolveField(() => UUID, { nullable: false }) async _id( @Context('client') client: Client, @Parent() parent: Person ): Promise { return parent._id as UUID; } @ResolveField(() => String, { nullable: false }) async givenName( @Context('client') client: Client, @Parent() parent: Person ): Promise { return parent.givenName; } @ResolveField(() => String, { nullable: false }) async familyName( @Context('client') client: Client, @Parent() parent: Person ): Promise { return parent.familyName; } @ResolveField(() => String, { nullable: true }) async token( @Context('client') client: Client, @Parent() parent: Person ): Promise { if (!client.isSelf(parent._id)) return null; return client.getToken(); } @ResolveField(() => EmailAddress, { nullable: true }) async email( @Context('client') client: Client, @Parent() parent: Person ): Promise { if (!client.isMaster() && !client.isSelf(parent._id)) return null; return parent.email; } }