Uecko_ERP/modules/customers/src/api/index.ts

80 lines
1.9 KiB
TypeScript
Raw Normal View History

import type { IModuleServer } from "@erp/core/api";
2026-02-07 22:07:23 +00:00
2026-03-07 18:27:23 +00:00
import { customersRouter, models } from "./infrastructure";
2025-07-07 18:25:13 +00:00
2025-09-09 15:48:12 +00:00
export * from "./infrastructure/sequelize";
2025-07-07 18:25:13 +00:00
export const customersAPIModule: IModuleServer = {
name: "customers",
version: "1.0.0",
dependencies: [],
/**
* Fase de SETUP
* ----------------
* - Construye el dominio (una sola vez)
* - Define qué expone el módulo
* - NO conecta infraestructura
*/
async setup(params) {
const { env: ENV, app, database, baseRoutePath: API_BASE_PATH, logger } = params;
2026-03-07 18:27:23 +00:00
// 1) Dominio interno
//const customerInternalDeps = buildCustomerDependencies(params);
// 2) Servicios públicos (Application Services)
//const customerServices = buildCustomerServices(customerInternalDeps);
2025-07-07 18:25:13 +00:00
logger.info("🚀 Customers module dependencies registered", {
2025-09-03 10:41:12 +00:00
label: this.name,
2025-07-07 18:25:13 +00:00
});
2026-03-07 18:27:23 +00:00
2025-07-07 18:25:13 +00:00
return {
// Modelos Sequelize del módulo
2025-08-11 17:49:52 +00:00
models,
// Servicios expuestos a otros módulos
2025-07-07 18:25:13 +00:00
services: {
2026-03-07 18:27:23 +00:00
//customers: customerServices,
},
// Implementación privada del módulo
internal: {
2026-03-07 18:27:23 +00:00
//customers: customerInternalDeps,
2025-07-07 18:25:13 +00:00
},
};
},
/**
* Fase de START
* -------------
* - Conecta el módulo al runtime
* - Puede usar servicios e internals ya construidos
* - NO construye dominio
*/
async start(params) {
const { app, baseRoutePath, logger, getInternal } = params;
// Recuperamos el dominio interno del módulo
const customersInternalDeps = getInternal("customers", "customers");
// Registro de rutas HTTP
2026-03-07 18:27:23 +00:00
customersRouter(params, customersInternalDeps);
logger.info("🚀 Customers module started", {
label: this.name,
});
},
/**
* Warmup opcional (si lo necesitas en el futuro)
* ----------------------------------------------
* warmup(params) {
* ...
* }
*/
2025-07-07 18:25:13 +00:00
};
export default customersAPIModule;