CaenCamp / jobs-caen-camp

Gestion d'offres d'emploi pour les CaenCamp
https://www.caen.camp
GNU General Public License v3.0
9 stars 5 forks source link

Refactor api filters #69

Closed Keksoj closed 4 years ago

Keksoj commented 4 years ago

Description

Les filtres comme paramètres individuels

Dans la continuité de la refonte de la pagination et du tri de l'api, ll semble évident d'harmoniser la gestion des paramètres de la requête envoyée par le front-end.

Les filltres sont jusqu'à présent reçus sous forme d'un tableau JSON stringifié :

{ title: 'Lead', datePosted_before: '2020-05-02' }

lui-même transporté dans la requête en tant que paramètre filters :

/api/job-postings?filters=%7B%22title%22%3A%22Lead%22%2C%22datePosted_before%22%3A2020-05-02%7D

Il s'agit d'extraire chaque filtre en tant que paramètre de requête à part entière. Des opérateurs sont associables à chaque filtre:

operateur applicable à explication
:eq string, number, date Is equal to
:gt number, date Is greater than
:lt number, date Is less than
:gte number, date Is greater than or equal to
:lte number, date Is less than or equal to
:%l% string %LIKE%
:l% string LIKE%
:%l string %LIKE

La syntaxe des opérateurs (optionnels) est la suivante : filtre(:opérateur)=valeur

Avec des opérateurs par défaut, par exemple %l% pour title, le tout documenté dans le contrat openAPI.

Notre requête devient:

/api/job-postings?title=Lead&datePosted:lt=2020-06-24

Related Issue

Closes #57

ToDo list:

Keksoj commented 4 years ago

Prêt pour relecture!

Keksoj commented 4 years ago

Merci beaucoup ! Concernant les opérateurs par défaut, je me suis dit gue pour title par exemple c'était évident d'avoir %LIKE% par défaut, et en continuant sur cette lancée j'ai cherché les opérateurs les plus intuitifs, sans savoir si ça faisait partie des bonnes pratiques pour une API. Je peux enlever TOUS les opérateurs par défaut et ce sera au front de faire le boulot. J'ai effectivement besion de retours là-dessus.

Keksoj commented 4 years ago

Okay les corrections sont faites, il fe reste plus qu'à décider des opérateurs par défaut. Pour rappel, les voilà tels qu'ils sont documentés dans le contrat :

job-postings

organizations

Keksoj commented 4 years ago

Okay pour l'approche KISS je part là-dessus !