from datetime import datetime
from decimal import Decimal
from typing import List, Optional

from pydantic import BaseModel, Field, computed_field
from src.apps.base.schemas.common import BaseSchema
from src.apps.match.schemas.match_input import (
    MatchInput,  # Assuming it's already defined
)

from src.utils.constants import DEFAULT_PER_PAGE, MAX_PER_PAGE
from src.apps.files.schemas.file import FileResponseSchema
from src.utils.enums import ExportDataTypes

class DownloadFilesSchema(BaseSchema):
    file_id: Optional[int] = None
    file_type: Optional[str] = None
    
class DownloadFilesCreateSchema(DownloadFilesSchema):
    pass

class DownloadFilesUpdateSchema(DownloadFilesSchema):
    pass

class DownloadFilesOutputSchema(DownloadFilesSchema):
    id: Optional[int] = None
    created_at: Optional[datetime] = None
    updated_at: Optional[datetime] = None
    file: Optional[FileResponseSchema] = None
    
class ExportDataFilterSchema(BaseSchema):
    type: Optional[str] = Field(
        None,
        example="WINE_DATABASE",
        description="Type of export data to filter by. Example: 'WINE_KEYWORD'."
    )