Voici une liste de toutes les requêtes qui sont à votre disposition pour pouvoir manipuler vos tables de référentiel métier.
Les requêtes de l’API qui s’appliquent sur les référentiels métiers permettent de faire des opérations d’ajout, sélection, mise à jour et suppression.
Introduction
Il existe plusieurs types de corps de requête. La plus sophistiquée concerne celle qui est utilisée pour manipuler le contenu du référentiel métier.
Les éléments du corps de cette requête correspondent à des morceaux de requête SQL.
Les sélecteurs (1️⃣ selectors)
Exemple : UPDATE table SET nom_colonne_1 WHERE selectors
La structure du sélecteur est une liste de JSON dont chacun doit comporter en clé, l’ID d’une colonne et en valeur, la valeur à fixer.
Si plusieurs couples clé/valeurs sont dans le même JSON, le résultat retourné sera l’intersection des conditions, c’est-à-dire que les conditions seront assemblées avec un « ET » logique.
À l’inverse, plusieurs JSON dans le sélecteur vous permettront de récupérer l’union de vos résultats, c’est-à-dire un « OU » logique.
Sélecteur simple
Pour récupérer l’ensemble des race de chats, j’utilise le sélecteur suivant:"selectors":[{"f0_race":"Chat"}]
Cela revient à dire « Je récupère l’ensemble des lignes qui ont « Chat » dans la colonne race. »
Sélecteur « ET »
Pour récupérer l’ensemble des chats qui sont tatoués, j’utilise le sélecteur suivant :"selectors":[{"f0_race":"Chat", "f2_tatouage":"true"}]
Cela revient à dire « Je récupère l’ensemble des lignes qui ont « Chat » dans la colonne race ET qui ont « vrai » dans la colonne Tatouage.«
Sélecteur « OU »
Pour récupérer l’ensemble des chiens et des animaux qui s’appellent « Pantoufle », j’utilise le sélecteur suivant :"selectors":[{"f0_race":"Chien"},{"f1_nom":"Pantoufle"}]
Cela revient à dire « Je récupère l’ensemble des lignes qui ont chat dans la colonne race ainsi que l’ensemble des lignes qui ont « Pantoufle » dans la colonne « Nom ». »
La différence avec le sélecteur précédent est que l’on utilise deux JSON comportant une condition chacun plutôt qu’un seul comportant deux conditions : il en résulte un OU à la place d’un ET.
Les nouvelles valeurs (2️⃣ newValues)
Exemple : UPDATE table SET
newValues
WHERE condition
"selectors": [
{
"f0_race": "Chat",
"f1_nom": "Plume"
}
],
"newValues": {
"f1_nom": "Chaussette"
}
Cela revient à dire « Je change le nom de tout les chats qui s’appelle « Plume » pour « Chaussette ». »
La/les colonne(s) que je souhaite sélectionner (3️⃣ colomnsToRetrieve)
Exemple : SELECT
columnsToRetrieve
FROM nom_du_tableau
"selectors": [
{
"f1_race": "Chat"
}
],
"columnsToRetrieve": {
"f1_nom"
}
Cela revient à dire « Sélectionne toutes les noms des lignes où « Chat » est présent dans la colonne « Race ».
Les différentes méthodes
[POST] /table
Crée un nouveau référentiel métier.
- 1️⃣ L’appellation du référentiel métier.
- 2️⃣ La description de la table.
- 3️⃣ L’ID ne peut être réécrit. Vous pouvez l’ignorer.
- 4️⃣ Le nom de la colonne, si aucun argument donné, un ID sera produit automatiquement.
- 5️⃣ L’ID de la colonne, si laissé vide, un ID sera généré automatiquement.
- 6️⃣ Le type de la colonne (TEXT, NUMBER…).
- 7️⃣ La valeur par défaut (non obligatoire). Cet argument doit correspondre au type de la colonne.
- 8️⃣ L’ordre des colonnes, allant de 0 à n-1 pour n colonnes. Les colonnes sont classées par hiérarchie croissante. (0, 1, 2…)
- 9️⃣ Si la colonne est indexée (non obligatoire, « faux » si laissé vide).
[GET]/table/tables
Récupère tous les référentiels métiers et renvoie leurs structures/colonnes (nom, id, type).
Ne nécessite pas d’envoi d’arguments.
Résultat : (tronqué à 2 tables pour l’exemple)
[GET]/table/{tableId}
Récupère le référentiel métier ayant pour ID celui transmis dans le chemin.
Résultat pour/table/74 :
[DELETE] /table/{tableId}
Supprime le référentiel métier ayant pour ID celui transmis dans le path.
[PUT] /table/{tableId}/rows
Ajoute de nouvelles lignes au référentiel métier ayant pour ID celui transmis dans le path.
[
{
"f0_nomdelentreprise": "Entreprise A",
"f1_nombredemployes": "10"
},
{
"f0_nomdelentreprise": "Entreprise B",
"f1_nombredemployes": "20"
},
{
"f0_nomdelentreprise": "Entreprise C",
"f1_nombredemployes": "30"
},
{
"f0_nomdelentreprise": "Entreprise D",
"f1_nombredemployes": "40"
}
]
Résultat :
[GET] /table/{tableId}/rows
Récupère le contenu (toutes les lignes) du référentiel métier ayant pour ID celui transmis dans le path.
Résultat pour /table/30/rows :
[
{ "f0_nomdelentreprise": "Entreprise A", "f1_nombredemployes": "10" }, { "f0_nomdelentreprise": "Entreprise B", "f1_nombredemployes": "20" }, { "f0_nomdelentreprise": "Entreprise C", "f1_nombredemployes": "30" }, { "f0_nomdelentreprise": "Entreprise D", "f1_nombredemployes": "40" }
]
[POST] /table/{tableId}/rows
Met à jour le référentiel métier ayant pour ID celui transmis dans le path.
Seules les lignes qui correspondent à celles présentent dans le selectors seront impactées.
{
"selectors": [
{
"f0_nomdelentreprise": "Entreprise A",
"f1_nombredemployes": "10"
},
{
"f0_nomdelentreprise": "Entreprise B",
"f1_nombredemployes": "500"
}
],
"newValues": {
"f0_nomdelentreprise": "Entreprise A ou B modifiée",
"f1_nombredemployes": "60"
}
}
Dans notre cas, seule « Entreprise A » est censée être modifiée puisqu’elle possède bien 10 employés alors que « Entreprise B » ne possède pas 500 employés.
Résultat :
[POST] /table/{tableId}/rows (UpdateAll)
Met à jour le référentiel métier ayant pour ID celui transmis dans le path.
Toutes les lignes seront impactées.
{ "newValues": { "f0_nomdelentreprise": "Entreprise Z" } }
On demande à ce que toutes les lignes de la colonne f0_nomdelentreprise aient désormais comme valeur « Entreprise Z ».
Résultat :
[PUT] /table/{tableId}/rows/delete
Supprime les lignes souhaitées dans la référentiel métier ayant pour ID celui transmis dans le path.
Dans le cas ci-dessous, nous les avons donc retirés.
{ "selectors": [ { "f0_nomdelentreprise": "Entreprise D" } ] }
On indique que l’on veut supprimer les lignes qui possèdent « Entreprise D » dans la colonne « Nom de l’entreprise ».
[POST] /table/{tableId}/rows/select
Sélectionne les éléments correspondants au sélecteur qui se trouve dans la colonne indiquée dans « columnsToRetrieve ».
Dans le cas ci-dessous, nous l’ avons donc retiré.
{ "selectors": [ { "f1_nombredemployes": "20" }, { "f1_nombredemployes": "30" } ], "columnsToRetrieve": [ "f0_nomdelentreprise" ] }
Résultat :
[DELETE] /table/{tableId}/rows
Supprime toutes les lignes du référentiel métier ayant pour ID celui transmis dans le path.