import { UniqueID } from "@common/domain"; import { Result } from "@common/helpers"; import { ITransactionManager } from "@common/infrastructure/database"; import { ICustomerInvoiceService } from "@contexts/customer-billing/domain"; import { CustomerInvoice } from "@contexts/customer-billing/domain/aggregates"; 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); }); } }