from typing import Optional

from pydantic import BaseModel, Field
from datetime import datetime



class UserCreate(BaseModel):
    role_id: int
    name: str
    login: str
    phone: str
    password: str  # передається в чистому вигляді

    class Config:
        extra = "forbid"

class UserRoleResponse(BaseModel):
    role_id: int
    name: str

    model_config = {"from_attributes": True}

class UserResponse(BaseModel):
    user_id: int
    role_id: int
    name: str
    login: str
    phone: str
    logo: Optional[str]
    date_added: datetime
    date_modify: datetime
    role: UserRoleResponse

    model_config = {"from_attributes": True}

class UserResponseWrapper(BaseModel):
    data: UserResponse
    status: bool


class UserUpdateSchema(BaseModel):
    name: Optional[str] = None
    login: Optional[str] = None
    phone: Optional[str] = None
    password: Optional[str] = None
    role_id: Optional[int] = None

    class Config:
        from_attributes = True

class UserOutSchema(UserResponse):
    pass

class UserResponseID(BaseModel):
    data: UserOutSchema
    status: bool

class UserMeResponse(BaseModel):
    data: UserResponse
    status: bool

    class Config:
        from_attributes = True