import { ICustomerInvoiceService } from "@contexts/customer-billing/domain"; import { CustomerInvoice } from "@contexts/customer-billing/domain/aggregates"; import { UniqueID } from "core/common/domain"; import { Result } from "core/common/helpers"; import { ITransactionManager } from "core/common/infrastructure/database"; export class GetCustomerInvoiceUseCase { constructor( private readonly invoiceService: ICustomerInvoiceService, private readonly transactionManager: ITransactionManager ) {} public execute(invoiceId: UniqueID): Promise> { return this.transactionManager.complete((transaction) => { return this.invoiceService.findCustomerInvoiceById(invoiceId, transaction); }); } }