| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import express from "express";
- import cors from "cors";
- import helmet from "helmet";
- import morgan from "morgan";
- import { config } from "../config/index.js";
- import { port } from "../config/server.js";
- import { db } from "../config/db.config.js";
- import { qdrant } from "../services/qdrantClient.js";
- import { errorHandler } from "../middleware/ErrorHandler.js";
- import { Roteamento } from "../routes/index.js";
- import { scheduleCleanup } from "../jobs/cleanupTokens.js";
- export class ServerFactory {
- static Iniciar() {
- const app = express();
- app.disable("x-powered-by");
- app.use(helmet());
- app.use(
- cors({
- origin: config.corsOrigin,
- credentials: true
- })
- );
- app.use(express.json({ limit: "10mb" }));
- app.use(morgan("dev"));
- app.get("/health", async (_req, res) => {
- const checks = { api: true, db: false, qdrant: false, ollama: false };
- try {
- await db.raw("SELECT 1");
- checks.db = true;
- } catch {}
- try {
- await qdrant.getCollections();
- checks.qdrant = true;
- } catch {}
- try {
- const r = await fetch(`${config.ollama.url}/api/tags`, { signal: AbortSignal.timeout(3000) });
- checks.ollama = r.ok;
- } catch {}
- const ok = Object.values(checks).every(Boolean);
- res.status(ok ? 200 : 503).json({ ok, checks });
- });
- Roteamento.IniciarRoteamento(app);
- app.use(errorHandler);
- const server = app.listen(port, () => {
- process.stdout.write(`API listening on http://localhost:${port}\n`);
- scheduleCleanup();
- });
- this.app = app;
- return server;
- }
- }
- export default ServerFactory;
|