Files
aletheia/backend/app/schemas/scan.py

49 lines
1.3 KiB
Python

from pydantic import BaseModel
from typing import Optional, List, Any, Dict
from datetime import datetime
class ScanRequest(BaseModel):
barcode: str
class IngredientAnalysis(BaseModel):
name: str
popular_name: Optional[str] = None
explanation: str
classification: str
reason: str
class RecipeInfo(BaseModel):
title: Optional[str] = None
description: Optional[str] = None
prep_time: Optional[str] = None
calories: Optional[str] = None
ingredients_list: Optional[List[str]] = None
steps: Optional[List[str]] = None
tip: Optional[str] = None
class ScanResult(BaseModel):
barcode: str
product_name: Optional[str] = None
brand: Optional[str] = None
category: Optional[str] = None
image_url: Optional[str] = None
score: int
summary: str
positives: List[str]
negatives: List[str]
ingredients: List[IngredientAnalysis]
nutrition: Optional[Dict[str, Any]] = None
nutrition_verdict: Optional[str] = None
recipe: Optional[RecipeInfo] = None
nutri_score: Optional[str] = None
nova_group: Optional[int] = None
source: str = "open_food_facts"
class ScanHistoryItem(BaseModel):
id: int
barcode: str
product_name: Optional[str] = None
brand: Optional[str] = None
score: int
scanned_at: datetime