Tenho uma dúvida que surgiu de conversar com amigos de estudo, então como posso fazer para mover os usuários que foram desativados para o final da tabela quando for realizar a listagem de pessoas.
Tenho uma dúvida que surgiu de conversar com amigos de estudo, então como posso fazer para mover os usuários que foram desativados para o final da tabela quando for realizar a listagem de pessoas.
Boa noite! Tudo bom?
Só um ponto, nesse caso não seria os desativados e sim deletados, tendo em vista q a matricula ainda está com o ativo 1, porem a PESSOA está "deletada".
Se for via banco pode usar o order by
select * from Pessoas order by deletedAt asc;
Resultado:
Se for via API com o uso do sequelize:
Precisa passar o campo e a ordenação/direção q deseja e desabilitar o paranoid(caso esteja usando) para q traga os que foram "deletados"
//com escopo
await db.Pessoas.scope('todos').findAll({order: [['deletedAt', 'ASC']], paranoid:false});
//sem escopo
await db.Pessoas.findAll({order: [['deletedAt', 'ASC']], paranoid:false});
Retorno da API:
[
{
"id": 2,
"nome": "Marcos Cintra",
"ativo": true,
"email": "marcos@marcos.com",
"role": "estudante",
"createdAt": "2022-04-09T22:13:15.000Z",
"updatedAt": "2022-04-09T22:13:15.000Z",
"deletedAt": null
},
{
"id": 3,
"nome": "Felipe Cardoso",
"ativo": true,
"email": "felipe@felipe.com",
"role": "estudante",
"createdAt": "2022-04-09T22:13:15.000Z",
"updatedAt": "2022-04-09T22:13:15.000Z",
"deletedAt": null
},
{
"id": 4,
"nome": "Sandra Gomes",
"ativo": false,
"email": "sandra@sandra.com",
"role": "estudante",
"createdAt": "2022-04-09T22:13:15.000Z",
"updatedAt": "2022-04-09T22:13:15.000Z",
"deletedAt": null
},
{
"id": 5,
"nome": "Paula Morais",
"ativo": true,
"email": "paula@paula.com",
"role": "docente",
"createdAt": "2022-04-09T22:13:15.000Z",
"updatedAt": "2022-04-09T22:13:15.000Z",
"deletedAt": null
},
{
"id": 7,
"nome": "Aluno teste",
"ativo": true,
"email": "email@email.com.br",
"role": "estudante",
"createdAt": "2022-04-10T00:45:56.000Z",
"updatedAt": "2022-04-10T00:45:56.000Z",
"deletedAt": null
},
{
"id": 8,
"nome": "alu",
"ativo": true,
"email": "email@email.com.br",
"role": "estudante",
"createdAt": "2022-04-10T00:51:44.000Z",
"updatedAt": "2022-04-10T00:51:44.000Z",
"deletedAt": null
},
{
"id": 1,
"nome": "Ana Souza",
"ativo": true,
"email": "ana@ana.com",
"role": "estudante",
"createdAt": "2022-04-09T22:13:15.000Z",
"updatedAt": "2022-04-09T22:13:15.000Z",
"deletedAt": "2022-04-10T00:55:02.000Z"
},
{
"id": 6,
"nome": "Sergio Lopes",
"ativo": true,
"email": "sergio@sergio.com",
"role": "docente",
"createdAt": "2022-04-09T22:13:15.000Z",
"updatedAt": "2022-04-09T22:13:15.000Z",
"deletedAt": "2022-04-10T00:55:59.000Z"
}
]
Documentação:
paranoid => https://sequelize.org/docs/v6/core-concepts/paranoid/#behavior-with-other-queries
ordenação => https://sequelize.org/docs/v6/core-concepts/model-querying-basics/#ordering
flw! ;)