Files
sf-sim/packages/sim-consumidor-objenious/index.ts

117 lines
3.3 KiB
TypeScript
Raw Normal View History

2026-01-16 11:14:35 +01:00
2026-02-24 12:44:19 +01:00
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"
2026-01-30 15:00:50 +01:00
import { SimController } from "./aplication/Sim.controller.js"
import { SimRouter } from "./aplication/Sim.router.js"
2026-02-27 11:16:45 +01:00
import { OrderRepository } from "sim-shared/infrastructure/OrderRepository.js"
2026-04-07 17:43:17 +02:00
import { PauseCancelTaskRepository } from "#adapters/PauseCancelTaskRepository.js"
2026-01-16 11:14:35 +01:00
2026-04-27 12:12:12 +02:00
import express from "express"
import cors from "cors"
2026-04-27 16:30:22 +02:00
import assert from "node:assert";
2026-04-27 17:24:40 +02:00
import { env } from "#config/env/index.js"
import { ObjeniousLinesRepository } from "sim-shared/infrastructure/ObjeniousLinesRepository.js"
import { postgresClientIntranet } from "#config/intranetPostgresConfig.js"
2026-04-27 12:12:12 +02:00
2026-01-16 11:14:35 +01:00
async function startWorker() {
const rmqClient = await startRMQClient()
const httpClient = httpInstance
const pgClient = new PgClient({ pool: pgPool })
await pgClient.checkDatabaseConnection()
2026-04-07 17:43:17 +02:00
const operationRepository = new ObjeniousOperationsRepository(
httpClient,
pgClient,
)
2026-02-27 11:16:45 +01:00
const orderRepository = new OrderRepository(pgClient)
2026-04-07 17:43:17 +02:00
const pauseRepository = new PauseCancelTaskRepository(pgClient)
const linesRepository = new ObjeniousLinesRepository(
postgresClientIntranet
)
2026-04-07 17:43:17 +02:00
2026-04-27 12:12:12 +02:00
const simUseCases = new SimUseCases({
httpClient: httpClient,
operationRepository: operationRepository,
orderRepository: orderRepository,
pauseRepository: pauseRepository,
objeniousLinesRepository: linesRepository
2026-04-27 12:12:12 +02:00
})
const simController = new SimController(
rmqClient,
2026-04-27 12:12:12 +02:00
simUseCases
)
const simRouter = new SimRouter(simController, rmqClient)
2026-01-16 11:14:35 +01:00
// de momento solo una cola por simplificar
rmqClient.consume("sim.objenious", simRouter.route)
2026-04-27 12:12:12 +02:00
2026-04-27 16:30:22 +02:00
// Servidor express
2026-04-27 17:24:40 +02:00
const port = env.PORT
2026-04-27 12:12:12 +02:00
const app = express()
app.use(cors())
app.use(express.json())
2026-04-27 16:30:22 +02:00
app.get("/health", async (req, res) => {
res.json({ ok: "true" })
})
// TODO: meter el template de controller con los validadores
2026-04-27 12:12:12 +02:00
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
}
2026-04-27 16:30:22 +02:00
res.json(result) // {data:{...}} || {error:{...}}
2026-04-27 12:12:12 +02:00
})
/**
* Opciones query:
* - state
*
* Respuestas:
* - OK: data: {
* lines: ObjeniousLineDb[],
* offset: number,
* rowCount: number
* }
*
* - ERR: error: {
* message: string
* }
*/
app.get("/lines", simController.queryLines())
2026-04-27 16:30:22 +02:00
assert.ok(port, "Puerto del servicio no definido")
2026-04-27 12:12:12 +02:00
app.listen(port, () => {
console.log(`[o] HTTP server listening on port ${port}`)
})
2026-01-16 11:14:35 +01:00
}
startWorker()
.then(e => {
2026-01-27 14:48:44 +01:00
console.log("[o] Worker de SIM de Objenious[FR] iniciado")
2026-01-16 11:14:35 +01:00
})
.catch(e => {
2026-01-27 14:48:44 +01:00
console.error("[x] Error iniciando worker de SIM de Objenious[FR]", e)
2026-01-16 11:14:35 +01:00
})
export default {}