import { validate } from "@olagg/validate"; import { inject, injectable } from "tsyringe"; import Item from "../domain/entities/item"; import ItemRepository from "../domain/repositories/item.repository"; import CreateItemService from "../domain/services/createItem.service"; import createItemSchema from "../domain/services/schemas/createItem.schema"; import { CreateItemAttr } from "../domain/types/item.type"; import Result from "../utils/result"; @injectable() export default class CreateItemServiceImpl implements CreateItemService{ constructor( @inject("Items:ItemRepository") private repository: ItemRepository ){} @validate(createItemSchema) async run(payload: CreateItemAttr): Promise>{ const item = await this.repository.create(payload); return item ? Result.success(item) : Result.failure("No se pudo crear"); } }