Aplicar e verificar alterações de esquema no Fabric Apps

Aplique as alterações da entidade Rayfin à base de dados usando rayfin up ou rayfin up db apply, e verifique se o esquema chegou ao servidor.

Editar uma classe em rayfin/data/ não altera, por si só, a base de dados implementada. O Rayfin lê as suas entidades e gera a configuração do Data API Builder (DAB) apenas quando aplica explicitamente as alterações.

Utilização rayfin up para atualizações de aplicações

Execute npx rayfin up sempre que quiser implementar as suas últimas alterações de entidade para uma aplicação Fabric:

npx rayfin up

Este comando:

  • Sincroniza as definições de execução.
  • Aplica o esquema da base de dados gerado a partir dos decoradores na rayfin/data/.
  • Constrói e implementa conteúdo estático quando staticHosting está ativado.

Execute o comando após cada alteração num ficheiro em rayfin/data/. Após a primeira implementação, as execuções subsequentes atualizam a mesma implementação em vez de criar uma nova.

Aplicar apenas alterações no esquema da base de dados

Use npx rayfin up db apply quando quiser aplicar o esquema da base de dados sem sincronizar definições de tempo de execução ou implementar conteúdo estático:

npx rayfin up db apply

Este subcomando avançado é útil quando executas o frontend com npm run dev, o backend já está implementado, e queres iterar no esquema de forma independente.

Se uma alteração puder causar perda de dados, como eliminar uma coluna ou renomear uma tabela, a CLI bloqueia a operação e descreve o impacto potencial. Depois de rever as operações e aceitar a perda de dados, aplique a alteração com --force:

npx rayfin up db apply --force

Caution

A --force opção pode causar perda permanente de dados. Use-o apenas depois de rever todas as operações reportadas pela CLI.

Verifique o esquema implementado

Warning

Um comando bem-sucedido rayfin up ou rayfin up db apply não garante que a sua interface possa consultar imediatamente uma entidade nova ou alterada. Verifique se a implementação está saudável antes de testar a entidade.

Após qualquer alteração em rayfin/data/, verifique a implementação:

npx rayfin up status

Se uma entidade nova ou alterada ainda devolver erros GraphQL depois de a implementação ficar saudável, aplique o esquema explicitamente e teste novamente a entidade:

npx rayfin up db apply

Adicione --force apenas se o CLI reportar uma alteração potencialmente destrutiva e aceitar a perda de dados.

Para obter o estado da implementação num formato legível por máquina, utilize a saída JSON:

npx rayfin up status --json

Pode usar a resposta JSON num script que espera por uma implementação saudável antes de executar verificações adicionais.

Siga um fluxo de trabalho típico de esquemas

# 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

Se o passo 4 reportar uma operação potencialmente destrutiva, reveja-a antes de voltar a executar o comando com --force.

Resolver problemas de alterações ao esquema

O GraphQL devolve um erro interno do servidor

Verifique todos os campos @text() da entidade afetada para verificar se falta algum valor max. Com o Microsoft SQL Server, @text() sem max gera uma coluna NVARCHAR(MAX), o que pode impedir a geração do esquema GraphQL.

Adicione comprimentos máximos explícitos e depois aplique o esquema:

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

Revise as operações reportadas antes de usar --force.

O CLI reporta uma alteração potencialmente destrutiva

Revise as operações listadas, incluindo colunas eliminadas, tipos restringidos e tabelas renomeadas. Reexecute o comando --force apenas depois de confirmar que a perda de dados é aceitável.

A aplicação do esquema falha

Execute npx rayfin up statuse espere que os serviços fiquem saudáveis antes de tentar novamente aplicar o esquema.

O serviço de dados não tem dialeto

Quando services.data.enabled é true, configure dialect: mssql em rayfin/rayfin.yml.

services:
  data:
    enabled: true
    dialect: mssql

Usa um prompt de IA

Copie o seguinte prompt para o GitHub Copilot ou outro agente de programação que tenha acesso ao seu projeto e 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`.