import { Injectable } from '@nestjs/common' ; import { CommandBus , QueryBus } from '@nestjs/cqrs' ; import { ItemEntity } from '@infrastructure/entities' ; import { CreateItemCommand , DeleteItemByIdCommand , UpdateItemCommand , } from '../commands/impl' ; import { GetItemByIdQuery , GetItemsQuery } from '../queries/impl' ; import { CreateItemDto , GetItemsDto , UpdateItemDto } from '../dtos' ; @ Injectable ( ) export class ItemService { constructor ( private readonly queryBus , private readonly commandBus ) { } async getItemById ( id ) { return this . queryBus . execute ( new GetItemByIdQuery ( id ) ) ; } async getItems ( getItemsDto ) { return this . queryBus . execute ( new GetItemsQuery ( getItemsDto ) ) ; } async createItem ( createItemDto ) { return this . commandBus . execute ( new CreateItemCommand ( createItemDto ) ) ; } async updateItem ( updateItemDto ) { return this . commandBus . execute ( new UpdateItemCommand ( updateItemDto ) ) ; } async deleteItemById ( id ) { return this . commandBus . execute ( new DeleteItemByIdCommand ( id ) ) ; } }