Initialisation Forge IoT — forge iot:init¶
Statut : commande de préparation. Elle copie la migration SQL Forge IoT du package vers
mvc/migrations/du projet, mais n'applique pas le SQL. C'estforge migration:applyqui le fait ensuite — séparation volontaire pour rester lisible et relisible.
Objectif¶
Boucler le parcours du starter Bonjour IoT : passer de la réponse pédagogique
à une table iot_events prête à être créée par
forge migration:apply. Aucune connexion base, aucun SQL exécuté.
Usage¶
Aucune option à ce ticket. Aide via :
Flux recommandé¶
forge iot:doctor # vérifier package, config, migration, API HTTP
forge iot:init # copier la migration vers mvc/migrations/
forge migration:apply # créer la table iot_events en base
forge run # démarrer l'application
Avec ce parcours :
forge iot:doctorconfirme queforge-mvc-iotest installé, que la configuration est correcte et que la migration est embarquée dans le package.forge iot:initcopie le.sqldepuis le package versmvc/migrations/du projet. Idempotent.forge migration:apply(commande Forge Core existante) crée la table.forge rundémarre le serveur — les routes/welcome-optin-iot/eventset/api/iot/eventspeuvent maintenant retourner des données réelles.
Comportement¶
Cas normal — fichier copié¶
[OK] Migration IoT copiée : mvc/migrations/20260528120000_create_iot_events.sql
[INFO] Lance maintenant : forge migration:apply
Exit code : 0.
Cas idempotent — déjà présent, contenu identique¶
[OK] Migration IoT déjà présente (identique) : mvc/migrations/20260528120000_create_iot_events.sql
[INFO] Lance maintenant : forge migration:apply
Exit code : 0. La commande est sûre à rejouer.
Cas conflit — fichier présent, contenu différent¶
Exit code : 0. Aucun écrasement : si l'utilisateur a modifié la
migration localement, la décision lui revient — la commande ne touche
rien. Pour repartir de la version packagée, supprimer manuellement le
fichier puis relancer forge iot:init.
Cas dossier inexistant¶
Si mvc/ existe mais pas mvc/migrations/, le dossier est créé :
[INFO] Dossier mvc/migrations/ créé.
[OK] Migration IoT copiée : mvc/migrations/20260528120000_create_iot_events.sql
[INFO] Lance maintenant : forge migration:apply
Cas hors projet Forge¶
[ERREUR] Ce dossier ne ressemble pas à un projet Forge.
Conseil : lance cette commande à la racine du projet (dossier mvc/ attendu).
Exit code : 1.
Lecture des migrations packagées¶
La commande utilise importlib.resources pour lire les ressources
embarquées dans le package Python — fonctionne identiquement en
install éditable (depuis le monorepo) et en install PyPI réelle.
Le ticket
IOT-PACKAGE-DATA-MIGRATIONS-001
a embarqué les .sql via
[tool.setuptools.package-data] dans pyproject.toml, garantissant
que forge iot:init trouve toujours sa source quelle que soit
l'installation.
Hors périmètre¶
Sont volontairement hors périmètre de cette commande :
- pas de
forge migration:applyautomatique — séparation explicite préparation / exécution ; - pas de connexion à MariaDB ;
- pas de vérification que la table
iot_eventsexiste déjà ; - pas de rollback de migration ;
- pas d'option interactive (
--force,--diff, etc.) ; - pas de subscriber MQTT lancé ;
- pas de modification de fichiers en dehors de
mvc/migrations/.
Module opt-in absent¶
Si forge-mvc-iot n'est pas installé, forge iot:init retourne :
Erreur : module forge-mvc-iot non installé.
indice : installe le module opt-in : pip install forge-mvc-iot
Forge Core reste fonctionnel sans le module — l'import est paresseux
côté dispatcher (forge.py).