Skip to content

Checar Metadados em modal e botão Sincronizar Update.latest #1069

Description

@Winzen

Contexto

Table.Update.latest às vezes fica desatualizado, e corrigir isso exigia acesso direto ao banco de produção (psql via kubectl exec). Foi adicionado no admin de uma Table um botão "Sincronizar com o BigQuery": lê o last_modified real da tabela no BigQuery e grava em Update.latest — qualquer admin roda direto da UI, sem precisar de acesso ao banco.

De carona nessa mesma branch, o botão "Checar Metadados" (já existente, PRs #1066/#1067) também foi melhorado: em vez de um alert() com texto solto, o resultado aparece num modal com uma linha por discrepância.

O que tem nos PRs #1066/#1068

  • CheckMetadadosView: passa a devolver discrepâncias estruturadas ({coluna, tipo, bigquery?, api?}) em vez de uma string já formatada; corrige também um falso-positivo de tipo (INTEGER do BigQuery vs INT64 da API — nomes legacy vs standard SQL).
  • SyncUpdateLatestView (nova): resolve o único Update vinculado à Table (recusa se houver 0 ou mais de 1, pra não gravar no lugar errado), consulta get_gbq_client().get_table(gbq_slug).modified e grava em Update.latest.
  • _gbq_slug_for_table(): helper compartilhado entre as duas views pra escolher o projeto do BigQuery certo por ambiente (basedosdados-dev fora de prod, basedosdados em prod), via is_prd().
  • ferramentas.js/change_form.html/main.css: modais novos com spinner pros dois fluxos, evitando clique duplicado enquanto a requisição está em andamento.

Test plan

  • ruff check/ruff format limpos
  • manage.py check sem issues
  • Testado localmente via docker compose up (com credencial real do BigQuery pra basedosdados-dev): Checar Metadados mostra discrepâncias reais no modal; Sincronizar grava o last_modified de verdade em Update.latest
  • Testar em staging: os dois botões na página de uma Table
  • Confirmar que o botão de Sincronizar não aparece quando a Table tem 0 ou mais de 1 Update vinculado

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions