from pydantic import BaseModel, Field, ConfigDict from typing import Optional from datetime import datetime # FILE class FileSchema(BaseModel): id: str = Field(..., title="id") filename: str = Field(..., title="filename") type: str = Field(..., title="type") filesize_kb: float = Field(..., title="filesize_kb") source: str = Field(..., title="source") status: str = Field(..., title="status") service: Optional[str] = Field(None, title="service") date_created: datetime = Field(..., title="date_created") date_modified: datetime = Field(..., title="date_modified") # This enables ORM mode model_config = ConfigDict(from_attributes=True) # CREATE # REQUEST class CreateFileRequest(BaseModel): source: str = Field(..., title="source") type: str = Field(..., title="type") # optional service: Optional[str] = Field(None, title="Service") filename: Optional[str] = Field(None, title="Filename") # RESPONSE class CreateFileResponse(BaseModel): status_code: int = Field(..., title="status_code") success: bool = Field(..., title="success") files: list[FileSchema] = Field(..., title="files") # GET # RESPONSE class GetFileResponse(BaseModel): status_code: int = Field(..., title="status_code") success: bool = Field(..., title="success") files: list[FileSchema] = Field(..., title="files") # QUERY PARAMS class GetFileQueryParams(BaseModel): status: Optional[str] = Field(None, title="status") # DELETE # RESPONSE class DeleteFileResponse(BaseModel): status_code: int = Field(..., title="status_code") success: bool = Field(..., title="success") files: list[FileSchema] = Field(..., title="files")