43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
import { Router } 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, res) => {
|
|
res.json(getOverview());
|
|
});
|
|
|
|
router.get('/pageviews', (req, res) => {
|
|
const { from, to } = req.query;
|
|
res.json(getPageviewsByDay(from, to));
|
|
});
|
|
|
|
router.get('/users', (req, res) => {
|
|
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, res) => {
|
|
res.json(getTopRecipes(20));
|
|
});
|
|
|
|
router.get('/activity', (req, res) => {
|
|
const { user_id, limit } = req.query;
|
|
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;
|