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:
@@ -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"])
|
||||
|
||||
68
backend/app/api/routes/event_themes.py
Normal file
68
backend/app/api/routes/event_themes.py
Normal 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
|
||||
0
backend/app/api/routes/events/__init__.py
Normal file
0
backend/app/api/routes/events/__init__.py
Normal file
Reference in New Issue
Block a user