Feat: add response error when tribe already exists

This commit is contained in:
2022-12-29 07:23:02 +01:00
parent ccf1655cf4
commit febe686688
3 changed files with 51 additions and 2 deletions

View File

@@ -1,13 +1,17 @@
import sqlite3
from fastapi import FastAPI, status
from fastapi.responses import JSONResponse
from backend.adapters.sqlite import create_db
from backend.api.model import StudentModel, TribeModel
from backend.model.student import Student
from backend.model.tribe import Tribe
from backend.repository.student_sqlite_repository import StudentSQLiteRepository
from backend.repository.tribe_sqlite_repository import TribeSQLiteRepository
from backend.repository.tribe_sqlite_repository import (
TribeRepositoryError,
TribeSQLiteRepository,
)
# from sqlalchemy import create_engine
# from sqlalchemy.orm import clear_mappers, sessionmaker
@@ -33,7 +37,13 @@ app = FastAPI()
async def post_tribe(item: TribeModel):
tribe = Tribe(**item.dict())
tribe_repo.add(tribe)
try:
tribe_repo.add(tribe)
except TribeRepositoryError:
return JSONResponse(
status_code=status.HTTP_409_CONFLICT,
content=f"The tribe {tribe.name} already exists",
)
conn.commit()
return tribe.to_dict()

View File

@@ -2,11 +2,21 @@ from backend.model.tribe import Tribe
from backend.repository.abstract_repository import AbstractRepository
class TribeRepositoryError(Exception):
pass
class TribeSQLiteRepository(AbstractRepository):
def __init__(self, conn) -> None:
self.conn = conn
def add(self, tribe: Tribe) -> None:
tribes = self.list()
if tribe.name in map(lambda x: x.name, tribes):
raise TribeRepositoryError(
f"The tribe {tribe.name} already exists. Can't add it"
)
self.conn.execute(
"""
INSERT INTO tribes(name, level) VALUES (?, ?)