from datetime import date, datetime from pydantic import BaseModel, EmailStr class UserCreate(BaseModel): email: EmailStr username: str password: str full_name: str phone: str | None = None address: str | None = None pob: str | None = None dob: date | None = None class UserUpdate(BaseModel): email: EmailStr | None = None username: str | None = None password: str | None = None full_name: str | None = None phone: str | None = None address: str | None = None pob: str | None = None dob: date | None = None status: str | None = None class UserResponse(BaseModel): id: str email: str username: str tenant_id: str | None status: str created_at: datetime class Config: from_attributes = True class UserProfileResponse(BaseModel): full_name: str phone: str | None address: str | None pob: str | None dob: date | None class Config: from_attributes = True class UserDetailResponse(UserResponse): profile: UserProfileResponse | None = None class LoginRequest(BaseModel): login: str password: str class LoginResponse(BaseModel): access_token: str token_type: str = "bearer" user: UserDetailResponse class GoogleLoginRequest(BaseModel): credential: str