2
respostas

[Dúvida] como deletar uma entidade sem deletar pra sempre, pra restaurar ou recuperar depois?

bom, eu quero deletar uma entidade filha, porem nao quero dar um delete para sempre, quero que somente remova, pra que quando eu usar o metodo restore ou recover, eu recuperar essa entidade removida e jogar de volta ao array pai, porem algo nao funciona e esta sendo deletada para sempre, sem conseguir recuperar essa entidade. meus codigos:

meu recuperarMetodo: Insira aqui a descrição dessa imagem para ajudar na acessibilidademinha opniao(filha) entidade: Insira aqui a descrição dessa imagem para ajudar na acessibilidade meu delete: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

alguem?

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í!