# Actions de données SQLite — schéma 1.3

Source : https://docs.berkios.online/studio/sqlite-actions/ · Section : Studio · Documentation officielle BERKIOS (https://docs.berkios.online)


Le runtime Flutter générique implémente quatre types d'action, dans `buttonAction` ou dans `events[].actions` :

| Type | Champs | Effet |
|---|---|---|
| `data-create` | `modelId`, `values` | Crée un enregistrement et génère un identifiant local. |
| `data-read` | `modelId`, `targetWidgetId` facultatif | Lit les enregistrements du modèle ; si la cible est indiquée, affiche le résultat JSON dans ce composant. |
| `data-update` | `modelId`, `recordId`, `values` | Fusionne les champs fournis avec l'enregistrement existant. |
| `data-delete` | `modelId`, `recordId` | Supprime l'enregistrement ciblé. |

`values` est un objet JSON clé/valeur. Les valeurs textuelles peuvent contenir `{{nomDuComposant}}` ; le runtime remplace ce marqueur par la valeur du contrôle dont le champ `name` correspond. Les actions signalent les erreurs de stockage ou les identifiants obligatoires manquants via un message dans l'interface.

Dans le **Studio desktop Electron** (depuis la v0.7.140), chaque projet a sa propre base SQLite et chaque modèle une **table typée** (voir `data-core/README.md`). La table générique `berkios_records` (`model_id`, `record_id`, `payload` JSON, `updated_at`) reste utilisée par le runtime Flutter généré et par la coque Tauri ; elle est reprise automatiquement par le Studio Electron à la première synchronisation. Sur Windows, macOS et Linux, elle utilise SQLite FFI ; sur Android et iOS, elle utilise SQLite natif via `sqflite`.

## Limites actuelles

- Tables typées générées à partir de `dataModels[].fields` : **Studio desktop Electron uniquement**. Le runtime Flutter généré et la coque Tauri utilisent encore la table générique JSON.
- Les valeurs de `recordId` doivent être disponibles explicitement pour les actions de mise à jour et suppression ; la sélection visuelle d'un enregistrement n'est pas encore fournie automatiquement.
- La liaison bidirectionnelle automatique entre modèles et contrôles n'est pas encore implémentée.
- Le générateur spécialisé de gestion de stock garde son état en mémoire.
- Les builds Flutter natifs doivent être exécutés sur une machine avec le SDK Flutter et les outils de compilation correspondants.
