Aller au contenu

Lister les événements

Objectif : lire les événements via un fetch_all injectable et obtenir des dicts propres.

Ce que vous allez apprendre : list_stats_events lit via un fetch_all injectable et retourne des dicts normalisés (métadonnées désérialisées). La démo injecte un fetch_all factice.

Deuxième palier du niveau avancé de la progression stats.

Module opt-in

Ce starter suppose forge-mvc-stats installé. Aucune base réelle : le fetch_all de démo renvoie des lignes fixes.

Ce que ce starter montre

  • un fetch_all de démonstration injecté ;
  • list_stats_events(fetch_all, limit=...) ;
  • des événements normalisés en JSON.

Classes Forge utilisées

Classe / fonction Rôle dans ce starter Référence
forge_mvc_stats.list_stats_events Lire les événements via fetch_all, normalisés. Stats

Tester

forge run

Ouvrez https://localhost:8000/stats-list : les événements de démo en JSON.

Le contrôleur

# mvc/controllers/stats_list_controller.py
from forge_mvc_stats import list_stats_events

_DEMO_ROWS = [{"id": 1, "name": "page_view", "label": "Vue de page", "category": "navigation",
               "metadata": '{"path": "/"}', "created_at": "2026-01-01T10:00:00"}]


def _demo_fetch_all(sql, params):
    return _DEMO_ROWS   # au lieu d'interroger la base


class StatsListController(BaseController):

    @staticmethod
    def index(request: Request) -> Response:
        events = list_stats_events(_demo_fetch_all, limit=20)
        return Response.json({"events": events})

Comprendre ce code

  • L'injection de fetch_all rend la lecture testable : vraie fonction en production, fausse en démo/test.
  • Les métadonnées reviennent en dict (désérialisées du JSON stocké) — prêtes à l'usage, sans retraitement côté appelant.
  • En production : list_stats_events(core.database.db.fetch_all, ...).

À retenir

  • list_stats_events lit via fetch_all injecté et normalise les lignes.
  • Métadonnées désérialisées automatiquement.
  • Testable sans base réelle.

Après ce starter

Dernier palier : la normalisation d'une ligne brute, isolée.

Normaliser une ligne