import express from "express"; import prometheus from "prom-client"; import dotenv from "dotenv"; import pkg from "pg"; dotenv.config(); const { Client } = pkg; // --- Connexion PostgreSQL --- const db = new Client({ host: process.env.DB_HOST, user: process.env.DB_USER, password: process.env.DB_PASS, database: process.env.DB_NAME, }); db.connect() .then(() => console.log("✅ Connecté à PostgreSQL avec succès")) .catch(err => console.error("❌ Erreur de connexion à PostgreSQL :", err)); // --- App Express --- const app = express(); const port = process.env.PORT || 4000; app.use(express.json()); // --- Prometheus --- const register = new prometheus.Registry(); prometheus.collectDefaultMetrics({ register }); const httpRequestsTotal = new prometheus.Counter({ name: "http_requests_total", help: "Nombre total de requêtes HTTP", labelNames: ["method", "route", "status"], registers: [register], }); // Route API app.get("/api", (req, res) => { httpRequestsTotal.labels("GET", "/api", "200").inc(); res.json({ message: "Bienvenue sur The Tip Top API!" }); }); // Endpoint de métriques Prometheus app.get("/metrics", async (req, res) => { res.set("Content-Type", register.contentType); res.end(await register.metrics()); }); app.listen(port, "0.0.0.0", () => { console.log(`🚀 Backend The Tip Top lancé sur le port ${port}`); });