chefcode / backend /routes /data.py
Mariem-Daha's picture
Upload 31 files
9aaec2c verified
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from database import SessionLocal
from models import InventoryItem, Recipe, Task
import json
from typing import Dict, Any
router = APIRouter()
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@router.get("/data")
async def get_all_data(db: Session = Depends(get_db)):
"""Get all data for frontend synchronization - matches original backend format"""
# Get inventory
inventory_items = db.query(InventoryItem).all()
inventory = [
{
"id": item.id,
"name": item.name,
"unit": item.unit,
"quantity": item.quantity,
"category": item.category,
"price": item.price,
"lot_number": item.lot_number,
"expiry_date": item.expiry_date.isoformat() if item.expiry_date else None
}
for item in inventory_items
]
# Get recipes
recipe_items = db.query(Recipe).all()
recipes = {}
for recipe in recipe_items:
items_data = json.loads(recipe.items) if recipe.items else []
yield_data = json.loads(recipe.yield_data) if recipe.yield_data else None
recipes[recipe.name] = {
"items": items_data,
"yield": yield_data
}
# Get tasks
task_items = db.query(Task).all()
tasks = [
{
"id": task.id,
"recipe": task.recipe,
"quantity": task.quantity,
"assignedTo": task.assigned_to,
"status": task.status
}
for task in task_items
]
return {
"inventory": inventory,
"recipes": recipes,
"tasks": tasks
}