AIDA / app /schemas /user.py
destinyebuka's picture
Deploy Lojiz Platform with Aida AI backend
79ef7e1
# ============================================================
# app/schemas/user.py - User DTOs
# ============================================================
from pydantic import BaseModel, Field
from datetime import datetime
from typing import Optional
class UserProfileDto(BaseModel):
"""User profile response DTO"""
id: str
first_name: str
last_name: str
email: Optional[str] = None
phone: Optional[str] = None
role: str
subscription_type: str
subscription_expires_at: Optional[datetime] = None
is_email_verified: bool
is_phone_verified: bool
is_active: bool
total_listings: int
profile_picture: Optional[str] = None
bio: Optional[str] = None
last_login: Optional[datetime] = None
created_at: datetime
updated_at: datetime
class Config:
from_attributes = True
class UserUpdateDto(BaseModel):
"""Update user profile DTO"""
first_name: Optional[str] = Field(None, min_length=1, max_length=50)
last_name: Optional[str] = Field(None, min_length=1, max_length=50)
phone: Optional[str] = None
bio: Optional[str] = Field(None, max_length=500)
# ============================================================
# Generic Response DTOs
# ============================================================
class SuccessResponse(BaseModel):
"""Generic success response"""
success: bool = True
message: str
data: Optional[dict] = None
class ErrorResponse(BaseModel):
"""Generic error response"""
success: bool = False
message: str
errors: Optional[dict] = None
class LoginResponse(BaseModel):
"""Login response with token and user"""
success: bool = True
message: str
data: dict # {user: UserProfileDto, token: str}
class TokenResponse(BaseModel):
"""Token response"""
success: bool = True
message: str
data: dict # {token: str, resetToken: str}