1
resposta

Mover usuário desativado para o final da tabela

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. Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

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:

select ordenado

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! ;)