Spaces:
Sleeping
Sleeping
# models.py | |
from pydantic import BaseModel, EmailStr, Field, validator | |
from typing import List, Optional | |
# === Trainer Models === | |
class InitializeBotResponse(BaseModel): | |
bot_id: str | |
class DocumentPath(BaseModel): | |
bot_id: str | |
data_path: str | |
class NewChatResponse(BaseModel): | |
chat_id: str | |
class QueryRequest(BaseModel): | |
bot_id: str | |
chat_id: str | |
query: str | |
class QueryResponse(BaseModel): | |
response: str | |
web_sources: List[str] | |
# === Authentication Models === | |
class User(BaseModel): | |
name: str = Field(..., min_length=3, max_length=50) | |
email: EmailStr | |
password: str | |
def validate_password(cls, value): | |
if len(value) < 8: | |
raise ValueError("Password must be at least 8 characters long.") | |
if not any(char.isdigit() for char in value): | |
raise ValueError("Password must include at least one number.") | |
if not any(char.isupper() for char in value): | |
raise ValueError("Password must include at least one uppercase letter.") | |
if not any(char.islower() for char in value): | |
raise ValueError("Password must include at least one lowercase letter.") | |
if not any(char in "!@#$%^&*()-_+=<>?/" for char in value): | |
raise ValueError("Password must include at least one special character.") | |
return value | |
class UserUpdate(BaseModel): | |
name: Optional[str] = Field(None, min_length=3, max_length=50) | |
email: Optional[EmailStr] | |
password: Optional[str] | |
def validate_password(cls, value): | |
if value is not None: | |
if len(value) < 8: | |
raise ValueError("Password must be at least 8 characters long.") | |
if not any(char.isdigit() for char in value): | |
raise ValueError("Password must include at least one number.") | |
if not any(char.isupper() for char in value): | |
raise ValueError("Password must include at least one uppercase letter.") | |
if not any(char.islower() for char in value): | |
raise ValueError("Password must include at least one lowercase letter.") | |
if not any(char in "!@#$%^&*()-_+=<>?/" for char in value): | |
raise ValueError("Password must include at least one special character.") | |
return value | |
class Token(BaseModel): | |
access_token: str | |
refresh_token: str | |
token_type: str | |
class LoginResponse(Token): | |
name: str | |
avatar: Optional[str] = None | |
class TokenData(BaseModel): | |
email: Optional[str] = None | |