from pydantic import BaseModel
from typing import Optional, Dict, List
from datetime import datetime
from src.apps.match.enums import WineDbStatus, SourceEnum

class WineDbBase(BaseModel):
    id: str
    name: Optional[str]
    color: Optional[str]
    type: Optional[str]
    sweetness: Optional[str]
    variety: Optional[str]
    note: Optional[str]
    wine_country: Optional[str]
    wine_region: Optional[str]
    wine_location: Optional[str]
    wine_locale: Optional[str]
    wine_site: Optional[str]
    wine_n_id: Optional[str]
    source: Optional[SourceEnum]
    status: Optional[WineDbStatus]

class WineDbOut(WineDbBase):
    date_created: Optional[datetime]
    last_updated: Optional[datetime]
    display_name: Optional[str]
    description: Optional[str]

    class Config:
        orm_mode = True


# Data models
class RetailerItem(BaseModel):
    code: str
    run_keyword: Optional[bool] = None
    date: Optional[str] = None

class RetailersRequest(BaseModel):
    matched_type: Optional[str] = None
    clients: Dict[str, RetailerItem]
    mode: Optional[str] = None

class DataResult(BaseModel):
    success: bool = True
    errors: List[str] = []
