Mariem-Daha/chefcode
0
1from sqlalchemy import Column, Integer, String, Float, Text, DateTime, Boolean, Date2from sqlalchemy.sql import func3from database import Base4from datetime import datetime, date5 6class InventoryItem(Base):7 __tablename__ = "inventory_items"8 9 id = Column(Integer, primary_key=True, index=True)10 name = Column(String, index=True, nullable=False)11 unit = Column(String, default="pz")12 quantity = Column(Float, default=0.0)13 category = Column(String, default="Other")14 price = Column(Float, default=0.0)15 # HACCP Traceability fields16 lot_number = Column(String, nullable=True) # Batch/Lot number for traceability17 expiry_date = Column(Date, nullable=True) # Expiry date for HACCP compliance18 created_at = Column(DateTime(timezone=True), server_default=func.now())19 updated_at = Column(DateTime(timezone=True), onupdate=func.now())20 21class Recipe(Base):22 __tablename__ = "recipes"23 24 id = Column(Integer, primary_key=True, index=True)25 name = Column(String, index=True, nullable=False, unique=True)26 items = Column(Text) # JSON string of recipe items27 instructions = Column(Text, default="")28 yield_data = Column(Text, nullable=True) # JSON string of yield info: {"qty": 10, "unit": "pz"}29 # Web recipe metadata30 source_url = Column(String, nullable=True) # Original recipe URL (e.g., TheMealDB)31 image_url = Column(String, nullable=True) # Recipe thumbnail/image URL32 cuisine = Column(String, nullable=True) # Cuisine type (Italian, Chinese, etc.)33 ingredients_raw = Column(Text, nullable=True) # JSON: Original ingredients from web34 ingredients_mapped = Column(Text, nullable=True) # JSON: AI-mapped ingredients to inventory35 created_at = Column(DateTime(timezone=True), server_default=func.now())36 updated_at = Column(DateTime(timezone=True), onupdate=func.now())37 38class Task(Base):39 __tablename__ = "tasks"40 41 id = Column(Integer, primary_key=True, index=True)42 recipe = Column(String, nullable=False)43 quantity = Column(Integer, default=1)44 assigned_to = Column(String, default="")45 status = Column(String, default="todo") # todo, inprogress, completed46 created_at = Column(DateTime(timezone=True), server_default=func.now())47 updated_at = Column(DateTime(timezone=True), onupdate=func.now())48 49class SyncData(Base):50 __tablename__ = "sync_data"51 52 id = Column(Integer, primary_key=True, index=True)53 data_type = Column(String, nullable=False) # 'full_sync', 'inventory', 'recipes', 'tasks'54 data_content = Column(Text) # JSON string of synced data55 synced_at = Column(DateTime(timezone=True), server_default=func.now())