from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict, EmailStr from backend.modules.users.models import RoleName class RoleBase(BaseModel): name: str description: Optional[str] = None class RoleOut(RoleBase): model_config = ConfigDict(from_attributes=True) id: int created_at: datetime updated_at: datetime class UserBase(BaseModel): username: str email: Optional[EmailStr] = None role_id: int customer_id: Optional[int] = None is_active: int = 1 class UserCreate(UserBase): password: str class UserUpdate(BaseModel): email: Optional[EmailStr] = None password: Optional[str] = None role_id: Optional[int] = None customer_id: Optional[int] = None is_active: Optional[int] = None class UserOut(BaseModel): model_config = ConfigDict(from_attributes=True) id: int username: str email: Optional[EmailStr] = None role_id: int customer_id: Optional[int] = None customer_credential_names: list[str] = [] role_name: Optional[str] = None customer_name: Optional[str] = None is_active: int last_login_at: Optional[datetime] = None created_at: datetime updated_at: datetime role: Optional[RoleOut] = None