import { ObjeniousOperationsRepository } from "sim-shared/infrastructure/ObjeniousOperationRepository.js" import { startRMQClient } from "#config/eventBus.config.js" import { httpInstance } from "#config/httpClient.config.js" import { pgPool } from "#config/postgreConfig.js" import { PgClient } from "sim-shared/infrastructure/PgClient.js" import { SimUseCases } from "./aplication/Sim.usecases.js" import { SimController } from "./aplication/Sim.controller.js" import { SimRouter } from "./aplication/Sim.router.js" import { OrderRepository } from "sim-shared/infrastructure/OrderRepository.js" import { PauseCancelTaskRepository } from "#adapters/PauseCancelTaskRepository.js" import express from "express" import cors from "cors" import assert from "node:assert"; import { env } from "#config/env/index.js" import { ObjeniousLinesRepository } from "sim-shared/infrastructure/ObjeniousLinesRepository.js" import { postgresClientIntranet } from "#config/intranetPostgresConfig.js" async function startWorker() { const rmqClient = await startRMQClient() const httpClient = httpInstance const pgClient = new PgClient({ pool: pgPool }) await pgClient.checkDatabaseConnection() const operationRepository = new ObjeniousOperationsRepository( httpClient, pgClient, ) const orderRepository = new OrderRepository(pgClient) const pauseRepository = new PauseCancelTaskRepository(pgClient) const linesRepository = new ObjeniousLinesRepository( postgresClientIntranet ) const simUseCases = new SimUseCases({ httpClient: httpClient, operationRepository: operationRepository, orderRepository: orderRepository, pauseRepository: pauseRepository, objeniousLinesRepository: linesRepository }) const simController = new SimController( rmqClient, simUseCases ) const simRouter = new SimRouter(simController, rmqClient) // de momento solo una cola por simplificar rmqClient.consume("sim.objenious", simRouter.route) // Servidor express const port = env.PORT const app = express() app.use(cors()) app.use(express.json()) app.get("/health", async (req, res) => { res.json({ ok: "true" }) }) // TODO: meter el template de controller con los validadores app.get("/lines/:iccid/suspended-time", async (req, res) => { const iccid = req.params.iccid if (!iccid) { res.status(400).json({ error: "iccid is required" }) return } const result = await simUseCases.getSuspendedTime(iccid) if (result.error !== undefined) { res.status(500).json({ error: result.error }) return } res.json(result) // {data:{...}} || {error:{...}} }) /** * Opciones query: * - state * * Respuestas: * - OK: data: { * lines: ObjeniousLineDb[], * offset: number, * rowCount: number * } * * - ERR: error: { * message: string * } */ app.get("/lines", simController.queryLines()) app.get("/select", simController.queryLine()) assert.ok(port, "Puerto del servicio no definido") app.listen(port, () => { console.log(`[o] HTTP server listening on port ${port}`) }) } startWorker() .then(e => { console.log("[o] Worker de SIM de Objenious[FR] iniciado") }) .catch(e => { console.error("[x] Error iniciando worker de SIM de Objenious[FR]", e) }) export default {}