# app/schemas/event_theme.py from typing import Dict, Optional from uuid import UUID # Add this import from pydantic import BaseModel, Field, validator, field_validator class EventThemeBase(BaseModel): name: str = Field(..., min_length=1) # Ensures name is not empty description: Optional[str] = None preview_image_url: Optional[str] = None color_palette: Dict[str, str] = Field(..., min_items=1) # Ensures at least one color fonts: Dict[str, str] = Field(..., min_items=1) # Ensures at least one font @field_validator('color_palette') def validate_color_palette(cls, v): if not v: raise ValueError("color_palette cannot be empty") return v @field_validator('fonts') def validate_fonts(cls, v): if not v: raise ValueError("fonts cannot be empty") return v class EventThemeCreate(EventThemeBase): pass class EventThemeUpdate(EventThemeBase): name: Optional[str] = None color_palette: Optional[Dict[str, str]] = None fonts: Optional[Dict[str, str]] = None # Move EventThemeInDBBase before EventThemeResponse class EventThemeInDBBase(EventThemeBase): id: UUID # Changed from str to UUID to match the model class Config: from_attributes = True # Now EventThemeResponse can properly inherit from EventThemeInDBBase class EventThemeResponse(EventThemeInDBBase): pass class EventTheme(EventThemeInDBBase): pass