From 162c0979bfb456b19736d24a3bd9328386dcbe24 Mon Sep 17 00:00:00 2001 From: antoine <antoine.gaienier.etu@univ-lille.fr> Date: Mon, 18 Mar 2024 13:27:32 +0100 Subject: [PATCH] doc --- README.md | 743 ++++++++++++++++-- .../IngrediantPatch price.bru | 0 .../Ingredient Delete.bru | 4 +- .../Ingredient FindByID.bru | 0 .../Ingredient Findall.bru | 0 .../Ingredient Patch name.bru | 0 .../Ingredient Post.bru | 0 .../Ingredient Put.bru | 0 .../Ingretiant FindByID Name.bru | 0 .../Ingredient Delete Faill.bru | 0 .../Ingredient FindByID Faill.bru | 0 .../Ingredient FindByID Name Faill.bru | 0 .../Ingredient Patch Faill (name colonne).bru | 0 ...ient Patch Faill (not foud ingredient).bru | 0 .../Ingredient Post Faill.bru | 0 .../ingredient Put Faill.bru | 0 .../Pizza ByName (chorizo 2).bru | 0 .../Pizza ByName (chorizo 3).bru | 0 .../Pizza ByName (chorizo).bru | 0 .../{3_Pizza => 3_Pizzas}/Pizza ByName.bru | 0 .../Pizza Delete (une pizza).bru | 0 .../{3_Pizza => 3_Pizzas}/Pizza FindALL.bru | 0 .../Pizza FindByName Prixtotal.bru | 0 .../Pizza Patch (liste ingrediant).bru | 0 .../Pizza Patch (pate et prixbase).bru | 0 .../Pizza Patch (prixbase).bru | 0 .../3_Pizzas/Pizza Patch (p\303\242te).bru" | 0 .../{3_Pizza => 3_Pizzas}/Pizza Post.bru | 0 ...Ingredient (un ingredient d'une pizza).bru | 0 .../{3_Pizza => 3_Pizzas}/Pizzaa Put.bru | 0 .../Pizza Delete (une pizza) Faill.bru | 0 .../Pizza FindByName Faill.bru | 0 .../Pizza Patch Faill (sur une colonne).bru | 0 .../Pizza Patch Faill.bru | 0 .../Pizza Post Faill.bru | 0 ...elete (un ingredient d'une pizza)Faill.bru | 0 .../Commandes Delete (une commande).bru | 0 .../Commandes Delete (une pizza ).bru | 0 .../Commandes Pach (pizzas).bru | 0 .../Commandes Patch (nom et date).bru | 0 .../Commandes Post.bru | 0 .../Commandes Put.bru | 0 .../Commandes fidAll.bru | 0 .../Commandes findById (commande 4 Patch).bru | 0 .../Commandes findById (commandes 4 Put).bru | 0 .../Commandes findById.bru | 0 .../Commandes totalPrice.bru | 0 .../Commandes Delete (une commande) Faill.bru | 0 .../Commandes Delete (une pizza) Faill.bru | 0 .../Commandes Patch Faill(nom colonne).bru | 0 .../Commandes Patch Faill.bru | 0 .../Commandes Post Faill.bru | 0 .../Commandes Put Faill.bru | 0 .../Commandes findById Faill.bru | 0 .../Commandes totalPrice Faill.bru | 0 .../classes/controleurs/CommandeRestAPI.class | Bin 4660 -> 5574 bytes .../controleurs/IngredientRestAPI.class | Bin 4616 -> 5078 bytes .../classes/controleurs/PizzasRestAPI.class | Bin 4991 -> 5290 bytes WEB-INF/src/controleurs/CommandeRestAPI.java | 10 +- .../src/controleurs/IngredientRestAPI.java | 11 +- WEB-INF/src/controleurs/PizzasRestAPI.java | 9 +- pizzeria Antoine GAIENIER.zip | Bin 0 -> 53552 bytes WEB-INF/pizzeria.sql => pizzeria.sql | 24 +- 63 files changed, 707 insertions(+), 94 deletions(-) rename WEB-INF/bruno/pizzeria/{1_Ingredient => 1_Ingredients}/IngrediantPatch price.bru (100%) rename WEB-INF/bruno/pizzeria/{1_Ingredient => 1_Ingredients}/Ingredient Delete.bru (64%) rename WEB-INF/bruno/pizzeria/{1_Ingredient => 1_Ingredients}/Ingredient FindByID.bru (100%) rename WEB-INF/bruno/pizzeria/{1_Ingredient => 1_Ingredients}/Ingredient Findall.bru (100%) rename WEB-INF/bruno/pizzeria/{1_Ingredient => 1_Ingredients}/Ingredient Patch name.bru (100%) rename WEB-INF/bruno/pizzeria/{1_Ingredient => 1_Ingredients}/Ingredient Post.bru (100%) rename WEB-INF/bruno/pizzeria/{1_Ingredient => 1_Ingredients}/Ingredient Put.bru (100%) rename WEB-INF/bruno/pizzeria/{1_Ingredient => 1_Ingredients}/Ingretiant FindByID Name.bru (100%) rename WEB-INF/bruno/pizzeria/{2_IngrediantFaill => 2_IngrediantsFaill}/Ingredient Delete Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{2_IngrediantFaill => 2_IngrediantsFaill}/Ingredient FindByID Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{2_IngrediantFaill => 2_IngrediantsFaill}/Ingredient FindByID Name Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{2_IngrediantFaill => 2_IngrediantsFaill}/Ingredient Patch Faill (name colonne).bru (100%) rename WEB-INF/bruno/pizzeria/{2_IngrediantFaill => 2_IngrediantsFaill}/Ingredient Patch Faill (not foud ingredient).bru (100%) rename WEB-INF/bruno/pizzeria/{2_IngrediantFaill => 2_IngrediantsFaill}/Ingredient Post Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{2_IngrediantFaill => 2_IngrediantsFaill}/ingredient Put Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza ByName (chorizo 2).bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza ByName (chorizo 3).bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza ByName (chorizo).bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza ByName.bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza Delete (une pizza).bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza FindALL.bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza FindByName Prixtotal.bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza Patch (liste ingrediant).bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza Patch (pate et prixbase).bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza Patch (prixbase).bru (100%) rename "WEB-INF/bruno/pizzeria/3_Pizza/Pizza Patch (p\303\242te).bru" => "WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Patch (p\303\242te).bru" (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizza Post.bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/PizzaDelete Ingredient (un ingredient d'une pizza).bru (100%) rename WEB-INF/bruno/pizzeria/{3_Pizza => 3_Pizzas}/Pizzaa Put.bru (100%) rename WEB-INF/bruno/pizzeria/{4_PizzaFaill => 4_PizzasFaill}/Pizza Delete (une pizza) Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{4_PizzaFaill => 4_PizzasFaill}/Pizza FindByName Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{4_PizzaFaill => 4_PizzasFaill}/Pizza Patch Faill (sur une colonne).bru (100%) rename WEB-INF/bruno/pizzeria/{4_PizzaFaill => 4_PizzasFaill}/Pizza Patch Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{4_PizzaFaill => 4_PizzasFaill}/Pizza Post Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{4_PizzaFaill => 4_PizzasFaill}/PizzaDelete (un ingredient d'une pizza)Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes Delete (une commande).bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes Delete (une pizza ).bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes Pach (pizzas).bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes Patch (nom et date).bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes Post.bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes Put.bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes fidAll.bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes findById (commande 4 Patch).bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes findById (commandes 4 Put).bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes findById.bru (100%) rename WEB-INF/bruno/pizzeria/{5_Commande => 5_Commandes}/Commandes totalPrice.bru (100%) rename WEB-INF/bruno/pizzeria/{6_CommandeFaill => 6_CommandesFaill}/Commandes Delete (une commande) Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{6_CommandeFaill => 6_CommandesFaill}/Commandes Delete (une pizza) Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{6_CommandeFaill => 6_CommandesFaill}/Commandes Patch Faill(nom colonne).bru (100%) rename WEB-INF/bruno/pizzeria/{6_CommandeFaill => 6_CommandesFaill}/Commandes Patch Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{6_CommandeFaill => 6_CommandesFaill}/Commandes Post Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{6_CommandeFaill => 6_CommandesFaill}/Commandes Put Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{6_CommandeFaill => 6_CommandesFaill}/Commandes findById Faill.bru (100%) rename WEB-INF/bruno/pizzeria/{6_CommandeFaill => 6_CommandesFaill}/Commandes totalPrice Faill.bru (100%) create mode 100644 pizzeria Antoine GAIENIER.zip rename WEB-INF/pizzeria.sql => pizzeria.sql (95%) diff --git a/README.md b/README.md index 2fe96ca..0c01c6a 100644 --- a/README.md +++ b/README.md @@ -1,93 +1,722 @@ -# SAÉ_REST_API +# SAÉ S4.A02. : Web Backend +### Objectif: +Savoir réaliser et mettre en place une architecture REST. +Cette SAÉ ne met en oeuvre que les compétences REST. -## Getting started -To make it easy for you to get started with GitLab, here's a list of recommended next steps. +## Base de données -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! +La base de données est une base de données relationnelle. Elle est composée de 5 tables: +- **`ingredients`** : contient tout les ingrédients qui commposent les pizzas (id, name, price) +- **`pizzas`** : contient les pizzas (nom, pate, prixbase) +- **`pizzas_ingredients`** : contient les ingrédients qui composent les pizzas (nom, id) nom est le nom de la pizza et id est l'id de l'ingrédient -## Add your files +- **`commandes`** : contient les commandes (id, nom, date) +- **`commande_detail`** : contient les pizzas commandées (id, nom) id est l'id de la commande et nom est le nom de la pizza commandée -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: +## API Ingredients +### GET /ingredients + +Renvoie la liste des ingrédients présents dans la base de données + +```json +[ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } +] +``` +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement + + +### GET /ingredients/{id} + +Renvoie l'ingrédient correspondant à l'id passé en paramètre + +```json +{ + "id": 1, + "name": "pomme de terre", + "price": 1 +} +``` + +Status | Description +------------ | ------------- +302 FOUND | La requête s'est effectuée correctement +404 NOT FOUND | L'ingrédient n'existe pas + +### GET /ingredients/{id}/name + +Renvoie le nom de l'ingrédient correspondant à l'id passé en paramètre + +```json +{ + "name": "pomme de terre" +} +``` +Status | Description +------------ | ------------- +302 FOUND | La requête s'est effectuée correctement +404 NOT FOUND | L'ingrédient n'existe pas + +### POST /ingredients + +Ajoute un ingrédient à la base de données avec les informations passées en paramètre au format JSON. + +Body: +```json +{ + "id": 1, + "name": "pomme de terre", + "price": 1 +} ``` -cd existing_repo -git remote add origin https://gitlab.univ-lille.fr/antoine.gaienier.etu/sae_rest_api.git -git branch -M main -git push -uf origin main +et renvoie l'ingrédient ajouté + +```json +{ + "id": 1, + "name": "pomme de terre", + "price": 1 +} ``` +Status | Description +------------ | ------------- +201 CREATED | La requête s'est effectuée correctement +409 CONFLICT | L'ingrédient existe déjà -## Integrate with your tools +### DELETE /ingredients/{id} -- [ ] [Set up project integrations](https://gitlab.univ-lille.fr/antoine.gaienier.etu/sae_rest_api/-/settings/integrations) +Supprime l'ingrédient correspondant à l'id passé en paramètre et ne renvoie rien -## Collaborate with your team -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND| L'ingrédient n'existe pas -## Test and Deploy +### PUT /ingredients -Use the built-in continuous integration in GitLab. +Modifie l'ingrédient avec les informations passées en paramètre au format JSON. -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) +Body: +```json +{ + "id": 1, + "name": "truffe", + "price": 10 +} +``` +et renvoie l'ingrédient modifié + +```json +{ + "id": 1, + "name": "truffe", + "price": 10 +} +``` +Status | Description +------------ | ------------- + 200 OK | La requête s'est effectuée correctement + 404 NOT FOUND |L'ingrédient n'existe pas -*** +### PATCH /ingredients/{id} -# Editing this README +Modifie l'ingrédient correspondant à l'id passé en paramètre avec les informations passées en paramètre au format JSON. -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. +Body: +```json +{ + "price": 5.5 +} +``` +et renvoie l'ingrédient modifié + +```json +{ + "id": 1, + "name": "pomme de terre", + "price": 5.5 +} +``` +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND |L'ingrédient n'existe pas + +## API Pizzas + +### GET /pizzas + +Renvoie la liste des pizzas présentes dans la base de données + +```json +[ + { + "nom": "4 fromages", + "pate": "fine", + "prixbase": 10 + }, + { + "nom": "reine", + "pate": "fine", + "prixbase": 12 + } +] +``` +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement + +### GET /pizzas/{nom} + +Renvoie la pizza correspondant au nom passé en paramètre et les ingrédients qui la composent + +```json +{ + "nom": "4 fromages", + "pate": "fine", + "prixbase": 10, + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] +} +``` +Status | Description +------------ | ------------- +302 FOUND | La requête s'est effectuée correctement +404 NOT FOUND | La pizza n'existe pas -## Suggestions for a good README +### GET /pizzas/{nom}/prixfinal -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. +Renvoie le prix final de la pizza correspondant au nom passé en paramètre -## Name -Choose a self-explaining name for your project. +```json +{ + 13 +} +``` -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. +Status | Description +------------ | ------------- +302 FOUND | La requête s'est effectuée correctement +404 NOT FOUND | La pizza n'existe pas + +### POST /pizzas + +Ajoute une pizza à la base de données avec les informations passées en paramètre au format JSON + +Body: +```json +{ + "nom": "4 fromages", + "pate": "fine", + "prixbase": 10 + "ingredients": [ + { + "id": 1, + }, + { + "id": 2, + "name": "crème", + } + ] +} +``` + +et renvoie la pizza ajoutée + +```json +{ + "nom": "4 fromages", + "pate": "fine", + "prixbase": 10 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] +} +``` +Status | Description +------------ | ------------- +201 CREATED | La requête s'est effectuée correctement +409 CONFLICT | La pizza existe déjà + +### DELETE /pizzas/{nom} + +Supprime la pizza correspondant au nom passé en paramètre et ne renvoie rien + +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND | La pizza n'existe pas + +### DELETE /pizzas/{nom}/{id} + +Supprime la relation entre la pizza correspondant au nom passé en paramètre et l'ingrédient correspondant à l'id passé en paramètre et ne renvoie rien + +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND | La pizza ou l'ingrédient n'existe pas + +### PUT /pizzas/{nom} + +Modifie la pizza correspondant au nom passé en paramètre avec les informations passées en paramètre au format JSON + +Body: +```json +{ + "nom": "hawaienne", + "pate": "fine", + "prixbase": 10 + "ingredients": [ + { + "id": 1, + }, + { + "id": 10, + "name": "ananas", + }, + { + "id": 5, + "name":" sauce tomate" + } + ] +} +``` -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND | La pizza n'existe pas + +### PATCH /pizzas/{nom} + +Modifie la pizza correspondant au nom passé en paramètre avec les informations passées en paramètre au format JSON. + +Body: +```json +{ + "prixbase": 15 +} + +qui modifie le prix de la pizza correspondant au nom passé en paramètre et renvoie la pizza modifiée et renvoie la pizza modifiée + +```json +{ + "nom": "4 fromages", + "pate": "fine", + "prixbase": 15 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] +} +``` +ou + +Body: + +```json +{ + "ingredients": [ + { + "id": 1, + }, + { + "id": 10, + + } + ] +} +``` +qui modifie les ingrédients de la pizza correspondant au nom passé en paramètre et renvoie la pizza modifiée + +```json +{ + "nom": "4 fromages", + "pate": "fine", + "prixbase": 10 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 10, + "name": "ananas", + "price": 3 + } + ] +} +``` + +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND | La pizza n'existe pas + +## API Commandes + +### GET /commandes + +Renvoie la liste des commandes présentes dans la base de données + +```json +[ + { + "id": 1, + "nom": "commande1", + "date": "2021-03-01" + }, + { + "id": 2, + "nom": "commande2", + "date": "2021-03-02" + } +] +``` + +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement + +### GET /commandes/{id} + +Renvoie la commande correspondant à l'id passé en paramètre et les pizzas commandées + +```json +{ + "id": 1, + "nom": "commande1", + "date": "2024-03-01", + "pizzas": [ + { + "nom": "4 fromages", + "pate": "fine", + "prixbase": 10 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] + }, + { + "nom": "reine", + "pate": "fine", + "prixbase": 12 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] + } + ] +} +``` + +Status | Description +------------ | ------------- +302 FOUND | La requête s'est effectuée correctement +404 NOT FOUND | La commande n'existe pas + +### GET /commandes/{id}/prixfinal + +Renvoie le prix final de la commande correspondant à l'id passé en paramètre + +```json +{ + 25 +} +``` + +Status | Description +------------ | ------------- +302 FOUND | La requête s'est effectuée correctement +404 NOT FOUND | La commande n'existe pas + +### POST /commandes + +Ajoute une commande à la base de données avec les informations passées en paramètre au format JSON + +Body: +```json +{ + "id": 1, + "nom": "commande1", + "date": "2024-03-01", + "pizzas": [ + { + "nom": "4 fromages", + }, + { + "nom": "reine", + } + ] +} +``` + +et renvoie la commande ajoutée + +```json +{ + "id": 1, + "nom": "commande1", + "date": "2024-03-01", + "pizzas": [ + { + "nom": "4 fromages", + "pate": "fine", + "prixbase": 10 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] + }, + { + "nom": "reine", + "pate": "fine", + "prixbase": 12 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] + } + ] +} +``` + +Status | Description +------------ | ------------- +201 CREATED | La requête s'est effectuée correctement +409 CONFLICT | La commande existe déjà + +### DELETE /commandes/{id} + +Supprime la commande correspondant à l'id passé en paramètre et ne renvoie rien + +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND | La commande n'existe pas + +### DELETE /commandes/{id}/{nom} + +Supprime la relation entre la commande correspondant à l'id passé en paramètre et la pizza correspondant au nom passé en paramètre et ne renvoie rien + +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND | La commande ou la pizza n'existe pas + +### PUT /commandes/{id} + +Modifie la commande correspondant à l'id passé en paramètre avec les informations passées en paramètre au format JSON + +Body: +```json +{ + "id": 1, + "nom": "commande1", + "date": "2024-03-01", + "pizzas": [ + { + "nom": "4 fromages", + }, + { + "nom": "reine", + } + ] +} +``` +et renvoie la commande modifiée + +```json +{ + "id": 1, + "nom": "commande1", + "date": "2024-03-01", + "pizzas": [ + { + "nom": "4 fromages", + "pate": "fine", + "prixbase": 10 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] + }, + { + "nom": "reine", + "pate": "fine", + "prixbase": 12 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] + } + ] +} +``` + +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND | La commande n'existe pas + +### PATCH /commandes/{id} + +Modifie la commande correspondant à l'id passé en paramètre avec les informations passées en paramètre au format JSON + +Body: +```json +{ + "date": "2024-03-02" + "pizzas": [ + { + "nom": "4 fromages", + } + ] +} +``` + +et renvoie la commande modifiée + +```json +{ + "id": 1, + "nom": "commande1", + "date": "2024-03-02", + "pizzas": [ + { + "nom": "4 fromages", + "pate": "fine", + "prixbase": 10 + "ingredients": [ + { + "id": 1, + "name": "pomme de terre", + "price": 1 + }, + { + "id": 2, + "name": "crème", + "price": 2 + } + ] + } + ] +} +``` -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. +Status | Description +------------ | ------------- +200 OK | La requête s'est effectuée correctement +404 NOT FOUND | La commande n'existe pas -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. +## Restrictions d'accès -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. +La partie restriction d'accès n'est pas implémentée par manque de temps. -## Contributing -State if you are open to contributions and what your requirements are for accepting them. -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. +## Bruno -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. +Bruno est organisé de façon à pouvoir lancer le runnner de l'application sans avoir d'erreur. -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. +- Ingredients +- ingredientsFail +- Pizzas +- PizzasFail +- Commandes +- CommandesFail -## License -For open source projects, say how it is licensed. -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/WEB-INF/bruno/pizzeria/1_Ingredient/IngrediantPatch price.bru b/WEB-INF/bruno/pizzeria/1_Ingredients/IngrediantPatch price.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/1_Ingredient/IngrediantPatch price.bru rename to WEB-INF/bruno/pizzeria/1_Ingredients/IngrediantPatch price.bru diff --git a/WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Delete.bru b/WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Delete.bru similarity index 64% rename from WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Delete.bru rename to WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Delete.bru index ad8bf75..0771640 100644 --- a/WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Delete.bru +++ b/WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Delete.bru @@ -10,6 +10,4 @@ delete { auth: none } -docs { - Avant de faire ce DELETE vou de vais faire la requête "IngrediantPost" -} + diff --git a/WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient FindByID.bru b/WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient FindByID.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient FindByID.bru rename to WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient FindByID.bru diff --git a/WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Findall.bru b/WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Findall.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Findall.bru rename to WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Findall.bru diff --git a/WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Patch name.bru b/WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Patch name.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Patch name.bru rename to WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Patch name.bru diff --git a/WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Post.bru b/WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Post.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Post.bru rename to WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Post.bru diff --git a/WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Put.bru b/WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Put.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/1_Ingredient/Ingredient Put.bru rename to WEB-INF/bruno/pizzeria/1_Ingredients/Ingredient Put.bru diff --git a/WEB-INF/bruno/pizzeria/1_Ingredient/Ingretiant FindByID Name.bru b/WEB-INF/bruno/pizzeria/1_Ingredients/Ingretiant FindByID Name.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/1_Ingredient/Ingretiant FindByID Name.bru rename to WEB-INF/bruno/pizzeria/1_Ingredients/Ingretiant FindByID Name.bru diff --git a/WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient Delete Faill.bru b/WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient Delete Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient Delete Faill.bru rename to WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient Delete Faill.bru diff --git a/WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient FindByID Faill.bru b/WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient FindByID Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient FindByID Faill.bru rename to WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient FindByID Faill.bru diff --git a/WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient FindByID Name Faill.bru b/WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient FindByID Name Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient FindByID Name Faill.bru rename to WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient FindByID Name Faill.bru diff --git a/WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient Patch Faill (name colonne).bru b/WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient Patch Faill (name colonne).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient Patch Faill (name colonne).bru rename to WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient Patch Faill (name colonne).bru diff --git a/WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient Patch Faill (not foud ingredient).bru b/WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient Patch Faill (not foud ingredient).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient Patch Faill (not foud ingredient).bru rename to WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient Patch Faill (not foud ingredient).bru diff --git a/WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient Post Faill.bru b/WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient Post Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/2_IngrediantFaill/Ingredient Post Faill.bru rename to WEB-INF/bruno/pizzeria/2_IngrediantsFaill/Ingredient Post Faill.bru diff --git a/WEB-INF/bruno/pizzeria/2_IngrediantFaill/ingredient Put Faill.bru b/WEB-INF/bruno/pizzeria/2_IngrediantsFaill/ingredient Put Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/2_IngrediantFaill/ingredient Put Faill.bru rename to WEB-INF/bruno/pizzeria/2_IngrediantsFaill/ingredient Put Faill.bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza ByName (chorizo 2).bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza ByName (chorizo 2).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza ByName (chorizo 2).bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza ByName (chorizo 2).bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza ByName (chorizo 3).bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza ByName (chorizo 3).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza ByName (chorizo 3).bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza ByName (chorizo 3).bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza ByName (chorizo).bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza ByName (chorizo).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza ByName (chorizo).bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza ByName (chorizo).bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza ByName.bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza ByName.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza ByName.bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza ByName.bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza Delete (une pizza).bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Delete (une pizza).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza Delete (une pizza).bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Delete (une pizza).bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza FindALL.bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza FindALL.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza FindALL.bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza FindALL.bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza FindByName Prixtotal.bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza FindByName Prixtotal.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza FindByName Prixtotal.bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza FindByName Prixtotal.bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza Patch (liste ingrediant).bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Patch (liste ingrediant).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza Patch (liste ingrediant).bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Patch (liste ingrediant).bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza Patch (pate et prixbase).bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Patch (pate et prixbase).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza Patch (pate et prixbase).bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Patch (pate et prixbase).bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza Patch (prixbase).bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Patch (prixbase).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza Patch (prixbase).bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Patch (prixbase).bru diff --git "a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza Patch (p\303\242te).bru" "b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Patch (p\303\242te).bru" similarity index 100% rename from "WEB-INF/bruno/pizzeria/3_Pizza/Pizza Patch (p\303\242te).bru" rename to "WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Patch (p\303\242te).bru" diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizza Post.bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Post.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizza Post.bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizza Post.bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/PizzaDelete Ingredient (un ingredient d'une pizza).bru b/WEB-INF/bruno/pizzeria/3_Pizzas/PizzaDelete Ingredient (un ingredient d'une pizza).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/PizzaDelete Ingredient (un ingredient d'une pizza).bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/PizzaDelete Ingredient (un ingredient d'une pizza).bru diff --git a/WEB-INF/bruno/pizzeria/3_Pizza/Pizzaa Put.bru b/WEB-INF/bruno/pizzeria/3_Pizzas/Pizzaa Put.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/3_Pizza/Pizzaa Put.bru rename to WEB-INF/bruno/pizzeria/3_Pizzas/Pizzaa Put.bru diff --git a/WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza Delete (une pizza) Faill.bru b/WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza Delete (une pizza) Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza Delete (une pizza) Faill.bru rename to WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza Delete (une pizza) Faill.bru diff --git a/WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza FindByName Faill.bru b/WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza FindByName Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza FindByName Faill.bru rename to WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza FindByName Faill.bru diff --git a/WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza Patch Faill (sur une colonne).bru b/WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza Patch Faill (sur une colonne).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza Patch Faill (sur une colonne).bru rename to WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza Patch Faill (sur une colonne).bru diff --git a/WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza Patch Faill.bru b/WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza Patch Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza Patch Faill.bru rename to WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza Patch Faill.bru diff --git a/WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza Post Faill.bru b/WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza Post Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/4_PizzaFaill/Pizza Post Faill.bru rename to WEB-INF/bruno/pizzeria/4_PizzasFaill/Pizza Post Faill.bru diff --git a/WEB-INF/bruno/pizzeria/4_PizzaFaill/PizzaDelete (un ingredient d'une pizza)Faill.bru b/WEB-INF/bruno/pizzeria/4_PizzasFaill/PizzaDelete (un ingredient d'une pizza)Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/4_PizzaFaill/PizzaDelete (un ingredient d'une pizza)Faill.bru rename to WEB-INF/bruno/pizzeria/4_PizzasFaill/PizzaDelete (un ingredient d'une pizza)Faill.bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes Delete (une commande).bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes Delete (une commande).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes Delete (une commande).bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes Delete (une commande).bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes Delete (une pizza ).bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes Delete (une pizza ).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes Delete (une pizza ).bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes Delete (une pizza ).bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes Pach (pizzas).bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes Pach (pizzas).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes Pach (pizzas).bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes Pach (pizzas).bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes Patch (nom et date).bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes Patch (nom et date).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes Patch (nom et date).bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes Patch (nom et date).bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes Post.bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes Post.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes Post.bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes Post.bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes Put.bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes Put.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes Put.bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes Put.bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes fidAll.bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes fidAll.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes fidAll.bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes fidAll.bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes findById (commande 4 Patch).bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes findById (commande 4 Patch).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes findById (commande 4 Patch).bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes findById (commande 4 Patch).bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes findById (commandes 4 Put).bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes findById (commandes 4 Put).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes findById (commandes 4 Put).bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes findById (commandes 4 Put).bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes findById.bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes findById.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes findById.bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes findById.bru diff --git a/WEB-INF/bruno/pizzeria/5_Commande/Commandes totalPrice.bru b/WEB-INF/bruno/pizzeria/5_Commandes/Commandes totalPrice.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/5_Commande/Commandes totalPrice.bru rename to WEB-INF/bruno/pizzeria/5_Commandes/Commandes totalPrice.bru diff --git a/WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Delete (une commande) Faill.bru b/WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Delete (une commande) Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Delete (une commande) Faill.bru rename to WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Delete (une commande) Faill.bru diff --git a/WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Delete (une pizza) Faill.bru b/WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Delete (une pizza) Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Delete (une pizza) Faill.bru rename to WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Delete (une pizza) Faill.bru diff --git a/WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Patch Faill(nom colonne).bru b/WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Patch Faill(nom colonne).bru similarity index 100% rename from WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Patch Faill(nom colonne).bru rename to WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Patch Faill(nom colonne).bru diff --git a/WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Patch Faill.bru b/WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Patch Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Patch Faill.bru rename to WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Patch Faill.bru diff --git a/WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Post Faill.bru b/WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Post Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Post Faill.bru rename to WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Post Faill.bru diff --git a/WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Put Faill.bru b/WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Put Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes Put Faill.bru rename to WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes Put Faill.bru diff --git a/WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes findById Faill.bru b/WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes findById Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes findById Faill.bru rename to WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes findById Faill.bru diff --git a/WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes totalPrice Faill.bru b/WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes totalPrice Faill.bru similarity index 100% rename from WEB-INF/bruno/pizzeria/6_CommandeFaill/Commandes totalPrice Faill.bru rename to WEB-INF/bruno/pizzeria/6_CommandesFaill/Commandes totalPrice Faill.bru diff --git a/WEB-INF/classes/controleurs/CommandeRestAPI.class b/WEB-INF/classes/controleurs/CommandeRestAPI.class index c98b6f66a7b70781ab826741e6f0617d08f57a87..cfc0b45c1ea7adde2722ae48d867e8cc7f1d09c6 100644 GIT binary patch literal 5574 zcmX^0Z`VEs1_oOO3w8!3Mh5BR{JfH){G8O%qGEmL{M_8cyp+_S)Z!Ay08e%X7Dfhv zti-ZJ{hY+SbbbG%tkmQZMh5O=s5%!%e?|sDpOnOWxK<ZOe``htHk-`6%o00B24)S- zFh&Lz=lqmZb_Q-n27ZKTu0=)pMH~#gjGWP-c}1zk`8j2&DGJH?xdoXyi6xo&c?tzZ z`AIpcxy4orT$~{psS2671^GoKASHTfiNz(UMHRU@3dxCidHE#@NvR4jGf)&~C1xiU zl_b(ZS$JwvaB5LmPHG7j%M?oT6%rLnDhpD%I6X>A3P@HNlv-GtT1<k`L8-+B`FX{u z1RMi(h-*c1Y5_RVF~bvw+X-4wmROXTn3RL+W18!NBvRkRf`Zf{0)8h!DN>w~-~$pY zAVDd4Zb8vCDAE!MUM4{)ia!Zt0jj3ZK@p|{=6iaEG<kLniufTRA(Nn#3b8&KI^Y_5 z*p&!e3|tKSJPhm%0*nlz8a{~TS8z#DW?s5AsCmZklbM(5SDKrYS`-4Ruo)SIeDaeM zbHbn%I8>0OBqOt!kwMl6Pm|G_k%2WO-#xX2kwHhp2PIvCQ<ycX7$hfy9l-@}f)uke zNHQ`Aptnre8KfB*gux!j%-8qyhpXpckY!}bBcct7=^O$L1QZPrw-V5S?q~waNwI*c zNt1wQ5O$GJ3X!0cJb#m50SQXUatk8^TS|UFesKv0g90OC*^o?pB!m$OO34aN<USGc z?Q2E`j+A_t)ST3kR1OAZM#e)!G8*U@VB`feJ#~SrkATt=4hA(wMu#C8pCsfJ5|oma zN*Ec~Q}P26OOi7f8Q6<ci^?*SQ#ly47#X$<#gJuW;0n$!ElN&x%gjk-WDr3ct<nQE z4Hy}ugG%#CGILWs^U5-dGm~;s9YNzm-~pv#Mg|@q#4ru0tx}elQ<}=iAnKWyoS#>m zSzMBuSK^VGT9jCnoKeZnV8qD4jTG|i3?_^WLP!G8Q5kjyGe!ns6mdue%gDgvn^|0( znU@|?S&&-Hpvb_;z|6qFz{tSFz{<eJz`(%Hz{tSPz`?-Cz{$YCV8X!6z{tSBz_pu! zD^iGOI|JW-1_lNu20;b}1~#w^D}xXN0|O73&BY+hAObc`ltGMvi9sB!iitsjK?-gf z$To;+GFVI##cG-y5vIvwG0hsQX^KRcri8^bAFQUS5Mi1s7SoEbnx;;KY1n+)fYme& mB23f7;<l++Ok-xy2FJV(g8>5wn1fOU0}F#8gE50Cg9HF<q!7FS literal 4660 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 D%u^(% diff --git a/WEB-INF/classes/controleurs/IngredientRestAPI.class b/WEB-INF/classes/controleurs/IngredientRestAPI.class index 988dddf397f43b80c8c0477201f253a125d97c54..e3333149754052bc583ac81864a5dc229e05885a 100644 GIT binary patch literal 5078 zcmX^0Z`VEs1_oOOGj;|hMh4mB{JfH){G8O%qGEl|y!4{fl+4t;lAzS$62|~fb_Nzk z27#=^vPAuy#JqHU|D>$c<Pt^(!A!VH7e{}e%;FM825Fy^#C#+pTpayf5=#=35{px< z85!7YGV?M^>=+rCH8jH*8Cab2Q&QO(xEUGv5vIEq73CLkFz_;R+J@#8r55Msl%=L9 zB<JTAWacE6Waj576cptr<)r2oTPbjHhGe8FWabv+7nOjN=%pnVm!uX|<mM<OC+6kl zmnbBqD!|M@QJj^Somf<oIOLRtrzQob7M10smSAzZLP@?tqC!b!K`IxgM@dNm$tr_V z3rkarNiaGnwYVTZuQ-)}W1tRktw>HS07oHa?BH-aK?}+fi!u|Fa!`Ftb6t=u;G0-b zkXl5*?<6QiiZc>?K!OD%C?(G=D7pqkS|Y*ABq&AkCxI+L)f74?!gOT&o`hsVg3{42 zO)eQ6<tY_nVld=VE(R_JejWyP1_4F}Q4JqN11q?sC^IkJ8q@&e_sPsl^()OyN-YWj zRicaxLO%J)i8*1=N);-|Qj(Eb%*Y_`gSVMz&B(x-lJA~c!pNYb;e!&2;P9|U6@!$T zU}tc_8wSPf43dlt0_g1pb_Qui24S!lGV}F4{o(347-Sil@`z|BVmgOFwT+?y;#LAW z&>c-cIVl!UwF)8N8H8OVlwKq#CC}d^SU`eOvfRSRz?PC9kY8NF!Jxp%ST-aR9|>VZ zf>N@A6S=2Ce5;p{fg>f~B{e6tB$b0fnUPUpNJax)1B^8#KcKXPk%2uWKOnIrIfIdb zy*Ra~EHgQkgF%ClVareqK}H6y;QZ2}<W#rJoK!{zF^sVbJy4~=$RHh5npcvUo9dZY zmRX#cl#}WR8XW)+CloU>@c1CQ)u39eEHS4vm61WzGcP$muQ;=~BsH(ZBQv!qu_!sC zlAXbTk%1d2=GYmG7#W0+1facWb_Nqh24NI&NYTs4z~h@)T%4Jg9#UD5TFjuxz{tSN zz`(%Bz{J4Hz{bG9z|O$Pz|O$Iz{tSKz`$U_z|6qNz`($@n}I7*h-W(k-+l%L1||kU z1_lN;una4M5Ca1P517rxAj}{FHcga4jDd+k9IT3oL4rXFZW_ooh-ordOq0ZFnj8_P z$zw6i5vys6M3|<8#k4T2rl}BN8aB5TU^PvZOw-!2nx;mCY3f*fx(JJD%nX{~nAc*^ VV*mkDP^w^HVbEtVWH4rs003?eT)Y4P literal 4616 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 I#$tv&0MZ}^o&W#< diff --git a/WEB-INF/classes/controleurs/PizzasRestAPI.class b/WEB-INF/classes/controleurs/PizzasRestAPI.class index 890114179c6965f2838a5e6611cb3e5e4f18b844..b878c9bdba7b26ef96250bc0eda5b8039e151687 100644 GIT binary patch literal 5290 zcmX^0Z`VEs1_oOO3w8!3Mh3~`{JfH){G8O%qGJ7k%&Mxy;-J*x62|~fb_Nzk27#=^ zvPAuy#JqHU|D>$c<Pt^(&H}J17e{|a27aHE#C)hW7e{|<Mg}&U%)HDJJ4Oa(4b3n{ z1{UZ1lvH*GZbk-vgh{SNMfpV>47`jSe?s$$Qj7C*%2HDllJj#5GIJ73GV}8k3X1ZR za#C}PtrWO8Lo!koGII;^i%Jx-60;MFN)i>46Z7)&OB9k)6=1r_QI?#atCyBoT#{N; zk()y$GpXRh@YJN>)S|MS)DkRiQYgt+NK`1PEJ)?z^e8DQAX#NlYGG+=F$qQor4|?D z=M|?Ca111M_$C$<q!v+6DUufnx}z+yC^IoB2Q^@ZuddN(gq9oN9DyV9X%k4JsWMT4 zt^p1$<y<S0QwzZL17-z)Trdu^vWPZ`cr;9@UkQ>Hrd$kM4E#I{><j{o45Au7i1tx% zNl|8Ax;3c%#P5@tm+DuVo0M7<0;=2?8H9ZDlM{2opp_j|kfkIevzU=V+6QNA&YF>d zH6`CYwS<vDN5coD1OulpYg92voey>b7d+b)volCCG6;hmnwhWf=?|CTV31~Hd`U!O z4%1=+jRh195LXe<G0bv50YBp?hiR*ek%28GKOn!jgo8njk<ooL-XXOQg>k{iz>$*g zlA4oRlFGrL$jCT(aD*!<Igr8-K<?5E&Xzm46b&dXVP{ZbWDr0v?>QLM7#Yh3N3@~4 zZMc`3j1254`2mR~$r+3c?8T`?WtqvT91L2F3|od`d@wR_1?QI*C8xS&=A<$*2%(J3 z=z(frMh5Ai(!7$)+*HrJvdrSlq?}Yo(5MJ_0Hv6bfyW0ikN~Ru%Mx=+QyCdVJ@b<D z^NKTzOH%VnJTg;@5{r^ED%lx~7#X;caymPM2_u6Lk^pqvfStjNkwF+m98%RVGVu6j z78hscrH51&q!u$MGB7eQGcYhPGB7c)GO#f)Ft9T)GO#mnFfcN3GB7ZhFfcPPGB7Z3 z?PlPL6yn*=z_*`)fq{uZkb!}L4J^aVAjH7HzyoG;F$gn=fK3x+5My9s5NBXuU}0cn zkbs*7vI}CC6c)3@v6>}A&@5RjX4zmhOP-)v3RukY!)lfi+$=T*CI)4!zEs6xS}9i3 w)X6lh1&e7c3>rk3risOEGqIS)%%Ba9a~%c)1`sd@r3VHU215p822%!Q012|LNdN!< literal 4991 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 diff --git a/WEB-INF/src/controleurs/CommandeRestAPI.java b/WEB-INF/src/controleurs/CommandeRestAPI.java index 3876a07..7f6c54c 100644 --- a/WEB-INF/src/controleurs/CommandeRestAPI.java +++ b/WEB-INF/src/controleurs/CommandeRestAPI.java @@ -52,6 +52,7 @@ public class CommandeRestAPI extends HttpServlet{ else { ObjectMapper mapper = new ObjectMapper(); out.println(mapper.writeValueAsString(commandeDAO.findAll())); + response.setStatus(HttpServletResponse.SC_OK); } } @@ -67,8 +68,8 @@ public class CommandeRestAPI extends HttpServlet{ }else{ // sinon on l'ajoute à la base de données commandeDAO.save(commande); - out.println(mapper.writeValueAsString(commande)); response.setStatus(HttpServletResponse.SC_CREATED); + out.println(mapper.writeValueAsString(commande)); } } @@ -90,6 +91,7 @@ public class CommandeRestAPI extends HttpServlet{ // si la pizza {pizza} n'existe pas dans la commande {id}, on renvoie une erreur 404 if (commandeDAO.commandeFindPizza(id, pizza)) { commandeDAO.deleteCommandeDetail(id, pizza); + response.setStatus(HttpServletResponse.SC_OK); } else { response.sendError(HttpServletResponse.SC_NOT_FOUND); } @@ -103,6 +105,7 @@ public class CommandeRestAPI extends HttpServlet{ response.sendError(HttpServletResponse.SC_NOT_FOUND); } else { commandeDAO.deleteCommande(id); + response.setStatus(HttpServletResponse.SC_OK); } } } @@ -117,7 +120,7 @@ public class CommandeRestAPI extends HttpServlet{ response.sendError(HttpServletResponse.SC_NOT_FOUND); } else { commandeDAO.update(commande); - out.println(mapper.writeValueAsString(commande)); + doGet(request, response); } } @@ -137,8 +140,9 @@ public class CommandeRestAPI extends HttpServlet{ } else { commande.setId(id); commandeDAO.commandePatch(id, commande); - out.println(mapper.writeValueAsString(commande)); + response.setStatus(HttpServletResponse.SC_OK); + doGet(request, response); } } @Override diff --git a/WEB-INF/src/controleurs/IngredientRestAPI.java b/WEB-INF/src/controleurs/IngredientRestAPI.java index 99c991e..fc4f27a 100644 --- a/WEB-INF/src/controleurs/IngredientRestAPI.java +++ b/WEB-INF/src/controleurs/IngredientRestAPI.java @@ -57,6 +57,7 @@ public class IngredientRestAPI extends HttpServlet{ // si /ingrédients alors on renvoie la liste des ingrédients en JSON else { ObjectMapper mapper = new ObjectMapper(); + response.setStatus(HttpServletResponse.SC_OK); out.println(mapper.writeValueAsString(ingredientDAOList.findAll())); } } @@ -102,9 +103,7 @@ public class IngredientRestAPI extends HttpServlet{ ingredientDAOList.delete(id); //et renvoi un message is le json de l'ingrédient supprimé response.setStatus(HttpServletResponse.SC_OK); - - out.println("{}"); - + } } } @@ -125,14 +124,14 @@ public class IngredientRestAPI extends HttpServlet{ } else { //sinon on le met à jour ingredientDAOList.update(ingredient); - //et renvoi un message is updated + response.setStatus(HttpServletResponse.SC_OK); out.println(mapper.writeValueAsString(ingredient)); + } } - // fait un update sur un ingrédient existant en modifiant la colonne fournie dans le body de la requête au format JSON public void doPatch(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/json; charset=UTF-8"); //récupère le corps de la requête @@ -151,7 +150,7 @@ public class IngredientRestAPI extends HttpServlet{ } else { //sinon on le met à jour ingredientDAOList.patch(id,ingredient); - //et renvoi un message is updated + response.setStatus(HttpServletResponse.SC_OK); doGet(request, response); } diff --git a/WEB-INF/src/controleurs/PizzasRestAPI.java b/WEB-INF/src/controleurs/PizzasRestAPI.java index cb5c37f..e353e12 100644 --- a/WEB-INF/src/controleurs/PizzasRestAPI.java +++ b/WEB-INF/src/controleurs/PizzasRestAPI.java @@ -51,6 +51,7 @@ public class PizzasRestAPI extends HttpServlet{ } } else { List<Pizza> pizzas = pizzasDAO.findAll(); + response.setStatus(HttpServletResponse.SC_OK); out.println(mapper.writeValueAsString(pizzas)); } } @@ -64,6 +65,7 @@ public class PizzasRestAPI extends HttpServlet{ if (pizzasDAO.findByName(pizza.getNom()) != null){ response.sendError(HttpServletResponse.SC_CONFLICT); + }else { pizzasDAO.save(pizza); out.println(mapper.writeValueAsString(pizza)); @@ -90,7 +92,6 @@ public class PizzasRestAPI extends HttpServlet{ } else{ pizzasDAO.deletePizzaIngredient(nom, id); - out.println("La relation entre la pizza et l'ingrédient a été supprimée"); response.setStatus(HttpServletResponse.SC_OK); } } else { @@ -102,7 +103,7 @@ public class PizzasRestAPI extends HttpServlet{ String nom = pathInfo.substring(1); if (pizzasDAO.findByName(nom) != null){ pizzasDAO.delete(nom); - out.println("La pizza a été supprimée"); + response.setStatus(HttpServletResponse.SC_OK); } else { response.sendError(HttpServletResponse.SC_NOT_FOUND); } @@ -120,8 +121,8 @@ public class PizzasRestAPI extends HttpServlet{ PizzaCompo pizza = mapper.readValue(request.getReader(), PizzaCompo.class); if (pizzasDAO.findByName(pizza.getNom()) != null){ pizzasDAO.update(pizza); - out.println(mapper.writeValueAsString(pizza)); response.setStatus(HttpServletResponse.SC_OK); + doGet(request, response); } else { response.sendError(HttpServletResponse.SC_NOT_FOUND); } @@ -140,8 +141,8 @@ public class PizzasRestAPI extends HttpServlet{ if( pizzasDAO.findByName(nom) != null){ pizzasDAO.patchPizza(nom, pizza); - out.println(mapper.writeValueAsString(pizza)); response.setStatus(HttpServletResponse.SC_OK); + doGet(request, response); } else { response.sendError(HttpServletResponse.SC_NOT_FOUND); } diff --git a/pizzeria Antoine GAIENIER.zip b/pizzeria Antoine GAIENIER.zip new file mode 100644 index 0000000000000000000000000000000000000000..d200e54deadd790c84a2f17acf7e40fd565cf355 GIT binary patch literal 53552 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 HfQ|tG@;$}N literal 0 HcmV?d00001 diff --git a/WEB-INF/pizzeria.sql b/pizzeria.sql similarity index 95% rename from WEB-INF/pizzeria.sql rename to pizzeria.sql index 5a7a403..6e30f86 100644 --- a/WEB-INF/pizzeria.sql +++ b/pizzeria.sql @@ -1,17 +1,17 @@ +/* Suppression des tables si elles existent*/ Drop table if exists commande_detail cascade; Drop table if exists commandes cascade; Drop table if exists pizzas_ingredients cascade; - Drop table if exists pizzas cascade; Drop table if exists ingredients cascade; +/* Création des tables */ CREATE TABLE ingredients( id int primary key, name text, price double precision ); - CREATE TABLE pizzas( nom text primary key, pate text, @@ -26,16 +26,12 @@ CREATE TABLE pizzas_ingredients( primary key (nom,id) ); - - CREATE TABLE commandes( id int primary key, nom text, date date ); - - CREATE table commande_detail( id int, nom text, @@ -45,7 +41,6 @@ CREATE table commande_detail( ); /* Insertion des données */ - insert into ingredients values (1,'pomme de terre',1); insert into ingredients values (3,'chorizo',2); insert into ingredients values (4,'lardons',2); @@ -57,13 +52,11 @@ insert into ingredients values (8,'chevre',1.25); insert into ingredients values (9,'mozzarella',0.75); insert into ingredients values (2,'crème',2); - insert into pizzas values ('3fromages','classique',3.25); insert into pizzas values ('4fromages','classique',3.75); insert into pizzas values ('5fromages','fine',10); insert into pizzas values ('6fromages','fine',10); - insert into pizzas_ingredients values ('3fromages',10); insert into pizzas_ingredients values ('3fromages',7); insert into pizzas_ingredients values ('3fromages',8); @@ -77,24 +70,13 @@ insert into pizzas_ingredients values ('4fromages',8); insert into pizzas_ingredients values ('4fromages',7); insert into pizzas_ingredients values ('4fromages',10); - insert into commandes values (1,'jean machin','2024-04-01'); insert into commandes values (2,'jean truc','2024-04-01'); insert into commandes values (3,'jean bidule','2024-04-01'); - insert into commande_detail values (1,'3fromages'); insert into commande_detail values (1,'4fromages'); insert into commande_detail values (2,'3fromages'); insert into commande_detail values (2,'4fromages'); insert into commande_detail values (2,'6fromages'); -insert into commande_detail values (3,'3fromages'); - - - - - - - - - +insert into commande_detail values (3,'3fromages'); \ No newline at end of file -- GitLab