Ola! Não sou mt experiente com isso, eu diria pra você jogar essa dúvida lá no discord que tem muita gente pra ajudar, mas pesquisando um pouco vi essas ideias:
Pra fazer isso, não é pra tirar a entidade do banco, mas marcar ela como deletada. Aquela ideia do deletedAt
que você já tem é massa. O método remove
tá causando a confusão. Usa algo tipo update
pra botar a data de deleção.
Cria um método que seta a data atual no deletedAt
. Pode ser um método próprio no repositório.
O método de voltar tem que achar as entidades "deletadas", tipo as que têm data no deletedAt
. Vê se o método de voltar tá ligado nisso e limpando o deletedAt
.
Pensei em algo assim
async softDelete(id: string) {
const entity = await this.opiniaoRepository.findOne({ where: { id } });
if (!entity) {
throw new NotFoundException(`Não achei nada com id: ${id}`);
}
entity.deletedAt = new Date().toISOString();
await this.opiniaoRepository.save(entity);
}
async restore(id: string) {
const entity = await this.opiniaoRepository.findOne({
where: { id, deletedAt: Not(IsNull()) },
});
if (!entity) {
throw new NotFoundException(`Deletado com id: ${id} não tá aqui`);
}
entity.deletedAt = null;
await this.opiniaoRepository.save(entity);
}
Boa sorte nos códigos aí!