import { Args, ID, Mutation, Parent, Query, ResolveField, Resolver, } from '@nestjs/graphql'; import { NewItemInput } from './dto/new-item.input'; import { ItemModel } from './items.model'; import { ItemsService } from './items.service'; @Resolver((of) => ItemModel) export class ItemsResolver { constructor(private itemsService: ItemsService) {} @Query((returns) => ItemModel, { nullable: true }) async item(@Args('id', { type: () => ID }) id: string) { return this.itemsService.getItem(id); } @ResolveField() async parent(@Parent() item: ItemModel) { return this.itemsService.getItemParent(item); } @ResolveField() async children(@Parent() item: ItemModel) { return this.itemsService.getItemChildren(item); } @ResolveField() async descendents(@Parent() item: ItemModel) { return this.itemsService.getItemDescendents(item); } @Mutation((returns) => ItemModel) async createItem(@Args('itemData') itemData: NewItemInput) { return this.itemsService.createItem(itemData); } }