Faz com que o log de mudanças passe a armazenar um snapshot do dado modificado imediatamente após a realização da mudança. O dado que será feito o snapshot varia de acordo com o tipo de entidade:
Document: será armazenado o mesmo que é retornado pelo endpoint /documents/:id (XML codificado em UTF-8 com as URLs dos ativos interpoladas);
Bundle: será armazenado o mesmo que é retornado pelo endpoint /bundles/:id (JSON)
Journal: será armazenado o mesmo que é retornado pelo endpoint /journals/:id (JSON)
O conteúdo será compactado antes de ser armazenado no MongoDB, utilizando a função gzip.compress.
Cada mudança retornada pelo endpoint /changes passa a ter o campo change_id que pode ser utilizada para obter o registro detalhado da mudança no endpoint /changes/:change_id. Neste registro detalhado é possível recuperar o snapshot do dado modificado. Exemplo:
Além disso, também foi incluído um utilitário de linha de comando para auxiliar em tarefas administrativas de manutenção da instância. A motivação para a criação do utilitário foi de operar a criação de índices no banco de dados, e este é o único comando implementado até o momento.
Onde a revisão poderia começar?
Sugiro seguir os commits na ordem em que foram criados. Eu me esforcei para fazer de forma a ser fácil de seguir.
Foi mal gente, este PR acabou ficando maior do que o esperado.
Como este poderia ser testado manualmente?
Suba uma instância da aplicação com o banco de dados em branco
Crie os índices: kernelctl create-indexes mongodb://localhost:27017
Copie o identificador de uma mudança e veja seus detalhes: /changes/:id
Algum cenário de contexto que queira dar?
Esta mudança torna mais poderoso o controle de versão e possibilita funcionalidades de auditoria para todos os tipos de entidade mantidos pela aplicação.
O que esse PR faz?
Faz com que o log de mudanças passe a armazenar um snapshot do dado modificado imediatamente após a realização da mudança. O dado que será feito o snapshot varia de acordo com o tipo de entidade:
/documents/:id
(XML codificado em UTF-8 com as URLs dos ativos interpoladas);/bundles/:id
(JSON)/journals/:id
(JSON)O conteúdo será compactado antes de ser armazenado no MongoDB, utilizando a função
gzip.compress
.Cada mudança retornada pelo endpoint
/changes
passa a ter o campochange_id
que pode ser utilizada para obter o registro detalhado da mudança no endpoint/changes/:change_id
. Neste registro detalhado é possível recuperar o snapshot do dado modificado. Exemplo:Além disso, também foi incluído um utilitário de linha de comando para auxiliar em tarefas administrativas de manutenção da instância. A motivação para a criação do utilitário foi de operar a criação de índices no banco de dados, e este é o único comando implementado até o momento.
Onde a revisão poderia começar?
Sugiro seguir os commits na ordem em que foram criados. Eu me esforcei para fazer de forma a ser fácil de seguir.
Foi mal gente, este PR acabou ficando maior do que o esperado.
Como este poderia ser testado manualmente?
kernelctl create-indexes mongodb://localhost:27017
/changes
/changes/:id
Algum cenário de contexto que queira dar?
Esta mudança torna mais poderoso o controle de versão e possibilita funcionalidades de auditoria para todos os tipos de entidade mantidos pela aplicação.
Screenshots
n/a
Quais são tickets relevantes?
n/a
Referências
n/a