Services
Services
Modules
Gère les réglages des modules par diffuseur, les citations, les compteurs d’alimentation et les identifiants d’intégrations.
Sur cette page
Le service Modules (app/db/modules/) gère la configuration et l’état d’activation des modules fonctionnels pour chaque diffuseur. Il conserve aussi les carnets de citations des chaînes, les totaux à vie de l’alimentation des bagels et les identifiants Govee et Spotify chiffrés.
Architecture
Comme les autres services de données, Modules suit un modèle de propriété strict :
- Propriété : propriétaire unique du schéma MySQL des modules.
- Interface RPC : sert le tableau de bord sous
bagel.rpc.modules.*(list,upsert,patch,patch-existing, plus les opérations de citations et de personnalité) et fournit des vues de réparation sans secret viabagel.rpc.internal.projection.modules.get. - Émission d’événements : émet
data.modules.changedavec la révision enregistrée. Unupsertdu tableau de bord est écrit avant le retour de la réponse ; les écritures en arrière-plan sont groupées. - Invalidation du cache : diffuse sur
bagel.cache.invalidate.<portée>lorsqu’un module est activé, désactivé ou reconfiguré, afin que le moteur Sesame adapte son pipeline d’exécution. - Identifiants : les clés Govee et l’application et les jetons de rafraîchissement Spotify sont chiffrés dans des tables séparées et n’entrent jamais dans les blocs de configuration ni dans les projections. Gossip les lit par des RPC internes de déchiffrement.
Configuration des modules
Les modules d’ItsBagelBot sont configurables par chaîne. Ce service conserve les blocs de configuration JSON et les booléens d’activation (IsEnabled) associés aux identités de module déclarées dans le moteur Sesame. Lorsqu’il traite un événement, Sesame consulte sa projection locale ModuleView, alimentée par ce service, pour déterminer si les handlers ou commandes du module doivent s’exécuter.