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

85 lines
2.4 KiB
TypeScript

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"
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 simUseCases = new SimUseCases({
httpClient: httpClient,
operationRepository: operationRepository,
orderRepository: orderRepository,
pauseRepository: pauseRepository
})
const simActivationController = new SimController(
rmqClient,
simUseCases
)
const simRouter = new SimRouter(simActivationController, rmqClient)
// de momento solo una cola por simplificar
rmqClient.consume("sim.objenious", simRouter.route)
// Express Server para endpoints sincrónicos
const app = express()
app.use(cors())
app.use(express.json())
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)
})
const port = process.env.PORT || 3001
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 {}