import { Router } from 'express'; import db from '../../db/index.js'; const router = Router(); /** * @openapi * /depots-retraits: * get: * summary: Liste des mouvements de cash (dépôts / retraits) * tags: [Dépôts / Retraits] * security: [{ ApiKeyAuth: [] }] * parameters: * - in: query * name: workspace * schema: { type: string } * description: > * Slug du workspace à filtrer (ex. "crowdlending"). Absent par défaut : * renvoie tous les workspaces confondus (les clés API restent globales, * cf. project_workspaces_transformation.md) — 400 si le slug est inconnu. * responses: * 200: { description: Liste des mouvements } * 400: { description: Slug de workspace inconnu } */ router.get('/', (req, res) => { // Clé "Famille et entreprises" (scope_all) → tous les investisseurs du // foyer ; clé mono-investisseur → filtre sur req.investisseurId. const invCond = req.investisseurScopeAll ? 'dr.investisseur_id IN (SELECT id FROM investisseurs WHERE user_id = ?)' : 'dr.investisseur_id = ?'; const invParam = req.investisseurScopeAll ? req.userId : req.investisseurId; const conds = [invCond]; const args = [invParam]; // Filtre optionnel par workspace (17/09/26, décision explicite d'Olivier) : // absent par défaut → comportement inchangé, tous workspaces confondus (les // clés API/MCP restent globales, décision du 08/09/26) ; ?workspace= // permet à un outil MCP de cibler un workspace précis — slug plutôt qu'un id // brut, portable entre installations comme pour l'export/import ZIP. if (req.query.workspace) { const ws = db.prepare('SELECT id FROM workspaces WHERE slug = ?').get(String(req.query.workspace)); if (!ws) return res.status(400).json({ error: `Workspace inconnu : "${req.query.workspace}"` }); conds.push('dr.workspace_id = ?'); args.push(ws.id); } const rows = db.prepare(` SELECT dr.id, dr.date_operation, p.nom AS plateforme_nom, dr.type, dr.montant, dr.libelle FROM depots_retraits dr JOIN plateformes p ON p.id = dr.plateforme_id WHERE ${conds.join(' AND ')} ORDER BY dr.date_operation DESC `).all(...args); res.json(rows); }); export default router;