36 lines
1.0 KiB
JavaScript
36 lines
1.0 KiB
JavaScript
import { Router } from 'express';
|
|
import db from '../db/index.js';
|
|
import { requireAuth } from '../auth/middleware.js';
|
|
|
|
const router = Router();
|
|
|
|
router.get('/', requireAuth, (req, res) => {
|
|
const rows = db
|
|
.prepare(
|
|
`SELECT m.id AS match_id, g.slug, g.name, g.category,
|
|
m.started_at, m.ended_at, m.status,
|
|
mp.seat, mp.result, mp.score
|
|
FROM match_players mp
|
|
JOIN matches m ON m.id = mp.match_id
|
|
JOIN games g ON g.id = m.game_id
|
|
WHERE mp.user_id = ?
|
|
ORDER BY m.started_at DESC
|
|
LIMIT 100`,
|
|
)
|
|
.all(req.user.id);
|
|
|
|
const summary = db
|
|
.prepare(
|
|
`SELECT
|
|
SUM(CASE WHEN result = 'win' THEN 1 ELSE 0 END) AS wins,
|
|
SUM(CASE WHEN result = 'loss' THEN 1 ELSE 0 END) AS losses,
|
|
SUM(CASE WHEN result = 'draw' THEN 1 ELSE 0 END) AS draws
|
|
FROM match_players WHERE user_id = ?`,
|
|
)
|
|
.get(req.user.id) ?? { wins: 0, losses: 0, draws: 0 };
|
|
|
|
res.json({ matches: rows, summary });
|
|
});
|
|
|
|
export default router;
|