chatbott / app /schemas /auth.py
MuhammadSaad16's picture
Upload 111 files
807b59f verified
from datetime import datetime
from typing import Optional
from pydantic import BaseModel, EmailStr, Field, field_validator
from app.models.user import SoftwareLevel, HardwareLevel
class SignupRequest(BaseModel):
"""Request schema for user registration"""
email: EmailStr
password: str = Field(..., min_length=8, description="Password must be at least 8 characters")
software_level: SoftwareLevel
hardware_level: HardwareLevel
learning_goals: str = Field(..., max_length=1000, description="Learning objectives (max 1000 chars)")
@field_validator('email')
@classmethod
def normalize_email(cls, v: str) -> str:
"""Normalize email to lowercase"""
return v.lower().strip()
class SigninRequest(BaseModel):
"""Request schema for user authentication"""
email: EmailStr
password: str
@field_validator('email')
@classmethod
def normalize_email(cls, v: str) -> str:
"""Normalize email to lowercase"""
return v.lower().strip()
class TokenResponse(BaseModel):
"""Response schema for successful authentication"""
access_token: str
token_type: str = "bearer"
class UserResponse(BaseModel):
"""Response schema for user profile data"""
id: int
email: str
username: Optional[str] = None
software_level: str
hardware_level: str
learning_goals: str
created_at: datetime
class Config:
from_attributes = True