48 lines
1.1 KiB
TypeScript
48 lines
1.1 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 ancestors(@Parent() item: ItemModel) {
|
|
return this.itemsService.getItemAncestors(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);
|
|
}
|
|
}
|