Exportação para Postgres

Um comando grava um projeto como um bundle que você restaura no seu próprio Postgres: tabelas tipadas geradas a partir dos seus modelos, seu conteúdo publicado e links para baixar seus arquivos.

Um comando

foir export postgres grava um arquivo compactado no diretório atual. Informe uma string de conexão como destino e a CLI aplica o bundle a partir da sua própria máquina com psql, sem enviar a string ao Fóir. O bundle é transmitido por streaming para você e não é armazenado do nosso lado. A restauração exige Postgres 15 ou mais recente.

Tabelas tipadas e chaves estrangeiras

Cada modelo que guarda registros vira uma tabela tipada, gerada a partir do schema publicado, com as chaves dos seus campos como colunas em snake_case. Ao lado delas ficam tabelas para arquivos, traduções por locale, referências com vários valores e concessões de acesso. Uma referência que aponta para um modelo vira uma chave estrangeira, aplicada depois que os dados são carregados. Uma que pode apontar para vários modelos não recebe nenhuma, porque uma única restrição não consegue nomear várias tabelas.

Conteúdo publicado, a menos que você peça mais

As tabelas tipadas guardam a versão publicada de cada registro. Rascunhos, versões antigas e variantes não publicadas ficam de fora, assim como um registro que nunca foi publicado. Um modelo sem versionamento ou publicação exporta seus registros como estão armazenados. Adicione --include-raw e o bundle ganha uma tabela com todos os registros como armazenados, em JSON.

Arquivos como links de download

O bundle não contém os arquivos em si. Ele lista um link de download com prazo de validade para cada arquivo que o conteúdo exportado referencia, com um script que baixa cada um para o caminho para o qual o conteúdo aponta. Você recebe os originais, e arquivos que nada referencia não são listados. Qualquer pessoa com a lista pode baixar até os links expirarem, então trate-a como um segredo.

O arquivo de verificação

A exportação imprime o que não conseguiu levar: referências pendentes e valores que não caberiam na coluna, ambos gravados como NULL. Ela se recusa a produzir um bundle quando as linhas que extraiu divergem de uma contagem independente de registros publicados. No seu banco restaurado, validate.sql reverifica as contagens de linhas e os checksums por coluna. Ele não verifica as regras de acesso.

Leia os detalhes

O guia de exportação mostra como executar o comando, o que há no bundle, como restaurá-lo você mesmo e como verificar o resultado.