Génération de code admin
Comportement de `runique start`
runique start n'est pas un watcher en tâche de fond : c'est une génération one-shot séquentielle, suivie du lancement bloquant de l'application.
src/admin.rsest lu une fois- La macro
admin! { ... }est parsée viasyn, produisant desResourceDef - Le contenu de
src/admins/est réécrit sur place (les fichiers sont tronqués puis réécrits — le dossier n'est jamais supprimé au préalable) cargo fmt --allest lancécargo run --releaseest lancé, bloquant, dans le même processus
Il n'y a ni surveillance continue du fichier, ni debounce : une ancienne implémentation basée sur un thread séparé a été retirée car elle provoquait une race condition. Pour régénérer après une modification, relancez runique start.
Structure générée
src/admins/
├── README.md ← avertissement : ne pas éditer manuellement
├── mod.rs ← expose `routes` et `admin_state`
└── admin.rs ← fichier principal : wrappers DynForm + admin_register()
admin.rs
Contient pour chaque ressource déclarée dans admin! :
- Un wrapper
DynFormautour du formulaire Runique concret - Les closures CRUD :
list_fn,get_fn,create_fn,update_fn,delete_fn,count_fn,partial_update_fn(toujours générée, utilisée pour le bulk edit/group actions) - Si
list_filterest déclaré : une closurefilter_fnpar champ, qui charge les valeurs distinctes depuis la base (jusqu'à 10 par défaut) - La configuration d'affichage (colonnes visibles, taille de page filtre) transmise via
.display(…)sur leResourceEntry - La fonction
admin_register()qui construit leHashMap<String, ResourceEntry>chargé au boot
mod.rs
Ré-exporte routes et admin_state depuis admin.
Le compromis : écrasement automatique
Chaque exécution de runique start réécrit le contenu de src/admins/ (fichiers tronqués puis régénérés, jamais supprimés au préalable).
Toute modification manuelle dans ce dossier sera perdue au prochain runique start.
Quand basculer sur `cargo run`
Si des modifications manuelles du code généré sont nécessaires (logique métier spécifique, handler personnalisé), il faut arrêter runique start et passer à un workflow standard :
cargo run
Dans ce mode, runique start ne tourne plus, donc src/admins/ n'est jamais réécrit. Les modifications persistent.
Le
README.mdgénéré danssrc/admins/rappelle ce comportement directement dans le dépôt.
Autre section
| Section | Description |
|---|---|
| CLI | Fonctionnement de runique start |
Macro admin! | Déclaration des ressources administrables |