Add service model, route, and logic
This commit is contained in:
parent
4fc1f58f30
commit
e72ec07c45
4 changed files with 108 additions and 1 deletions
43
app/logic/service_logic.py
Normal file
43
app/logic/service_logic.py
Normal file
|
|
@ -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,
|
||||||
|
)
|
||||||
|
|
@ -4,7 +4,7 @@ from fastapi import FastAPI
|
||||||
|
|
||||||
from app.config import settings
|
from app.config import settings
|
||||||
from app.database import create_database
|
from app.database import create_database
|
||||||
from app.routers import project_route
|
from app.routers import project_route, service_route
|
||||||
|
|
||||||
|
|
||||||
@asynccontextmanager
|
@asynccontextmanager
|
||||||
|
|
@ -23,3 +23,4 @@ app = FastAPI(
|
||||||
|
|
||||||
|
|
||||||
app.include_router(project_route.router)
|
app.include_router(project_route.router)
|
||||||
|
app.include_router(service_route.router)
|
||||||
|
|
|
||||||
13
app/models/service.py
Normal file
13
app/models/service.py
Normal file
|
|
@ -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
|
||||||
50
app/routers/service_route.py
Normal file
50
app/routers/service_route.py
Normal file
|
|
@ -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)
|
||||||
Loading…
Reference in a new issue