import { prisma } from "@repo/db"; import promClient from "prom-client"; export const promRegister = new promClient.Registry(); promClient.collectDefaultMetrics({ register: promRegister }); export const socketConnections = new promClient.Gauge({ name: "socket_connections", help: "Number of active socket connections", registers: [promRegister], }); export const aircraftPatches = new promClient.Counter({ name: "aircraft_patches", help: "Counts patch requests for aircrafts", registers: [promRegister], }); export const connectedPilots = new promClient.Gauge({ name: "connected_pilots", help: "Counts connected pilots", registers: [promRegister], collect: async () => { const count = await prisma.connectedAircraft.count({ where: { logoutTime: null, }, }); connectedPilots.set(count); }, }); export const connectedDispatcher = new promClient.Gauge({ name: "connected_dispatcher", help: "Counts connected dispatchers", registers: [promRegister], collect: async () => { const count = await prisma.connectedDispatcher.count({ where: { logoutTime: null, }, }); connectedDispatcher.set(count); }, }); promRegister.registerMetric(socketConnections); promRegister.registerMetric(aircraftPatches); promRegister.registerMetric(connectedPilots); promRegister.registerMetric(connectedDispatcher);