// 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";
import {
  CustomerInvoiceIdAlreadyExistsError,
  isCustomerInvoiceIdAlreadyExistsError,
} from "../../domain";

// Crea una regla específica (prioridad alta para sobreescribir mensajes)
const invoiceDuplicateRule: ErrorToApiRule = {
  priority: 120,
  matches: (e) => isCustomerInvoiceIdAlreadyExistsError(e),
  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);
