from typing import List
from pydantic import BaseModel, Field
from typing import Optional
from decimal import Decimal
from datetime import datetime
from src.apps.base.schemas.common import BaseSchema
from src.apps.base.schemas.country import CountryOutSchema
# from src.apps.wine.retailer.schemas.retailer_wine import RetailerWineOutputSchema
from src.utils.constants import MAX_PER_PAGE,DEFAULT_PER_PAGE

class RetailerSchema(BaseSchema):
    code: Optional[str] = None
    name: Optional[str] = None
    email: Optional[str] = None
    web_url: Optional[str] = None
    address: Optional[str] = None
    address_extended: Optional[str] = None
    postal_code: Optional[str] = None
    city: Optional[str] = None
    state: Optional[str] = None
    phone: Optional[str] = None
    ship_to: Optional[str] = None
    active: Optional[bool] = True


class RetailerCreateSchema(RetailerSchema):
    literal: Optional[str] = None
    country_id: Optional[int] = None

    
class RetailerUpdateSchema(RetailerSchema):
    deleted_at: Optional[datetime] = None
    country_id: Optional[int] = None
    
class RetailerOutputSchema(RetailerSchema):
    id: Optional[int] = None
    literal: Optional[str] = None
    country: Optional[CountryOutSchema] = None
    # retailer_wines: Optional[List[RetailerWineOutputSchema]] = None  
    date_created: Optional[datetime] = None
    last_updated: Optional[datetime] = None
    