From f8164ac38ce4a4a5e88b68178e0d52d89d8c92cd Mon Sep 17 00:00:00 2001 From: Alvar San Martin Date: Tue, 13 Jan 2026 17:24:22 +0100 Subject: [PATCH] Express + cliente RMQ asociado a casoso de uso --- .../sim-entrada-eventos/config/env/index.ts | 1 + .../config/eventBusConfig.ts | 26 +++++++ packages/sim-entrada-eventos/index.ts | 67 +++++++------------ .../infrastructure/simRoutes.http.ts | 20 ++++-- 4 files changed, 69 insertions(+), 45 deletions(-) create mode 100644 packages/sim-entrada-eventos/config/eventBusConfig.ts diff --git a/packages/sim-entrada-eventos/config/env/index.ts b/packages/sim-entrada-eventos/config/env/index.ts index 46631b0..cddba23 100644 --- a/packages/sim-entrada-eventos/config/env/index.ts +++ b/packages/sim-entrada-eventos/config/env/index.ts @@ -3,6 +3,7 @@ loadEnvFile("../../.env") export const env = { ENVIRONMENT: process.env.ENVIORMENT, + API_PORT: parseInt(process.env.API_PORT ?? "3000"), POSTGRES_USER: process.env.POSTGRES_USER, POSTGRES_PASSWORD: process.env.POSTGRES_PASSWORD, POSTGRES_PORT: process.env.POSTGRES_PORT, diff --git a/packages/sim-entrada-eventos/config/eventBusConfig.ts b/packages/sim-entrada-eventos/config/eventBusConfig.ts new file mode 100644 index 0000000..ebe7f11 --- /dev/null +++ b/packages/sim-entrada-eventos/config/eventBusConfig.ts @@ -0,0 +1,26 @@ +import { RabbitMQEventBus, RMQConnectionParams } from "#shared/infrastructure/RabbitMQEventBus" +import { env } from "./env" + +const rmqUser = env.RABBITMQ_USER +const rmqPass = env.RABBITMQ_PASSWORD +const rmqHost = env.RABBITMQ_HOST +const rmqPort = Number(env.RABBITMQ_PORT) +const rmqSecure = false +const rmqVhost = env.RABBITMQ_VHOST + +export const rmqConnOptions = { + username: rmqUser, + password: rmqPass, + vhost: rmqVhost, + hostname: rmqHost, + port: rmqPort, + secure: rmqSecure, +} + +export const rabbitmqEventBus = new RabbitMQEventBus({ + connectionParams: rmqConnOptions +}) + +export async function startRMQServer() { + await rabbitmqEventBus.connect() +} diff --git a/packages/sim-entrada-eventos/index.ts b/packages/sim-entrada-eventos/index.ts index 8125dbb..5ff65a2 100644 --- a/packages/sim-entrada-eventos/index.ts +++ b/packages/sim-entrada-eventos/index.ts @@ -1,50 +1,35 @@ +import express from "express" +import cors from 'cors'; +import { simRoutes } from "infrastructure/simRoutes.http" +import { rabbitmqEventBus } from '#config/eventBusConfig'; import { env } from "#config/env" -import { SimEvents } from "#shared/domain/SimEvents" -import { RabbitMQEventBus, RMQConnectionParams } from "#shared/infrastructure/RabbitMQEventBus" -const rmqUser = env.RABBITMQ_USER -const rmqPass = env.RABBITMQ_PASSWORD -const rmqHost = env.RABBITMQ_HOST -const rmqPort = Number(env.RABBITMQ_PORT) -const rmqSecure = false -const rmqVhost = env.RABBITMQ_VHOST +const PORT = env.API_PORT +const HOSTNAME = "0.0.0.0" +const app = express() - - -async function test() { - const connOptions = { - username: rmqUser, - password: rmqPass, - vhost: rmqVhost, - hostname: rmqHost, - port: rmqPort, - secure: rmqSecure, - } - - const event = { - key: "sim.activation", - payload: { - iccid: "1234" - }, - options: { - - } - } - - const rmqCli = new RabbitMQEventBus({ - connectionParams: connOptions +rabbitmqEventBus.connect() + .then(e => { + console.log("[o] Cliente RMQ iniciado") + }) + .catch(e => { + console.error("[!] El cliente RMQ no se ha podido iniciar", e) }) - await rmqCli.connect() - console.log("publicando", event) - rmqCli.publish([event]) - .then(e => { - console.log("Mensaje publicado", e) - }) - .catch(err => console.error) -} +// Middleware +app.use(cors()); -test() +app.use(express.json()); +app.use(express.urlencoded({ extended: true })); +app.use("/sim", simRoutes) + +app.get("/health", (req, res) => { + res.status(200).json({ status: "ok" }) +}) + +app.listen(PORT, HOSTNAME, () => { + console.log("[o] Servidor iniciado en el puerto %d", PORT) +}) export default {} diff --git a/packages/sim-entrada-eventos/infrastructure/simRoutes.http.ts b/packages/sim-entrada-eventos/infrastructure/simRoutes.http.ts index 6905acf..489233a 100644 --- a/packages/sim-entrada-eventos/infrastructure/simRoutes.http.ts +++ b/packages/sim-entrada-eventos/infrastructure/simRoutes.http.ts @@ -1,15 +1,26 @@ +import { rabbitmqEventBus } from '#config/eventBusConfig'; +import { SimUsecases } from 'aplication/Sim.usecases'; +import { SimController } from 'aplication/SimController'; import { Router } from 'express'; const simRoutes = Router() -simRoutes.get("/status") +const simUseCases = new SimUsecases({ + eventBus: rabbitmqEventBus +}) + +const simController = new SimController({ + simUseCases: simUseCases +}) + +simRoutes.get("/status", () => { }) simRoutes.post("/save", (req, res) => { }) -simRoutes.post("/activate", (req, res) => { - const { iccid } = req.body -}) + +simRoutes.post("/activate", simController.activation) + simRoutes.post("/pause", (req, res) => { }) @@ -20,3 +31,4 @@ simRoutes.post("/cancel", (req, res) => { simRoutes.post("/free", (req, res) => { }) +export { simRoutes }