metropolis/src/items/items.service.ts
Lauren Liberda c40d132584 item parents
2021-07-08 23:58:07 +02:00

40 lines
1.2 KiB
TypeScript

import { Injectable } from '@nestjs/common';
import { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';
import { EntityManager, Repository, TreeRepository } from 'typeorm';
import { NewItemInput } from './dto/new-item.input';
import { Item } from './items.entity';
import { ItemModel } from './items.model';
@Injectable()
export class ItemsService {
constructor(
@InjectRepository(Item)
private itemRepository: Repository<Item>,
@InjectEntityManager()
private entityManager: EntityManager,
) {
this.treeRepository = this.entityManager.getTreeRepository(Item);
}
treeRepository: TreeRepository<Item>;
async getItem(id: string): Promise<Item | undefined> {
return this.itemRepository.findOne(id);
}
async getItemParent(item: ItemModel) {
const itemE = await this.itemRepository.findOneOrFail(item.id);
return (await this.treeRepository.findAncestorsTree(itemE)).parent;
}
async createItem(input: NewItemInput): Promise<Item> {
const item = new Item();
item.name = input.name;
item.notes = input.notes;
if (input.parent) {
const parent = await this.itemRepository.findOneOrFail(input.parent);
item.parent = parent;
}
return this.itemRepository.save(item);
}
}