Files
eventspace/backend/app/api/routes/event_themes.py
Felipe Cardoso 5c73f2720e Add event routes and enhance routing structure
Introduced routes for event management, including CRUD operations and querying by user or public visibility. Updated event themes routes with operation IDs for better documentation. Refactored `api/main.py` to `api/router.py` and integrated events routing into the API.
2025-03-05 18:57:24 +01:00

69 lines
2.0 KiB
Python

# 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_themes import EventThemeCreate, EventThemeResponse, EventThemeUpdate
router = APIRouter()
@router.post("/", response_model=EventThemeResponse, operation_id="create_event_theme")
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], operation_id="list_event_themes")
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, operation_id="get_event_theme")
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, operation_id="update_event_theme")
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