Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

- Suporte a consulta por operadores relacionais (>,<,>=,<=) #124

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

emobtech
Copy link
Contributor

@emobtech emobtech commented Jul 8, 2019

Operadores Relacionais:

Além do operador relacional =, os filtros agora também suportam os demais operadores, i.e., >, <, >= e <=.

Exemplos:

  • api/v1/usuarios?idade=>20
  • api/v1/usuarios?idade=>=20
  • api/v1/usuarios?idade=<18
  • api/v1/usuarios?idade=<=18

É possível combinar esses operadores, a fim de efetuar consultas por intervalo de valores:

  • api/v1/usuarios?idade=>18&idade=<21
  • api/v1/usuarios?dataCadastro=>=2017-12-20T00:00:00.000Z&dataCadastro=<2017-12-21T00:00:00.000Z

Filtro de Data

Para filtrar consultas utilizando campos do tipo data, basta informar os valores dos parâmetros utilizando o padrão ISO-8601 e no fuso UTC. A conversão da data informada para o fuso do servidor é feita automaticamente, antes da consulta ser enviada ao banco de dados.

Exemplos:

  • api/v1/usuarios?dataCadastro=2017-11-28T12:40:02.000Z

Adicionei também o suporte a datas sem fuso, as quais não serão ajustadas para o fuso do servidor.

Esta alteração é útil quando campos desse tipo ignorarem a informação da hora, como acontece em muitas situações.

Então ao enviar a data sem o Z no final, o qual indica que a presença do fuso UTC, a mesma será utilizada da forma como foi enviada, sem nenhum ajuste de fuso.

Exemplo:

  • api/v1/usuarios?dataNascimento=2017-11-28T00:00:00.000

Ordenação em Campos de Segundo Nível

Exemplos:

  • api/v1/usuarios?sort=perfil(nome)
  • api/v1/usuarios?sort=perfil(nome)&desc

- Suporte a consulta por campos de data
- Suporte a ordenação por campos de sugundo nível (sort=usuario(nome))
@emobtech
Copy link
Contributor Author

emobtech commented Jul 8, 2019

Este PR é o mesmo que havia anteriormente e que estava pendente há um bom tempo... o que fiz foi resolver os problemas de conflito que haviam.

p.s: Sou o Ernandes, funcionário do Serpro em Fortaleza. Qualquer dúvida, chamar #85-3756.

82177082315 and others added 4 commits January 24, 2020 10:16
filtros de consulta de segundo nível, mesmo os campos sendo diferentes.

Por exemplo: "chamada_servico?usuario(idade)=20&usuario(nome)=joao",
estava gerando a query "(...) where usuario.idade = 20 OR usuario.nome =
joao", quando o correto seria "usuario.idade = 20 AND usuario.nome =
joao".

A cláusula OR agora é gerada somente quando os campos de segundo nível
forem iguais, por exemplo:
"chamada_servico?usuario(idade)=20&usuario(idade)=21".
?ano=[2018...2019] => a <= X <= b
?ano=(2018...2019] => a < X <= b
?ano=[2018...2019) => a <= X < b
?ano=(2018...2019) => a < X < b
Copy link
Contributor Author

@emobtech emobtech left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comentário adicional:

Para escapar uma vírgula, e evitar que ela seja usada como separador de valores, basta adicionar um segunda vírgula. Por exemplo:

?param=Appleseed,,John

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant