from pydantic import BaseModel, Field
from datetime import datetime
from typing import List, Optional

class BranchCreate(BaseModel):
    branch_name: str = Field(..., min_length=1, max_length=100)
    address: str = Field(..., min_length=5)
    contact_info: str = Field(..., min_length=10, max_length=20)

class StoreCreate(BaseModel):
    name: str = Field(..., min_length=1)
    storetype_id:int
    branch_limit:int = 2
    branches: List[BranchCreate]

class BranchResponse(BaseModel):
    branch_id: int
    store_id: int
    branch_name: str
    address: str
    contact_info: str
    created_at: datetime
    updated_at: datetime   
    user_id: int 

class StoreResponse(BaseModel):
    store_id: int
    name: str
    branch_limit: int
    user_id: int
    created_at: datetime
    updated_at: datetime
    branches: List[BranchResponse]
    
    
class StoreUpdate(BaseModel):
    new_name: Optional[str] = None  # Name update is optional
    branch_limit: Optional[int] = None  # Branch limit update is optional

    class Config:
        orm_mode = True