# Datastore

> Concevez, gérez et exploitez le datastore de votre application PandaSuite : structure, liaison de données, actions sans code (modifier, synchroniser, exporter), gestion hors-ligne et bonnes pratiques.

https://docs.pandasuite.com/fr/essentials/data/datastore/

**Le Datastore réunit deux usages souvent séparés : stocker les données locales de votre app (variables, progression, préférences) et gérer des collections de contenu comme un CMS léger.**

## Comprendre son fonctionnement

### Rôle 1 : gestionnaire de variables locales

Le Datastore permet de stocker des données propres à chaque utilisateur, directement sur son appareil :

- **Scores et progression** : niveau atteint, points accumulés, étapes débloquées
- **Préférences** : langue choisie, mode sombre activé, taille de texte
- **État de l'app** : tutoriel déjà vu, articles mis en favoris, formulaires pré-remplis

Ces données survivent à la fermeture de l'app, mais restent locales : chaque utilisateur a sa propre version, indépendante des autres.

[Image : Datastore utilisé comme gestionnaire de variables locales : propriété score de type Nombre avec valeur par défaut 0]

> **Astuce : Partager des données entre utilisateurs**
>
> Le Datastore est local : deux utilisateurs ne peuvent pas lire ou écrire dans
> les mêmes données. Pour centraliser ou partager des données, combinez-le avec
> un service externe via le [composant HTTP](https://docs.pandasuite.com/fr/essentials/components/http/)
> ou [Firebase](https://docs.pandasuite.com/fr/essentials/components/firebase-session/).

### Rôle 2 : CMS léger pour vos collections

Le Datastore peut aussi contenir du contenu structuré que vous gérez depuis le Studio et poussez vers vos utilisateurs :

- **Catalogue de produits** : liste d'articles mise à jour régulièrement
- **Pages dynamiques** : contenu éditorial sans recréer l'app
- **Configuration** : paramètres modifiables à distance

Dans ce cas, vous éditez le contenu dans le Datastore, puis les utilisateurs récupèrent les mises à jour via l'action **Récupérer les données distantes**.

[Image : Le Datastore utilisé comme CMS : collection de tableaux d'un audioguide de musée avec colonnes Nom, Audio, Auteur, Image, Date et Description]

> **Info : Pas de serveur nécessaire**
>
> Tout fonctionne en local, même hors ligne. Les modifications d'un utilisateur
> n'affectent jamais les autres.

## Créer votre Datastore

### Ajouter un Datastore

Dans le panneau **Source de données**, choisissez **Datastore**. Celui-ci est ajouté au niveau **Projet**.

[Image : Menu Source de données dans PandaSuite Studio avec les options PandaSuite Datastore, Airtable, Xano et Generic API] Vous pouvez ajouter plusieurs Datastores dans un même projet pour segmenter vos usages (par exemple : progression d’un côté, contenu éditorial de l’autre).

Cliquez sur la flèche pour ouvrir le **Datastore** : un éditeur en tableau s'ouvre dans une fenêtre de PandaSuite Studio.

### Fonctionnalités du Datastore

- **Vue grille** : chaque colonne correspond à une propriété, chaque ligne à un item — vous visualisez tout simultanément.
- **Vue JSON** : basculez vers une vue JSON brute via le bouton **{ }** en haut à droite, avec options **Importer** et **Exporter**.
- **Filtrage** : utilisez le panneau latéral **Filtres avancés** pour filtrer par contenu, type ou valeur. Les filtres modifient les lignes visibles sans changer leur ordre.
- **Ordre manuel des lignes** : faites glisser les lignes pour les réorganiser. Le Data Editor ne trie actuellement pas les lignes automatiquement selon la valeur d’une colonne.
- **Sélection multiple** : cochez plusieurs lignes pour les dupliquer ou les supprimer en lot via un clic droit.
- **Gestion des colonnes** : réorganisez, épinglez ou masquez des colonnes via le menu contextuel de chaque en-tête.
- **Undo / Redo** : annulez ou rétablissez vos dernières modifications via les flèches en haut à droite.

[Image : Panneau Filtres avancés du Datastore : collection people filtrée sur Nom contient « mi », 4 lignes sur 15 affichées]

### Définir la structure

[Image : Menu des types de données, avec recherche, ouvert depuis + Nouvelle propriété dans le Datastore : Tableau, Audio, Booléen, Collection…]

1. Cliquez sur **+ Nouvelle propriété** (en bas à gauche de la grille).
2. Choisissez le **[type de données](https://docs.pandasuite.com/fr/essentials/data/data-types/)** via le menu avec recherche : **Texte**, **Nombre**, **Booléen**, Collection, Image, Référence, Audio, Vidéo, Date, Couleur, et plus encore.
3. Renommez et renseignez la valeur directement dans la cellule de la grille.

> **Astuce : Choisissez Collection pour des enregistrements**
>
> Pour une propriété contenant plusieurs enregistrements avec les mêmes champs,
> comme des recettes, produits ou articles, choisissez **Collection** plutôt
> que **Tableau** : une Collection donne un identifiant à chaque item et une
> **Référence** réutilisable. Utilisez **Tableau** pour les listes ordonnées
> simples où l'accès par index suffit. Plus de détails :
> [Tableau ou Collection ?](https://docs.pandasuite.com/fr/essentials/data/data-types/#collection).

> **Succès : Sauvegarder et déployer**
>
> Chaque modification exige de cliquer sur **Sauvegarder** (icône disquette en
> haut à droite du Data Editor) puis sur **Mettre en production** pour être
> incluse dans vos builds ou votre pré-visualisation distante.

## Manipuler les données

Toutes les opérations se déclenchent depuis le panneau **Actions** : aucun code requis.

### Créer / Modifier une donnée (local)

Cette action modifie les données **uniquement sur l'appareil de l'utilisateur**. C'est l'action la plus courante pour gérer des scores, préférences et un état de l'application.

> **Info : Rappel important**
>
> Ces modifications restent sur l'appareil. Elles ne sont pas envoyées aux
> serveurs PandaSuite ni partagées avec d'autres utilisateurs.

Dans le panneau **Actions**, choisissez un déclencheur, puis : **Agir sur une source de données** → **Datastore** → **Créer/Modifier une donnée (Local)**. Sélectionnez la propriété cible et choisissez la fonction à appliquer :

| Fonction                      | Type de donnée | Effet                                        |
| ----------------------------- | -------------- | -------------------------------------------- |
| **Définir**                   | Tous           | Remplace complètement la valeur              |
| **Incrémenter / Décrémenter** | Nombre         | Ajoute ou retire une valeur numérique        |
| **Ajouter**                   | Tableau        | Ajoute un élément à la fin de la liste       |
| **Supprimer par valeur**      | Tableau        | Retire un élément spécifique de la liste     |
| **Supprimer par id**          | Tableau        | Retire un élément par son identifiant unique |
| **Supprimer**                 | Tous           | Efface complètement la donnée                |

[Image : Action Créer/Modifier une donnée (local) dans PandaSuite Studio : cible /score avec la fonction Incrémenter de 1]

### Récupérer les données distantes

Cette action permet de récupérer les mises à jour du modèle depuis le Studio. C'est particulièrement utile quand vous utilisez le datastore pour du contenu dynamique.

Vous avez le choix de fusionner ou non les données distantes avec les données locales.

1. **Non (sans fusion)** : remplace complètement les données locales par celles de PandaSuite Studio

   - ✅ Idéal pour : catalogue produit, contenu éditorial
   - ❌ Attention : perd les modifications locales (scores, préférences)

2. **Oui (avec fusion / merge)** : combine intelligemment les données locales et distantes
   - ✅ Conserve les modifications de l'utilisateur
   - ✅ Ajoute les nouveaux éléments du Studio
   - ✅ Met à jour les valeurs par défaut non modifiées localement

> **Exemple : Exemple concret**
>
> Vous avez une collection de niveaux de jeu. L'utilisateur a débloqué les
> niveaux 1 à 5. Vous ajoutez 3 nouveaux niveaux dans le Studio.
>
> - **Sans fusion** : l'utilisateur perd sa progression.
>
> - **Avec fusion** : il garde sa progression ET reçoit les nouveaux niveaux.

#### Quand synchroniser ?

| Moment                   | Pourquoi                             |
| ------------------------ | ------------------------------------ |
| Au lancement de l'app    | Récupérer les dernières mises à jour |
| Bouton "Actualiser"      | Laisser l'utilisateur contrôler      |
| Après connexion internet | Si l'app était utilisée hors ligne   |

### Exporter les données (local)

L'action **Exporter les données** crée un fichier avec les données du chemin choisi (tout le Datastore par défaut), en JSON (par défaut) ou en CSV. Le CSV ne fonctionne que pour une liste (Array ou Collection) : utilisez le JSON pour les autres données locales, comme les scores ou les préférences. Utile pour l'analyse, le support ou pour permettre à l'utilisateur de sauvegarder sa progression.

> **Info : Export local uniquement**
>
> Le fichier est créé et stocké sur l'appareil. Pour l'envoyer sur un serveur, vous
> devrez utiliser [une API externe](https://docs.pandasuite.com/fr/essentials/components/http/).

## Supprimer votre datastore

Rendez-vous dans l'onglet **Projet**, sélectionnez votre datastore et cliquez sur l'icône de suppression.

## Quand utiliser quoi ?

Le Datastore couvre la majorité des besoins d'une app. Pour les cas qui dépassent le local, combinez-le avec un service externe plutôt que de le remplacer.

| Besoin                                                 | Solution                                                                                                                                                             |
| ------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Données locales par utilisateur (scores, préférences)  | Datastore seul                                                                                                                                                       |
| Partager ou centraliser des données entre utilisateurs | Datastore + [Firebase](https://docs.pandasuite.com/fr/essentials/components/firebase-session/) ou [HTTP](https://docs.pandasuite.com/fr/essentials/components/http/) |
| Sauvegarde cloud de la progression                     | Export JSON → service cloud                                                                                                                                          |
| Requêtes ou filtres avancés sur de grands volumes      | API externe                                                                                                                                                          |

## Pour aller plus loin

- [Variables](https://docs.pandasuite.com/fr/essentials/data/variables/)
- [Collection / Liste](https://docs.pandasuite.com/fr/essentials/data/collection/)
- [Data binding](https://docs.pandasuite.com/fr/essentials/data/data-binding/)
- [Mettre en favoris](https://docs.pandasuite.com/fr/essentials/data/bookmark-favorite/)
- [API & Données hors ligne](https://docs.pandasuite.com/fr/essentials/data/api-offline-data/)
