from pydantic import BaseModel, Field from typing import Optional from datetime import datetime class SyncConfigBase(BaseModel): webdav_url: Optional[str] = None webdav_username: Optional[str] = None webdav_password: Optional[str] = None webdav_path: str = "/elysia-todo/" auto_sync: bool = False auto_sync_interval: int = Field(default=300, ge=60) class SyncConfigUpdate(SyncConfigBase): webdav_url: Optional[str] = None webdav_username: Optional[str] = None webdav_password: Optional[str] = None class SyncConfigResponse(BaseModel): webdav_url: Optional[str] = None webdav_username: Optional[str] = None webdav_password: Optional[str] = None webdav_path: str = "/elysia-todo/" sync_enabled: bool = False auto_sync: bool = False auto_sync_interval: int = 300 last_sync_at: Optional[datetime] = None last_sync_version: int = 0 class Config: from_attributes = True class SyncStatusResponse(BaseModel): syncing: bool last_sync_at: Optional[datetime] = None last_sync_version: int = 0 sync_enabled: bool = False class SyncTestResponse(BaseModel): success: bool message: str class SyncOperationResponse(BaseModel): success: bool message: str