Add service model, route, and logic

This commit is contained in:
Hannah dagemark 2026-08-09 15:18:43 +02:00
commit e72ec07c45
4 changed files with 108 additions and 1 deletions

View 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,
)

View file

@ -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)

13
app/models/service.py Normal file
View 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

View 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)