from datetime import datetime from pydantic import BaseModel, Field, HttpUrl class RemoteMountCreate(BaseModel): name: str = Field(..., min_length=1, max_length=255) base_url: HttpUrl username: str | None = Field(default=None, max_length=255) password: str | None = Field(default=None, max_length=2000) root_path: str = Field(default="/", min_length=1, max_length=1000) class RemoteMountOut(BaseModel): id: str name: str mount_type: str base_url: str username: str | None root_path: str is_active: bool last_sync_at: str | None created_at: datetime updated_at: datetime model_config = {"from_attributes": True} class RemoteNodeOut(BaseModel): path: str name: str is_dir: bool size: int | None = None modified_at: str | None = None etag: str | None = None children: list["RemoteNodeOut"] = [] class RemoteMountTreeOut(BaseModel): mount_id: str root_path: str nodes: list[RemoteNodeOut] class RemoteSyncRequest(BaseModel): remote_path: str = Field(..., min_length=1, max_length=2000) local_folder_id: str = Field(..., min_length=1, max_length=36) mode: str = Field(default="file", pattern="^(file|folder)$") class RemoteSyncResultOut(BaseModel): synced: int skipped: int failed: int document_ids: list[str] errors: list[str] RemoteNodeOut.model_rebuild()