polysignal_hackaton / backend /src /stats /stats.routes.js
blackmistcode's picture
Add files using upload-large-folder tool
26cbf65 verified
Raw
History Blame Contribute Delete
1.14 kB
/**
* Rutas REST de estadisticas globales (publicas).
*
* Endpoint (montado en /api/v1/stats):
* GET / → estadisticas agregadas del sistema.
*
* Datos expuestos:
* - marketsCount : total de mercados activos.
* - volume24h : suma de volumen de mercados activos.
* - signalsCount : total de senales IA generadas.
* - alertsToday : alertas enviadas en las ultimas 24h.
*/
import { Router } from 'express';
import { prisma } from '../utils/prisma.js';
import { ok } from '../utils/apiResponse.js';
const router = Router();
router.get('/', async (_req, res) => {
const [marketsCount, signalsCount, alertsToday] = await Promise.all([
prisma.market.count({ where: { status: 'active' } }),
prisma.aISignal.count(),
prisma.alert.count({
where: { sentAt: { gte: new Date(Date.now() - 24 * 60 * 60 * 1000) } },
}),
]);
const volumeAgg = await prisma.market.aggregate({
where: { status: 'active' },
_sum: { volumeEur: true },
});
ok(res, {
marketsCount,
volume24h: volumeAgg._sum.volumeEur || 0,
signalsCount,
alertsToday,
});
});
export default router;