metropolis/src/items/items.resolver.ts

54 lines
1.3 KiB
TypeScript

import {
Args,
ID,
Mutation,
Parent,
Query,
ResolveField,
Resolver,
} from '@nestjs/graphql';
import { NewItemInput } from './dto/new-item.input';
import { EANService } from './ean/ean.service';
import { ItemModel } from './items.model';
import { ItemsService } from './items.service';
@Resolver((of) => ItemModel)
export class ItemsResolver {
constructor(private itemsService: ItemsService, private eans: EANService) {}
@Query((returns) => ItemModel, { nullable: true })
async item(@Args('id', { type: () => ID }) id: string) {
return this.itemsService.getItem(id);
}
@ResolveField()
ean13(@Parent() item: ItemModel) {
return this.eans.fromID(item.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 descendants(@Parent() item: ItemModel) {
return this.itemsService.getItemDescendants(item);
}
@Mutation((returns) => ItemModel)
async createItem(@Args('itemData') itemData: NewItemInput) {
return this.itemsService.createItem(itemData);
}
}