Add event themes API routes for CRUD operations

Implemented API endpoints for creating, reading, updating, and listing event themes. Integrated the new routes into the FastAPI application router under the '/event_themes' prefix.
This commit is contained in:
2025-03-05 12:42:00 +01:00
parent 6884cbbf64
commit b3a4c45202
3 changed files with 70 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
from fastapi import APIRouter
from app.api.routes import auth
from app.api.routes import event_themes
api_router = APIRouter()
api_router.include_router(auth.router, prefix="/auth", tags=["auth"])
api_router.include_router(event_themes.router, prefix="/event_themes", tags=["event_themes"])

View File

@@ -0,0 +1,68 @@
# app/api/v1/themes/router.py
from typing import List
from uuid import UUID
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
from app.core.database import get_db
from app.crud.event_theme import event_theme
from app.schemas.event_theme import EventThemeCreate, EventThemeResponse, EventThemeUpdate
router = APIRouter()
@router.post("/", response_model=EventThemeResponse)
def create_theme(
*,
db: Session = Depends(get_db),
theme_in: EventThemeCreate
) -> EventThemeResponse:
"""Create new event theme."""
theme = event_theme.create(db, obj_in=theme_in)
print(theme)
return theme
@router.get("/", response_model=List[EventThemeResponse])
def list_themes(
db: Session = Depends(get_db),
skip: int = 0,
limit: int = 100
) -> List[EventThemeResponse]:
"""List event themes."""
themes = event_theme.get_multi(db, skip=skip, limit=limit)
return themes
@router.get("/{theme_id}", response_model=EventThemeResponse)
def get_theme(
*,
db: Session = Depends(get_db),
theme_id: UUID
) -> EventThemeResponse:
"""Get specific theme by ID."""
theme = event_theme.get(db, id=theme_id)
if not theme:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Theme not found"
)
return theme
@router.patch("/{theme_id}", response_model=EventThemeResponse)
def update_theme(
*,
db: Session = Depends(get_db),
theme_id: UUID,
theme_in: EventThemeUpdate
) -> EventThemeResponse:
"""Update specific theme by ID."""
theme = event_theme.get(db, id=theme_id)
if not theme:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Theme not found"
)
theme = event_theme.update(db, db_obj=theme, obj_in=theme_in)
return theme