Uecko_ERP/modules/customer-invoices/src/api/infrastructure/express/customer-invoices-api-error-mapper.ts

24 lines
905 B
TypeScript
Raw Normal View History

2025-08-25 17:42:56 +00:00
// Ejemplo: regla específica para Billing → InvoiceIdAlreadyExistsError
// (si defines un error más ubicuo dentro del BC con su propia clase)
import { ApiErrorMapper, ConflictApiError, ErrorToApiRule } from "@erp/core/api";
2025-10-04 16:29:14 +00:00
import {
CustomerInvoiceIdAlreadyExistsError,
isCustomerInvoiceIdAlreadyExistsError,
} from "../../domain";
2025-08-25 17:42:56 +00:00
// Crea una regla específica (prioridad alta para sobreescribir mensajes)
const invoiceDuplicateRule: ErrorToApiRule = {
priority: 120,
2025-10-04 16:29:14 +00:00
matches: (e) => isCustomerInvoiceIdAlreadyExistsError(e),
2025-08-25 17:42:56 +00:00
build: (e) =>
new ConflictApiError(
(e as CustomerInvoiceIdAlreadyExistsError).message ||
"Invoice with the provided id already exists."
),
};
// Cómo aplicarla: crea una nueva instancia del mapper con la regla extra
export const customerInvoicesApiErrorMapper: ApiErrorMapper =
ApiErrorMapper.default().register(invoiceDuplicateRule);