Local First avec React Native et Expo - Introduction au schéma

Mise en ligne : lundi 7 octobre 2024

image de Local First avec React Native et Expo - Introduction au schéma}

Introduction au fichier schema.js

1. Structure du fichier schema.js.

Le fichier schema.js est composé de 3 éléments, deux obligatoires et un optionnel :

  • la version du schema, qui restera à 1 si nous n'utilisons pas de migrations, et qui sera incrémenté de 1, à chaque migration, si nous utilisons les migrations (fortement recommandé en production).
  • les tables de la db sous forme d'une ou plusieurs tableSchema.
  • du code sql (optionnel), via le unsafeSql.

2. Convention de nomage des bases de données.

  • Pour le nom des tables, nous utiliserons le snake_case et le pluriel.
  • Pour les colonnes, nous utiliserons le snake_case et le singulier.

Par exemple :

tableSchema({ name: 'tasks', columns: [ { name: 'name', type: 'string' }, { name: 'is_checked', type: 'boolean'}, ] }),

3. Types des colonnes.

Il y a trois types de colonnes :

  • string : "dfsf", "", "0"
  • number: 12, 0, -23, -24.23, 14.12
  • boolean: true ou false

4. Tips nomage colonnes.

  • Les dates finissent par _at
  • Les booleans commencent par is_

5. Champs optionnels pour les colonnes

  • isOptionnal: true, signifie que la valeur de la colonne est optionnel.
  • isIndexed: true, pour indexer une colonne.

isIndexed et isOprionnal sont à false, si pas défini.

Si isOptionnal est à true, si vous ne définissez pas de valeurs, la colonne sera égale à null. Par contre, si vous définissez isOptionnal à false ou que vous ne le définissiez pas (par défaut, isOptionnal et à false), les valeurs par défauts seront :

  • 0 pour un number.
  • false pour un boolean.
  • "" pour une string.

6. Create / update tracking.

Si vous définissez des champs created_atet/ou updated_at, ils seront automatiquement mis à jour par watermelonDB.

7. L'id.

L'id est généré automatiquement pour chaque table et est de type string. Nous n'avons donc pas besoin et ne devons pas définir nous même d'id pour une table.