"""
Document schemas for API requests and responses.
"""
from typing import Optional
from pydantic import BaseModel, Field
from datetime import datetime

from app.models.document import DocumentType


class DocumentBase(BaseModel):
    """Base document schema."""
    document_type: DocumentType
    description: Optional[str] = Field(None, max_length=500)


class DocumentCreate(DocumentBase):
    """Schema for creating a document (metadata only, file handled separately)."""
    client_id: int
    file_name: str
    file_path: str
    file_size: int
    mime_type: str


class DocumentUpdate(BaseModel):
    """Schema for updating document metadata."""
    document_type: Optional[DocumentType] = None
    description: Optional[str] = Field(None, max_length=500)
    is_verified: Optional[bool] = None


class DocumentResponse(DocumentBase):
    """Schema for document response."""
    id: int
    client_id: int
    file_name: str
    file_path: str
    file_size: int
    mime_type: str
    is_verified: bool
    verified_by_id: Optional[int] = None
    created_at: datetime
    updated_at: datetime

    class Config:
        from_attributes = True


class DocumentUploadResponse(BaseModel):
    """Response after successful upload."""
    document: DocumentResponse
    message: str
    download_url: str
