from pydantic import BaseModel, EmailStr, validator from typing import Optional class OTPRequest(BaseModel): phone_number: str @validator("phone_number") def validate_phone_number(cls, v): # Basic phone number validation if not v.startswith("+"): raise ValueError("Phone number must start with +") if len(v) < 10: raise ValueError("Phone number must be at least 10 characters") return v class OTPVerify(BaseModel): phone_number: str otp: str @validator("otp") def validate_otp(cls, v): if len(v) != 6 or not v.isdigit(): raise ValueError("OTP must be 6 digits") return v class EmailSignup(BaseModel): email: EmailStr password: str name: Optional[str] = None @validator("password") def validate_password(cls, v): if len(v) < 8: raise ValueError("Password must be at least 8 characters") return v class EmailLogin(BaseModel): email: EmailStr password: str class GoogleLogin(BaseModel): token: str class AppleLogin(BaseModel): token: str class Token(BaseModel): access_token: str token_type: str class TokenData(BaseModel): user_id: Optional[int] = None