the-tip-top-backend/index.js
2025-10-22 20:40:47 +00:00

53 lines
1.4 KiB
JavaScript
Executable File

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}`);
});