diff --git a/app/logic/service_logic.py b/app/logic/service_logic.py new file mode 100644 index 0000000..d7e7fe8 --- /dev/null +++ b/app/logic/service_logic.py @@ -0,0 +1,43 @@ +from app.database import ( + add_to_database, + delete_from_database_where, + get_from_database, + get_from_database_where_id, + update_database_where, +) +from app.models.service import Service + + +def get_all(): + return get_from_database(Service) + + +def get_by_id(service_id: int): + return get_from_database_where_id(Service, service_id) + + +def create(service: Service): + add_to_database(service) + return service + + +def update( + service_id: int, + update_attribute: str, + new_value: int | str | None, +): + return update_database_where( + Service, + Service.id, + service_id, + update_attribute, + new_value, + ) + + +def delete(service_id: int): + return delete_from_database_where( + Service, + Service.id, + service_id, + ) diff --git a/app/main.py b/app/main.py index c209240..186eed0 100644 --- a/app/main.py +++ b/app/main.py @@ -4,7 +4,7 @@ from fastapi import FastAPI from app.config import settings from app.database import create_database -from app.routers import project_route +from app.routers import project_route, service_route @asynccontextmanager @@ -23,3 +23,4 @@ app = FastAPI( app.include_router(project_route.router) +app.include_router(service_route.router) diff --git a/app/models/service.py b/app/models/service.py new file mode 100644 index 0000000..6572d05 --- /dev/null +++ b/app/models/service.py @@ -0,0 +1,13 @@ +from sqlmodel import Field, SQLModel + + +class Service(SQLModel, table=True): + id: int | None = Field(default=None, primary_key=True) + + title: str + + description: str | None = Field(default=None) + + priority: int + + link: str diff --git a/app/routers/service_route.py b/app/routers/service_route.py new file mode 100644 index 0000000..63dd176 --- /dev/null +++ b/app/routers/service_route.py @@ -0,0 +1,50 @@ +from fastapi import APIRouter + +from app.logic.service_logic import ( + create, + delete, + get_all, + get_by_id, + update, +) +from app.models.service import Service + +router = APIRouter(prefix="/services", tags=["services"]) + + +@router.get("/") +def get_default(): + return {"message": "Root for Services API"} + + +@router.get("/all") +def get_all_services(): + return get_all() + + +@router.get("/{service_id}") +def get_service_by_id(service_id: int): + return get_by_id(service_id) + + +@router.post("/") +def create_service(service: Service): + return create(service) + + +@router.put("/{service_id}") +def update_service( + service_id: int, + update_attribute: str, + new_value: str | int | None, +): + return update( + service_id, + update_attribute, + new_value, + ) + + +@router.delete("/{service_id}") +def delete_service(service_id: int): + return delete(service_id)