Repository navigation
feat(sync): a lista de permissões das fontes das cópias (data D11) - #977
Merged
Merged
Conversation
…das propostas, com a lista de permissões (data D11, pull request próprio) O Sync de qualquer conector, a ordem do cartão: copies.copy_source (cada conexão de uma cópia com a sua conta, a sua passada, a sua posição, a sua marca e a sua espera), copies.copy_table_left (a tabela de uma cópia que acabou com o banco da empresa calado), copies.copy_proposal_source (as conexões de uma proposta) e copy_proposal.proved_calls. O login do Hub lê e insere as três; muda de uma fonte só a passada, a posição, a marca e a espera; apaga só a linha de copy_table_left depois do DROP; e passa a apagar copies.copy, para que o Desligar encerre na mesma transação a cópia que ficou sem fonte (a decisão C). Uma fonte sai só pela cascata.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A lista de permissões do banco do Hub para "O Sync de qualquer conector", num pull request só dela, como manda data D11 e a ordem do cartão (
docs/steps/o-sync-de-qualquer-conector.md, "A ordem"). Precisa da palavra do fundador para entrar.O que muda no banco do Hub
Três tabelas novas no esquema
copies, cada uma com a coluna da empresa e a política por linha (decisão 0039), e uma coluna:hub_company) podecopies.copy_sourcepass,pass_started_at,position,watermark,wait_until; nunca apagar (sai pela cascata da conexão ou da cópia)copies.copy_table_leftDROP TABLE)copies.copy_proposal_sourcecopies.copy_proposal.proved_callsINSERTque já existecopies.copyO último item vai além das tabelas novas e precisa ser dito: pela decisão C da página ("Não, beleza, eu concordo"), a cópia acaba no mesmo instante em que sai a sua última conta. O construtor da U3 escolheu fazer isso em TypeScript, na mesma transação que apaga a conexão (
DELETE … RETURNINGdas cópias sem fonte, sob a trava delas), e não com um gatilho escondido no banco (data D16). Para isso o login do Hub precisa deDELETEemcopies.copy. A cascata de hoje já levava as rodadas e as liberações da cópia; continua igual.copy_table_lefté drenada comDELETE … RETURNINGna transação do Hub que segura a linha até oDROPterminar, e não comSELECT … FOR UPDATE SKIP LOCKED:FOR UPDATEexigeUPDATEem alguma coluna, que a tabela não precisa (medido no PostgreSQL 18:permission deniedcom sóSELECT, INSERT, DELETE). O efeito pedido pela tabela de falhas fica: dois drenos nunca apagam a mesma tabela duas vezes, e um Ligar que acha a linha travada espera.Arquivos
apps/server/src/hub/copies/tables.ts: as três tabelas e a coluna.apps/server/migrations/20261111234347_sync_copy_sources/: a migração gerada pelodrizzle-kit.apps/server/migrations/20261111234429_sync_copy_sources_grants/: as permissões, SQL escrito à mão (data D5).apps/server/database-grants.sql: o instantâneo aprovado.Nada lê nem escreve as tabelas novas ainda: a U3 (o motor) e a U4 (o Builder) chegam no pull request de construção seguinte. A migração que dá a cada cópia de hoje a sua fonte e a que tira
copy_connection_fkeysão da U3.O que rodou
catalog.test.tsemigrate.test.tsnum PostgreSQL 18 local, no formato do CI: 35 passaram, 0 falharam.npm run migrations -- --base origin/main: ok.tscdeapps/server: ok.npm run docs: ok.