Appliquer et vérifier les modifications de schéma dans Fabric Apps

Appliquez les modifications d’entités Rayfin à la base de données en utilisant rayfin up ou rayfin up db apply, et vérifiez que le schéma a atteint le serveur.

Modifier une classe dans rayfin/data/ ne modifie pas, à lui seul, la base de données déployée. Rayfin lit vos entités et ne génère la configuration du Data API Builder (DAB) que lorsque vous appliquez explicitement les modifications.

Utilisation rayfin up pour les mises à jour des applications

Exécutez npx rayfin up chaque fois que vous souhaitez déployer vos derniers changements d’entité dans une application Fabric :

npx rayfin up

Cette commande :

  • Synchronise les paramètres d’exécution.
  • Applique le schéma de base de données généré par les décorateurs dans rayfin/data/.
  • Construit et déploie du contenu statique lorsqu’il staticHosting est activé.

Exécutez la commande après chaque modification d’un fichier dans rayfin/data/. Après le premier déploiement, les exécutions suivantes mettent à jour le même déploiement au lieu d’en créer un nouveau.

Appliquer uniquement les modifications du schéma de la base de données

À utiliser npx rayfin up db apply lorsque vous souhaitez appliquer le schéma de la base de données sans synchroniser les paramètres d’exécution ni déployer de contenu statique :

npx rayfin up db apply

Cette sous-commande avancée est utile lorsque vous exécutez le frontend avec npm run dev, le backend est déjà déployé, et que vous souhaitez itérer sur le schéma de manière indépendante.

Si un changement peut entraîner une perte de données, comme supprimer une colonne ou renommer une table, la CLI bloque l’opération et décrit l’impact potentiel. Après avoir examiné les opérations et accepté la perte de données, appliquez le changement avec --force:

npx rayfin up db apply --force

Caution

Cette --force option peut entraîner une perte permanente de données. Utilisez-le seulement après avoir examiné chaque opération signalée par la CLI.

Vérifiez le schéma déployé

Warning

L’exécution réussie d’une commande rayfin up db apply ou rayfin up ne garantit pas que votre interface puisse immédiatement interroger une entité nouvelle ou modifiée. Vérifiez que le déploiement est en bonne santé avant de tester l’entité.

Après tout changement de rayfin/data/, vérifiez le déploiement :

npx rayfin up status

Si une entité nouvelle ou modifiée restitue toujours des erreurs GraphQL une fois le déploiement sain établi, appliquez explicitement le schéma, puis testez à nouveau l’entité :

npx rayfin up db apply

Ajoutez --force seulement si la CLI signale un changement potentiellement destructeur et que vous acceptez la perte de données.

Pour un état de déploiement lisible par machine, utilisez la sortie JSON :

npx rayfin up status --json

Vous pouvez utiliser la réponse JSON dans un script qui attend un déploiement sain avant d’effectuer d’autres vérifications.

Suivez un flux de travail de schéma typique

# 1. Edit an entity, such as rayfin/data/Todo.ts.
# 2. Apply the application changes.
npx rayfin up

# 3. Verify that the deployment is healthy.
npx rayfin up status

# 4. If the changed entity still fails, apply the schema explicitly.
npx rayfin up db apply

Si l’étape 4 signale une opération potentiellement destructrice, révisez-la avant de relancer la commande avec --force.

Résoudre les problèmes liés aux modifications du schéma

GraphQL renvoie une erreur serveur interne

Vérifiez chaque @text() champ de l’entité concernée pour détecter une valeur manquante max . Avec Microsoft SQL Server, @text() sans max génère une colonne NVARCHAR(MAX), ce qui peut empêcher la génération du schéma GraphQL.

Ajoutez des longueurs maximales explicites, puis appliquez le schéma :

@text({ max: 200 })
title!: string;
npx rayfin up db apply --force

Examinez les opérations déclarées avant d’utiliser --force.

Le CLI rapporte un changement potentiellement destructeur

Examinez les opérations listées, y compris les colonnes supprimées, les types rétrécis et les tableaux renommés. Relance la commande --force seulement après avoir confirmé que la perte de données est acceptable.

L’application du schéma échoue

Exécutez npx rayfin up status, et attendez que les services soient en bonne santé avant de réessayer l’application du schéma.

Le service de données n’a pas de dialecte

Lorsque services.data.enabled est true, configurer dialect: mssql dans rayfin/rayfin.yml.

services:
  data:
    enabled: true
    dialect: mssql

Utiliser un prompt IA

Copiez l’invite suivante dans GitHub Copilot ou un autre agent de codage qui a accès à votre projet et à votre terminal :

I just added a new field to an entity in my Rayfin project's rayfin/data/ folder. Run
`npx rayfin up` to apply the change, then run `npx rayfin up status` to confirm the
deployment is healthy. If querying the changed entity still fails after that, run
`npx rayfin up db apply` and check again. Review any potentially destructive operations with me before using `--force`.