Skip to main content
View as Markdown

Aperçu des tables

Les tables définissent vos modèles de données. Chaque table est une entité distincte (utilisateurs, produits, commandes) dont les fields déclarent les colonnes que les enregistrements peuvent stocker. Les tables sont le fondement d'une application Sovrium : les pages affichent leurs enregistrements, les formulaires y écrivent, les automatisations réagissent à leurs changements et les API REST/MCP les exposent.

Une table comporte au minimum un id, un name et un tableau fields. Tout le reste — clés primaires, index, contraintes, vues, permissions, webhooks et exposition à l'IA — est optionnel et vient s'ajouter par-dessus.

tables:
  - id: 1
    name: Contacts
    fields:
      - { id: 1, name: email, type: email, required: true, unique: true }
      - { id: 2, name: full_name, type: single-line-text, required: true }
      - { id: 3, name: created_at, type: created-at, indexed: true }

Propriétés de la table

Chaque entrée du tableau tables accepte les propriétés suivantes.

Propriété Description
id Identifiant entier unique de la table. Généré automatiquement lorsqu'il est omis.
name Nom convivial de la table. Peut contenir des espaces et une casse mixte ; assaini pour l'usage en base de données (minuscules avec underscores). Maximum 63 caractères.
fields Tableau de définitions de champs. Au moins un champ est requis. Les noms et identifiants de champs doivent être uniques au sein de la table.
primaryKey Configuration de la clé primaire. Par défaut, une colonne id générée automatiquement. Voir Index et contraintes.
unique Tableau de déclarations de contraintes d'unicité de premier niveau. Chaque entrée couvre un ou plusieurs champs (par ex. [{ fields: [slug] }]).
indexes Tableau de définitions d'index pour les performances des requêtes et l'application de l'unicité.
uniqueConstraints (via unique) Unicité multi-champs. Les entrées mono-champ se replient dans field.unique ; les entrées composites deviennent des index btree uniques.
foreignKeys Définitions de clés étrangères composites (multi-colonnes). Les clés étrangères mono-colonne sont créées automatiquement à partir des champs relationship.
constraints Tableau de contraintes CHECK avec des expressions SQL pour la validation de données inter-champs.
views Vues enregistrées avec filtres, tri, regroupement et champs visibles préconfigurés. Voir Vues.
permissions Permissions RBAC contrôlant la création, la lecture, la mise à jour, la suppression, la restauration, les commentaires et l'accès par champ. Voir Permissions.
rowLevelPermissions Prédicats when côté serveur par opération CRUD pour un cloisonnement des lignes en défense en profondeur.
webhooks Webhooks sortants déclenchés lors des événements de création/mise à jour/suppression d'enregistrements. Voir Webhooks.
comments Configuration du système de commentaires (commentaires invités, modération, fils de discussion).
aiAccess Déclare la table éligible à l'exposition via le serveur MCP de Sovrium afin que les assistants IA puissent lister/lire/écrire des enregistrements (sous réserve du RBAC).
allowDestructive Booléen. Lorsqu'il vaut true, autorise les migrations de schéma destructrices (suppression de colonnes, changements de type). Par défaut false.
allowForceDelete Booléen. Activation par table autorisant la suppression définitive via le tableau de bord d'administration (effacement RGPD). Par défaut false. Voir la note ci-dessous.

Propriétés de base des champs

Chaque champ — quel que soit son type — étend une base commune. Ces propriétés sont disponibles sur les 49 types de champs.

Propriété Description
id Identifiant entier unique du champ au sein de la table. Généré automatiquement de manière séquentielle lorsqu'il est omis.
name Identifiant de colonne. Doit commencer par une lettre et ne contenir que des lettres minuscules, des chiffres et des underscores (^[a-z][a-z0-9_]*). Maximum 63 caractères.
type L'un des 49 types de champs disponibles (par ex. single-line-text, integer, relationship). Voir Types de champs.
required Booléen. Lorsqu'il vaut true, le champ doit avoir une valeur pour chaque enregistrement.
unique Booléen. Lorsqu'il vaut true, deux enregistrements ne peuvent pas partager la même valeur.
indexed Booléen. Lorsqu'il vaut true, crée un index de base de données sur ce champ pour accélérer les requêtes.
searchWeight Poids de pertinence pour la recherche plein texte PostgreSQL : A (le plus élevé) à D (le plus bas). Effectif uniquement lorsque indexed: true et que la source de données utilise la FTS.
storage Objet de configuration du stockage. storage.compression (booléen) active la compression pour les grandes valeurs de texte ou de pièce jointe.

Exemple : une table plus riche

tables:
  - id: 2
    name: Products
    fields:
      - { id: 1, name: sku, type: single-line-text, required: true, unique: true }
      - {
          id: 2,
          name: title,
          type: single-line-text,
          required: true,
          searchWeight: A,
          indexed: true,
        }
      - { id: 3, name: description, type: long-text, searchWeight: B }
      - { id: 4, name: price, type: currency, required: true, currency: USD }
      - { id: 5, name: in_stock, type: checkbox, default: true }
    primaryKey: { type: auto-increment, field: id }
    indexes:
      - { name: idx_products_sku, fields: [sku], unique: true }
    permissions:
      read: all
      create: [admin, editor]
      update: [admin, editor]
      delete: [admin]

Pages connexes