Files
Tiktok-Rezepte/backend/routes/analytics.ts
2026-11-01 20:14:25 +01:00

43 lines
1.3 KiB
TypeScript

import { Router, Request, Response } from 'express';
import {
getOverview, getPageviewsByDay, getTopUsers,
getTopRecipes, getRecentActivity, getEvents
} from '../analytics-db.js';
import { getUserById } from '../db.js';
const router = Router();
router.get('/overview', (req: Request, res: Response) => {
res.json(getOverview());
});
router.get('/pageviews', (req: Request, res: Response) => {
const { from, to } = req.query as { from?: string; to?: string };
res.json(getPageviewsByDay(from, to));
});
router.get('/users', (req: Request, res: Response) => {
const topUsers = getTopUsers(20);
const enriched = topUsers.map(u => {
const user = getUserById(u.user_id);
return { ...u, username: user ? user.username : `User #${u.user_id}` };
});
res.json(enriched);
});
router.get('/recipes', (req: Request, res: Response) => {
res.json(getTopRecipes(20));
});
router.get('/activity', (req: Request, res: Response) => {
const { user_id, limit } = req.query as { user_id?: string; limit?: string };
const events = getEvents({ user_id, limit: limit ? Number(limit) : 50 });
const enriched = events.map(e => {
const user = e.user_id ? getUserById(e.user_id) : null;
return { ...e, username: user ? user.username : null };
});
res.json(enriched);
});
export default router;