Indépendance du cœur¶
Objectif : comprendre pourquoi les notifications sont un opt-in, et non une brique du cœur.
Ce que vous allez apprendre : Forge Core ne dépend pas de forge-mvc-notifications.
La dépendance va de l'opt-in vers le cœur, jamais l'inverse.
Le paramètre db= rend les fonctions testables, et la constante CREATE_TABLE_SQL documente le schéma.
Deuxième palier du niveau avancé de la progression Notifications.
Ce que ce starter montre¶
- la règle de dépendance de l'opt-in ;
- l'injection de connexion via
db=; - la constante de schéma
CREATE_TABLE_SQL.
La règle¶
Forge Core ne sait rien des notifications.
forge-mvc-notifications fournit une API explicite.
L'application décide ce qu'elle notifie et où elle l'affiche.
- Aucun fichier du cœur n'importe
forge_mvc_notifications, ce qui est verrouillé par un test. - Le paquet importe le cœur pour accéder à la base : l'opt-in dépend du cœur, c'est le sens autorisé.
- Retirer le paquet ne casse pas le cœur : il n'en a jamais dépendu.
Injecter une connexion pour les tests¶
from forge_mvc_notifications import notify, get_notifications, CREATE_TABLE_SQL
# Chaque fonction accepte db= pour cibler une connexion précise.
notify("eleve.42", "Test", db=connexion_de_test)
notifications = get_notifications("eleve.42", db=connexion_de_test)
# Le schéma de la table est exposé comme constante.
print(CREATE_TABLE_SQL)
Comprendre ce code¶
- Chaque fonction (
notify,get_notifications,unread_count,mark_read,mark_all_read) acceptedb=. - Sans
db=, les fonctions utilisent la connexion configurée par le cœur. - Avec
db=, vous ciblez une connexion précise, par exemple une base de test isolée. CREATE_TABLE_SQLexpose le schéma SQL de la tablenotifications, utile pour préparer une base de test.
Ce que cela vous apporte¶
- Vous n'embarquez les notifications que si vous installez le paquet.
- Le cœur reste minimal et auditable, fidèle au périmètre défini par l'ADR-004.
- Le paramètre
db=rend l'API testable sans dépendre d'une configuration globale.
À retenir¶
- L'opt-in dépend du cœur, le cœur ignore l'opt-in.
- Toutes les fonctions acceptent
db=pour injecter une connexion. CREATE_TABLE_SQLdocumente et reproduit le schéma de la table.
Après ce starter¶
Vous avez fait le tour du socle.
Place au bilan du niveau avancé.