Executando verificação de segurança...
1

vc usa qual banco de dados?
Posso dar um exemplo com algum banco relacional!

Cria uma tabela chamada: Alterações
Campos:

id(primary key),
data,
id_carro(foreign key da tabela carro)
id_pessoa(foreign key da tabela de pessoas cadastradas),
descrição(da alteração),
ip

Este é um exemplo simples que da pra fazer facilmente!
O banco pode ser PostgreSQL, MariaDB ou outro relacional!

Com o banco mongoDB da pra fazer isso tbm!
Embora ele não seja um banco relacional da pra fazr relações com ele.
Desde que não sejam muito complexas!

Ou usar o documento carro e dentro dele colocar as alterações.
Lembrando um documento cabe 16 mega(o que é bastante)

Carregando publicação patrocinada...
1

Grato pela resposta, contudo, como tratar essas alterações para mostrar nos detalhes e comparar, por exemplo, se o usuário além de editar a placa, editar a filial do carro?

Ex: toda vez que eu usar esta função de update do Nest com Prisma

  update(id: number, data: UpdateCarDto) {
    return this.prisma.cars.update({
      where: { id },
      data,
      include: this._include(),
    });
  }

no corpo da requição eu receberia o id do usuário, id do carro além das alterações feitas, como seria essa comparação das alterações?

"ALTEROU A PLACA DE XYZET5 PARA ZBR3DA E FILIAL DE SÃO PAULO PARA RIO DE JANEIRO".

1
1
1

me intrometendo na conversa rs, mas assim
acho que fazer algo genérico vai acabar dando mais trabalho

é melhor vc criar um relacionamento direto e fazer

return this.prisma.cars.update({
    where: { id },
    data: {
        ...data,
        historico: {
            push: { acao: 'ALTEROU A PLACA DE XYZET5 PARA ZBR3DA E FILIAL DE SÃO PAULO PARA RIO DE JANEIRO', usuario: usuario.id, ... },
        }
    },
    include: this._include(),
});
1

Não seria seguro mandar esse id no corpo da requisição, o usuário poderia bater na rota ou coisa do tipo e inserir o id de outro usuário :/

1

só usei assim como exemplo msm, o correto seria vc pegar qual o id do usuário logado e tal...

uma coisa que não comentei tbm, como esse update está bem genérico você teria que fazer alguma lógica manual mesmo, pra poder ver quais são as alterações.
E acredito que não precisa registrar tudo que for alterado, mas apenas o que for de fato importante para você

1

Muito obrigado amigo 🫂, voce também me ajudou bastante. O Paulo propôs uma solução, vou colcoar em prática e trazer as resoluções aqui, e quem sabe, um repository para ajudar outras pessoas