feat(historico): coluna de empresa nas últimas execuções - #36
Merged
Merged
Conversation
O histórico intercala empresas, e a tela mostrava data, duração, resultado e mensagem sem dizer a qual cadastro cada linha pertencia. Duas execuções do mesmo minuto, uma concluída e outra bloqueada por consumo indevido, eram indistinguíveis. A leitura sai do repositório e passa para o lado de consultas, junto às demais projeções: o nome exige uma junção com `empresas`, e o repositório entrega entidades de sincronização, que não conhecem o cadastro. `ObterUltimasAsync` some do repositório porque era o único uso, e `ExecucaoSincronizacao` ganha um `DbSet` como as demais entidades consultadas por nome. A junção ignora os filtros globais. A execução de uma empresa inativada continua no histórico e é justamente a que explica por que a captura dela parou; sem isso a linha viria sem nome. `DuracaoSegundos` deixa de ser campo e vira propriedade derivada dos dois instantes. A subtração de dois `timestamptz` devolve um intervalo que o provedor não converte para segundos na projeção, e o valor já estava determinado pelos campos que o DTO carrega. O contrato HTTP não muda: o serializador continua emitindo o campo. Correção na fixture de teste O `TRUNCATE` do `PostgresFixture` não incluía `execucoes_sincronizacao`, e o `CASCADE` não a alcança: a tabela não tem chave estrangeira para `empresas`, de propósito, para que o histórico sobreviva à exclusão do cadastro. As execuções de um teste vazavam para o próximo como linhas órfãs, e a junção as devolvia sem nome — o que fez dois destes testes falharem por resíduo, não por defeito no código sob teste.
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.
O histórico intercala empresas, e a tela mostrava data, duração, resultado e mensagem sem dizer a qual cadastro cada linha pertencia. Duas execuções do mesmo minuto, uma concluída e outra bloqueada por consumo indevido, eram indistinguíveis.
A leitura sai do repositório e passa para o lado de consultas, junto às demais projeções: o nome exige uma junção com
empresas, e o repositório entrega entidades de sincronização, que não conhecem o cadastro.ObterUltimasAsyncsome do repositório porque era o único uso, eExecucaoSincronizacaoganha umDbSetcomo as demais entidades consultadas por nome.A junção ignora os filtros globais. A execução de uma empresa inativada continua no histórico e é justamente a que explica por que a captura dela parou; sem isso a linha viria sem nome.
DuracaoSegundosdeixa de ser campo e vira propriedade derivada dos dois instantes. A subtração de doistimestamptzdevolve um intervalo que o provedor não converte para segundos na projeção, e o valor já estava determinado pelos campos que o DTO carrega. O contrato HTTP não muda: o serializador continua emitindo o campo.Correção na fixture de teste
O
TRUNCATEdoPostgresFixturenão incluíaexecucoes_sincronizacao, e oCASCADEnão a alcança: a tabela não tem chave estrangeira paraempresas, de propósito, para que o histórico sobreviva à exclusão do cadastro. As execuções de um teste vazavam para o próximo como linhas órfãs, e a junção as devolvia sem nome — o que fez dois destes testes falharem por resíduo, não por defeito no código sob teste.