from pydantic import BaseModel
from typing import List, Optional, Union, Literal

class UserRegister(BaseModel):
    email:          str
    password:       str
    name:           Optional[str]         = None
    image_url:      Optional[str]         = None

class UserLogin(BaseModel):
    email:          str
    password:       str

class UserRegisterRespone(BaseModel):
    access_token:   Optional[str]         = None
    refresh_token:  Optional[str]         = None
    user_id:        Optional[str]         = None
    status:         Optional[str]         = None
    message:        Optional[str]         = None

class UserLoginRespone(BaseModel):
    access_token:   Optional[str]         = None
    refresh_token:  Optional[str]         = None
    status:         Optional[str]         = None
    message:        Optional[str]         = None

class UserRefreshTokenRespone(BaseModel):
    access_token:   Optional[str]         = None
    refresh_token:  Optional[str]         = None
    status:         Optional[str]         = None

class UserAssignProperty(BaseModel):
    properties:     List[str]

class UserAssignPropertyRespone(BaseModel):
    status:         Optional[str]         = None
    message:        Optional[str]         = None

class GetUserProperty(BaseModel):
    property_id:    Union[Literal["all"], str]

class GetUserPropertyRespone(BaseModel):
    status:         Optional[str]         = None
    message:        Optional[str]         = None
    data:           List[dict]            = []

class ErrorResponse(BaseModel):
    status: str
    message: str