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 fastapi import APIRouter
|
||||||
|
|
||||||
from app.api.routes import auth
|
from app.api.routes import auth
|
||||||
|
from app.api.routes import event_themes
|
||||||
api_router = APIRouter()
|
api_router = APIRouter()
|
||||||
api_router.include_router(auth.router, prefix="/auth", tags=["auth"])
|
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