from pydantic import BaseModel, Field from datetime import datetime from typing import Optional, Dict, Any class ApplicationTheme(BaseModel): primary_color: str = "#1976d2" secondary_color: str = "#dc004e" background_color: str = "#ffffff" text_color: str = "#000000" logo_url: Optional[str] = None background_image_url: Optional[str] = None font_family: str = "Roboto, sans-serif" border_radius: str = "8px" custom_css: Optional[str] = None class ApplicationBase(BaseModel): app_name: str description: str redirect_uris: list[str] allowed_origins: list[str] theme: ApplicationTheme = ApplicationTheme() is_active: bool = True allow_registration: bool = True require_email_verification: bool = False class ApplicationCreate(ApplicationBase): pass class ApplicationUpdate(BaseModel): app_name: Optional[str] = None description: Optional[str] = None redirect_uris: Optional[list[str]] = None allowed_origins: Optional[list[str]] = None theme: Optional[ApplicationTheme] = None is_active: Optional[bool] = None allow_registration: Optional[bool] = None require_email_verification: Optional[bool] = None class ApplicationInDB(ApplicationBase): id: str = Field(alias="_id") client_id: str client_secret: str created_at: datetime updated_at: datetime created_by: str class Config: populate_by_name = True class Application(ApplicationBase): id: str client_id: str created_at: datetime updated_at: datetime