Introduced CRUD implementation, schema definitions, and tests for EventTheme. This allows creation, retrieval, updating, deletion, and querying of active event themes. Comprehensive tests ensure functionality works as intended, including edge cases for nonexistent themes.
25 lines
797 B
Python
25 lines
797 B
Python
from typing import List, Optional
|
|
from sqlalchemy.orm import Session
|
|
|
|
from app.crud.base import CRUDBase
|
|
from app.models.event_theme import EventTheme
|
|
from app.schemas.event_theme import EventThemeCreate, EventThemeUpdate
|
|
|
|
|
|
class CRUDEventTheme(CRUDBase[EventTheme, EventThemeCreate, EventThemeUpdate]):
|
|
def get_by_name(self, db: Session, *, name: str) -> Optional[EventTheme]:
|
|
return db.query(EventTheme).filter(EventTheme.name == name).first()
|
|
|
|
def get_active_themes(
|
|
self, db: Session, *, skip: int = 0, limit: int = 100
|
|
) -> List[EventTheme]:
|
|
return (
|
|
db.query(self.model)
|
|
.filter(self.model.events.any())
|
|
.offset(skip)
|
|
.limit(limit)
|
|
.all()
|
|
)
|
|
|
|
|
|
event_theme = CRUDEventTheme(EventTheme) |