import { validate } from "@olagg/validate"; import { inject, injectable } from "tsyringe"; import Stock from "../domain/entities/stock"; import StockRepository from "../domain/repositories/stock.repository"; import ListUserStockService from "../domain/services/listUserStock.service"; import getStockSchema from "../domain/services/schemas/getStock.schema"; import { ListUserStockAttr } from "../domain/types/stock.type"; import Result from "../utils/result"; @injectable() export default class ListUserStockServiceImpl implements ListUserStockService{ constructor( @inject("Stock:StockRepository") private repository: StockRepository ){} @validate(getStockSchema) async run(payload: ListUserStockAttr): Promise>{ try{ const stock = await this.repository.list(payload); return Result.success(stock); }catch(error){ console.error(error); return Result.failure("Algo salió mal", (error as Error).message); } } }