117 lines
3.3 KiB
TypeScript
117 lines
3.3 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"
|
|
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())
|
|
|
|
|
|
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 {}
|