Skip to content

Base de données ​

Luna Park intègre une base de données SQL dans l'éditeur. Pas de serveur, pas de configuration : vous créez des tables, vous y stockez des lignes, vous les interrogez depuis le graphe.

PostgreSQL partout

Dans l'éditeur, la base est une instance PGlite (PostgreSQL compilé en WebAssembly) qui tourne dans votre navigateur. Dans l'application exportée, les mêmes tables tournent sur un vrai serveur PostgreSQL, défini par la variable DATABASE_URL (voir Auto-hébergement). Les lignes créées dans l'éditeur sont insérées comme données initiales au premier lancement.

Tables ​

Chaque fichier Database est une table. Créez-en une dans l'Explorer avec New > Database, puis ouvrez-la pour :

  • définir ses colonnes (nom et type) dans la section Columns de l'Inspector ;
  • ajouter, modifier, supprimer et rechercher des lignes ;
  • inspecter le contenu en temps réel.

Les colonnes id, created_at et updated_at sont ajoutées automatiquement à chaque table. id est un UUID.

Éditeur de base de données avec une table et ses colonnes

Types de colonnes ​

TypeStocké en
Textetext
Nombrenumeric
Booléenbool
Datetimestamptz
Objetjsonb
Tableauun tableau PostgreSQL
Référence à une autre tableuuid (clé étrangère)

Contraintes ​

La section Constraints de l'Inspector définit, pour chaque colonne :

ContrainteEffet
RequiredLa colonne ne peut pas être vide.
UniqueDeux lignes ne peuvent pas avoir la même valeur.
IndexAccélère les recherches et les tris sur cette colonne.

Une colonne qui référence une autre table définit aussi ce qui se passe quand la ligne référencée est supprimée : Block (par défaut), Restrict, Delete rows too ou Set to empty.

Interroger la base ​

Les nodes de base de données s'utilisent dans la logique backend : routes, crons et scripts backend. L'interface appelle une route, qui exécute la requête et renvoie le résultat.

Nodes spécialisés ​

Luna Park fournit un node par opération courante. La configuration est visuelle (table, paramètres, filtres), le SQL est généré derrière.

CatégorieNodes
LectureDB Find, DB Find By Id
ÉcritureDB Insert, DB Update, DB Update By Id
SuppressionDB Delete, DB Delete By Id
TransactionDB Transaction

Les paramètres se branchent sur les ancrages d'entrée : un id venant d'une variable, une valeur de filtre venant d'un input, etc.

Node DB Find configuré sur une table, avec ses paramètres et son ancrage de sortie

DB Transaction exécute d'un coup les opérations branchées sur sa sortie Run : si l'une échoue, aucune n'est enregistrée. Then s'exécute une fois les modifications enregistrées.

Composer une requête ​

Pour construire des requêtes plus précises, Luna Park fournit des nodes qui s'assemblent entre eux : chaque node ajoute une clause SQL et expose une sortie Query que le suivant consomme.

Le point de départ est toujours DB From, qui sélectionne la table. On branche ensuite les nodes voulus, puis un node d'exécution.

NodeRôle
DB FromSélectionne la table source.
DB SelectChoisit les colonnes renvoyées (toutes par défaut).
DB WhereFiltre les lignes selon une ou plusieurs conditions.
DB Where ConditionCompare une colonne à une valeur ou à une autre colonne.
DB Where ConditionsCombine des conditions avec AND ou OR.
DB Join / DB Join ConditionJoint une autre table (inner, left, right, full).
DB Order / DB Order DirectionTrie les résultats.
DB Group ByRegroupe les lignes par valeur.
DB AggregateCalcule count, sum, avg, min ou max, éventuellement sur des valeurs distinctes.

Nodes d'exécution :

NodeRôle
DB Query SelectExécute la requête et renvoie les lignes.
DB Query UpdateMet à jour les lignes correspondantes.
DB Query DeleteSupprime les lignes correspondantes.
DB Query ExplainMontre comment PostgreSQL prévoit d'exécuter la requête.

Comparaisons disponibles : égal, différent, supérieur/inférieur (ou égal), in, is null, like, ilike, contains.

Par exemple, pour récupérer les utilisateurs de moins de 30 ans : un DB From pointe sur la table, un DB Where Condition définit age < 30, un DB Where reçoit la query et la condition, et un DB Query Select exécute l'ensemble.

Graphe avec DB From, DB Where Condition, DB Where et DB Query Select chainés

Aperçu de la requête

Pour voir le SQL réellement exécuté, sélectionnez le node DB Query Select et cliquez sur Preview dans sa config.

Préparer la table articles ​

Pour suivre l'exemple guidé de la page Routes, créez une table articles :

  1. Créez un fichier Database nommé articles.
  2. Ajoutez une colonne title (texte).
  3. Insérez quelques lignes de test.
Table articles avec ses colonnes et quelques lignes d'exemple

La suite (exposer ces articles via une route et les afficher dans l'interface) est détaillée sur la page Routes.