metropolis/src/items/items.resolver.ts

43 lines
1.0 KiB
TypeScript

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);
}
}