Feat: add put and delete path to api

This commit is contained in:
2022-12-30 13:29:43 +01:00
parent 3b98a881e7
commit f3302e2132
3 changed files with 101 additions and 8 deletions

View File

@@ -1,7 +1,7 @@
import sqlite3
from fastapi import FastAPI, status
from fastapi.responses import JSONResponse
from fastapi.responses import JSONResponse, Response
from backend.adapters.sqlite import create_db
from backend.api.model import StudentModel, TribeModel
@@ -37,21 +37,50 @@ app = FastAPI()
@app.post("/tribes", status_code=status.HTTP_201_CREATED, response_model=TribeModel)
async def post_tribe(item: TribeModel):
tribe = Tribe(**item.dict())
try:
services.add_tribe(
tribe = services.add_tribe(
name=item.name, level=item.level, tribe_repo=tribe_repo, conn=conn
)
except TribeExists:
return JSONResponse(
status_code=status.HTTP_409_CONFLICT,
content=f"The tribe {tribe.name} already exists",
content=f"The tribe {item.name} already exists",
)
return tribe.to_dict()
@app.put("/tribes/{name}", status_code=status.HTTP_200_OK, response_model=TribeModel)
async def put_tribe(name: str, item: TribeModel):
try:
tribe = services.update_tribe(
name=item.name, level=item.level, tribe_repo=tribe_repo, conn=conn
)
except TribeDoesNotExist:
return JSONResponse(
status_code=status.HTTP_409_CONFLICT,
content=f"The tribe {name} does not exists",
)
return tribe.to_dict()
@app.delete("/tribes/{name}")
async def delete_tribe(name: str):
try:
services.delete_tribe(name=name, tribe_repo=tribe_repo, conn=conn)
except TribeDoesNotExist:
return JSONResponse(
status_code=status.HTTP_409_CONFLICT,
content=f"The tribe {name} does not exists",
)
return Response(
status_code=status.HTTP_204_NO_CONTENT,
)
@app.get("/tribes", response_model=list[TribeModel])
async def list_tribes():
tribes = tribe_repo.list()