from typing import Literal, Optional
from pydantic import Field
from app.utils.schemas_utils import CustomModel

class StoreFormateCreate(CustomModel):
    store_name: str     
    store_name_rationale: str
    store_size: float 
    merchandise: str 
    # pricing_strategy: str 
    location: str 
    additional_location_parameters: str 
    service_parameters: str 
    technology_adoption: str 
    other_parameters: str 
    group_id: int 
    
class StoreFormateCreate11(CustomModel):
    store_name: str
    store_name_rationale: str
    store_size: float
    merchandise: Literal['Low', 'Medium', 'High'] 
    location: Literal['High Street', 'Mall']
    additional_location_parameters: str
    service_parameters: Literal['High', 'Medium', 'Low']
    technology_adoption: Literal['High', 'Medium', 'Low']
    store_format_type: Literal['Store Format A','Store Format B']
    other_parameters: str
    group_id: int
   
class StoreFormateUpdate(StoreFormateCreate11):
    # store_id: int 
    pass
    
class StoreFormateResponse(CustomModel):
    store_name: str     
    store_name_rationale: str | None = Field(default=None)
    store_size: float | None =  Field(default=None)
    merchandise: str | None = Field(default=None)
    # pricing_strategy: str | None = Field(default=None)
    location: str | None = Field(default=None)
    additional_location_parameters: str | None = Field(default=None)
    service_parameters: str | None = Field(default=None)
    technology_adoption: str | None = Field(default=None)
    other_parameters: str | None = Field(default=None)



class StoreFormateCreates(CustomModel):
    store_name: str
    store_name_rationale: str
    store_size: float
    merchandise: Literal['High', 'Medium', 'Low']
    # pricing_strategy: Literal['Everyday Low Price', 'High-Low', 'Subscription']
    location: Literal['High Street', 'Mall']
    additional_location_parameters: Optional[str] = None
    service_parameters: Literal['High', 'Medium', 'Low']
    technology_adoption: Literal['High', 'Medium', 'Low']
    other_parameters: str
    group_id: int

    
# class StoreFormatResponse11(StoreFormateCreate11):
#     store_id: int 


class StoreFormateRes(CustomModel):
    store_id: int | None = Field(default=None) 
    store_name_rationale: str  | None = Field(default=None)
    store_name: str | None = Field(default=None)
    store_size: float | None = Field(default=None)
    merchandise: str | None = Field(default=None)
    # pricing_strategy: str | None = Field(default=None)
    location: str | None = Field(default=None) 
    additional_location_parameters: str | None = Field(default=None)
    service_parameters: str | None = Field(default=None)
    technology_adoption: str | None = Field(default=None)
    other_parameters: str | None = Field(default=None)
    store_format_type: str | None = Field(default=None)
    upload_store_layout : str | None = Field(default=None)
    group_id: int | None = Field(default=None) 