Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, EmailStr, Field | |
| from typing import Optional, List | |
| from enum import Enum | |
| class UserRole(str, Enum): | |
| ADMIN = "admin" | |
| USER = "user" | |
| class UserCreate(BaseModel): | |
| username: str | |
| email: EmailStr | |
| password: str | |
| class UserLogin(BaseModel): | |
| username: str | |
| password: str | |
| class UserResponse(BaseModel): | |
| id: int | |
| username: str | |
| email: str | |
| role: UserRole | |
| class Config: | |
| from_attributes = True | |
| class Token(BaseModel): | |
| access_token: str | |
| token_type: str | |
| class TokenData(BaseModel): | |
| username: Optional[str] = None | |
| role: Optional[str] = None | |
| class ProductCreate(BaseModel): | |
| name: str | |
| brand: Optional[str] = None | |
| calories: float | |
| protein: float | |
| fat: float | |
| carbohydrates: float | |
| sodium: float | |
| sugar: float | |
| fiber: Optional[float] = None | |
| cholesterol: Optional[float] = None | |
| serving_size: Optional[str] = None | |
| class ProductResponse(BaseModel): | |
| id: int | |
| name: str | |
| brand: Optional[str] | |
| calories: float | |
| protein: float | |
| fat: float | |
| carbohydrates: float | |
| sodium: float | |
| sugar: float | |
| fiber: Optional[float] | |
| cholesterol: Optional[float] | |
| serving_size: Optional[str] | |
| image_path: Optional[str] = None | |
| class Config: | |
| from_attributes = True | |
| class HealthIssueCreate(BaseModel): | |
| issue_type: str = Field(..., description="Type of health issue (e.g., diabetes, hypertension, high cholesterol)") | |
| severity: Optional[str] = None | |
| notes: Optional[str] = None | |
| class HealthIssueResponse(BaseModel): | |
| id: int | |
| user_id: int | |
| issue_type: str | |
| severity: Optional[str] | |
| notes: Optional[str] | |
| class Config: | |
| from_attributes = True | |
| class NutritionAnalysisResponse(BaseModel): | |
| extracted_nutrition: dict | |
| health_rating: float = Field(..., description="Product rating from 1-10") | |
| health_recommendations: List[str] | |
| suggested_alternatives: List[ProductResponse] | |
| analysis_summary: str | |