""" User Models for Authentication Pydantic models for user registration, login, and responses """ from pydantic import BaseModel, EmailStr, Field from typing import Optional from datetime import datetime class UserRegister(BaseModel): """User registration request""" email: EmailStr password: str = Field(..., min_length=6, max_length=100) full_name: str = Field(..., min_length=2, max_length=100) class Config: json_schema_extra = { "example": { "email": "user@example.com", "password": "SecurePass123", "full_name": "John Doe" } } class UserLogin(BaseModel): """User login request""" email: EmailStr password: str class Config: json_schema_extra = { "example": { "email": "user@example.com", "password": "SecurePass123" } } class UserResponse(BaseModel): """User response (without password)""" user_id: str email: str full_name: str created_at: datetime class Config: json_schema_extra = { "example": { "user_id": "abc-123", "email": "user@example.com", "full_name": "John Doe", "created_at": "2025-10-28T20:00:00" } } class Token(BaseModel): """JWT Token response""" access_token: str token_type: str = "bearer" user: UserResponse class TokenData(BaseModel): """Data stored in JWT token""" user_id: Optional[str] = None email: Optional[str] = None