From d6f29b98a6d202bfea31a636ac958aa2eae8ea32 Mon Sep 17 00:00:00 2001 From: Augusto Gunsch Date: Mon, 18 Oct 2021 17:59:57 -0300 Subject: [PATCH] Adicionar endpoint: DELETE /../pokemon/{pokemonId} --- README.md | 2 +- api/routes/routes.py | 11 +++++++++-- api/views/pokemon_owned.py | 12 ++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9b931f8..557e8d7 100644 --- a/README.md +++ b/README.md @@ -23,4 +23,4 @@ Os endpoints que já estão funcionando marcados: - [X] GET /trainer/{trainerId}/pokemon - [X] POST /trainer/{trainerId}/pokemon - [X] GET /trainer/{trainerId}/pokemon/{pokemonId} -- [ ] DELETE /trainer/{trainerId}/pokemon/{pokemonId} +- [X] DELETE /trainer/{trainerId}/pokemon/{pokemonId} diff --git a/api/routes/routes.py b/api/routes/routes.py index 781099b..d1a35eb 100644 --- a/api/routes/routes.py +++ b/api/routes/routes.py @@ -7,11 +7,11 @@ import asyncio def route_get_trainer(trainerId): return trainer.get_trainer(trainerId) -@app.route("/trainer", methods=["GET"]) +@app.route("/trainer/", methods=["GET"]) def route_get_trainers(): return trainer.get_trainers() -@app.route("/trainer", methods=["POST"]) +@app.route("/trainer/", methods=["POST"]) def route_create_trainer(): return trainer.post_trainer() @@ -33,3 +33,10 @@ def route_post_pokemons_owned(trainer, trainerId): @app.route("/trainer//pokemon/", methods=["GET"]) def route_get_pokemon_owned(trainerId, pokemonId): return pokemon_owned.get_pokemon_owned(trainerId, pokemonId) + +@app.route("/trainer//pokemon/", methods=["DELETE"]) +@helper.token_required +def route_delete_pokemon_owned(trainer, trainerId, pokemonId): + if trainer.id != trainerId: + return errors.ForbiddenError("Trainer id mismatch") + return pokemon_owned.delete_pokemon_owned(trainer, pokemonId) diff --git a/api/views/pokemon_owned.py b/api/views/pokemon_owned.py index 58d4642..40d26cb 100644 --- a/api/views/pokemon_owned.py +++ b/api/views/pokemon_owned.py @@ -73,3 +73,15 @@ def get_pokemon_owned(trainer_id, pokemon_id): return "", 404 except HTTPError as e: return FetchError(e.message) + +def delete_pokemon_owned(trainer, pokemon_id): + try: + pokemon = get_pokemon_fail(trainer, pokemon_id) + set_pokemon_data(pokemon) + db.session.delete(pokemon) + db.session.commit() + return pokemon_owned_schema.dump(pokemon) + except NotFound: + return "", 404 + except HTTPError as e: + return FetchError(e.message)