Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvidas

Olá, fiquei com duas dúvidas:

1- Se o nome da coluna não for "deletedAt", como o sequelize vai saber qual coluna é responsável pelo soft delete? Como informar a ele o nome dessa coluna? Também no model?

2 - Se eu quiser implementar no meu projeto desde o início o soft delete, preciso incluir a coluna "deletedAt" no model? Por que na aula não adicionamos essa coluna no model também, não é necessário?

2 respostas
solução!

Olá, Luís.

Tudo bem?

Vamos às suas dúvidas:

  1. Coluna de Soft Delete com Nome Diferente de "deletedAt": Se você quiser usar uma coluna com um nome diferente de "deletedAt" para o soft delete, você pode informar isso no seu model através da opção deletedAt dentro do objeto paranoid. Por exemplo, se a sua coluna se chama removidoEm, você pode configurar o model assim:

    const Pessoa = sequelize.define('Pessoa', {
      // suas colunas aqui
    }, {
      paranoid: true,
      deletedAt: 'removidoEm'
    });
    

    Dessa forma, o Sequelize saberá que a coluna removidoEm é responsável pelo soft delete.

  2. Incluir a Coluna "deletedAt" no Model: Sim, se você quiser implementar o soft delete desde o início do projeto, é necessário incluir a coluna deletedAt no seu model. A razão pela qual a coluna não foi adicionada diretamente no model na aula é que a migração foi usada para adicionar a coluna ao banco de dados. No entanto, é uma boa prática incluir a definição da coluna no model para manter a consistência entre o model e a estrutura do banco de dados.

    Aqui está um exemplo de como você pode definir isso no seu model:

    const Pessoa = sequelize.define('Pessoa', {
      // outras colunas
      deletedAt: {
        type: Sequelize.DATE,
        allowNull: true
      }
    }, {
      paranoid: true
    });
    

    Com isso, você garante que o Sequelize saiba que a coluna deletedAt existe e deve ser usada para o soft delete.

Seria isso? Qualquer dúvida manda aqui de novo.

Espero ter ajudado e bons estudos!

Beleza Renan, obrigado pela resposta!