— Referência técnica

Documentação

Como o SupaMerge move schema, dados, usuários e edge functions de um projeto Lovable Cloud para um Supabase próprio — e o que esperar em cada etapa.

01

Visão geral

O SupaMerge copia um projeto hospedado no Lovable Cloud para um projeto Supabase que é seu — onde você tem a connection string, o painel e o controle total do banco. A migração acontece em um wizard de sete etapas e usa apenas APIs oficiais do Supabase: nenhuma connection string do banco de origem é necessária.

O fluxo é resumido assim: você cadastra o projeto (origem e destino), envia as migrations consolidadas, envia as edge functions, informa os secrets, o motor analisa o que será criado, executa e devolve um relatório com checksums por tabela.

02

O que é migrado

  • Extensions, schemas, enums e domains declarados nas migrations.
  • Tabelas, colunas, defaults, constraints, índices e views.
  • Funções, triggers e event triggers compatíveis.
  • Políticas de RLS e o estado de RLS de cada tabela.
  • Dados das tabelas do schema public, com checksum de conferência.
  • Usuários de auth.users, preservando o id para não quebrar chaves estrangeiras.
  • Edge functions (com a pasta _shared) e seus secrets.

Não são migrados: buckets e arquivos de Storage, jobs de cron que apontem para recursos inexistentes no destino, réplicas de Realtime configuradas fora das migrations e logs históricos.

03

Requisitos

  • Um projeto Lovable com Lovable Cloud ativo (origem).
  • Um projeto Supabase vazio ou novo (destino).
  • Saldo de projeto e de migração na sua conta SupaMerge.
  • A rota administrativa gerada pelo prompt da página Como usar, que expõe a função exec_sql na origem.
04

Credenciais

Cada projeto cadastrado guarda a rota da migração. Na execução são usadas:

  • Origem — Project URL e service_role key, usadas para ler schema e dados via exec_sql.
  • Destino — Project URL, service_role key e um access token da Management API, usado para aplicar migrations e publicar edge functions.

As chaves trafegam apenas entre o seu navegador e as funções do SupaMerge durante a execução. Gere um access token temporário e revogue-o depois da migração.

05

Migrations

O SupaMerge espera um único arquivo .sql com todas as migrations concatenadas na ordem cronológica. O prompt da página Como usar faz o Lovable gerar esse arquivo por você.

A aplicação é feita em lotes retomáveis, com estas proteções:

  • Instruções com dependências ainda inexistentes são adiadas e repetidas em novas passadas.
  • Valores de enum ausentes no destino são reconciliados automaticamente.
  • Erros conhecidos e inofensivos (cron ausente, schema de sistema) são registrados como aviso.
  • Falhas isoladas não abortam a migração: elas aparecem no relatório final.

Se você fechar a aba no meio do processo, o progresso fica salvo e a migração é retomada exatamente de onde parou.

06

Dados e usuários

Os usuários são copiados antes dos dados públicos, para que chaves estrangeiras apontando para auth.users sejam satisfeitas. A cópia de dados usa ON CONFLICT DO NOTHING, então repetir uma migração não duplica linhas.

Cada tabela recebe uma contagem e um checksum comparando origem e destino. Divergências causadas por triggers do próprio destino (por exemplo, uma trigger que insere um papel padrão) são reportadas como aviso, não como falha.

07

Edge functions

Envie um arquivo .zip com a pasta supabase/functions preservando a estrutura, incluindo _shared. Também são aceitos arquivos .ts soltos ou um único arquivo consolidado com banners // Edge Function: nome.

Antes do deploy, o SupaMerge resolve os imports relativos de cada função e avisa se algum arquivo compartilhado estiver faltando. A publicação é feita em lotes para não estourar os limites da API.

08

Erros comuns

  • function public.exec_sql does not exist — a rota administrativa não foi criada na origem. Rode o prompt da etapa 1.
  • Module not found file:///_shared/... — o zip das edge functions não incluiu a pasta _shared.
  • Too Many Requests — limite da Management API. O motor faz backoff e continua sozinho.
  • SEM_CREDITO_PROJETO ou SEM_CREDITO_MIGRACAO — sem saldo. Compre um pacote na página de assinaturas.
09

Créditos e limites

A cobrança é por projeto e por migração, em pacotes (Lite, Pro e Business). Cada projeto cadastrado consome um crédito de projeto e cada execução consome um crédito de migração. Retomar uma migração interrompida não consome crédito novo.

A direção suportada é Lovable Cloud → Supabase. Não fazemos o caminho inverso.