from sqlalchemy import Column, Integer, String, Float, ForeignKey, Text, DateTime, func
from sqlalchemy.orm import relationship
from database import Base
from datetime import datetime
# -------------------- USER MODEL --------------------
class User(Base):
__tablename__ = "user" # keep this as your main user table
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False)
email = Column(String(50), unique=True, nullable=False)
password = Column(String(100), nullable=False)
# One user can have many orders
orders = relationship("Order", back_populates="user")
# -------------------- PRODUCT MODEL --------------------
class Product(Base):
__tablename__ = "product"
id = Column(Integer, primary_key=True)
name = Column(String(100), nullable=False)
price = Column(Float, nullable=False)
stock = Column(Integer, nullable=False)
# One product can appear in many orders
orders = relationship("Order", back_populates="product")
# -------------------- ORDER MODEL --------------------
class Order(Base):
__tablename__ = "order_list"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("user.id"), nullable=False)
product_id = Column(Integer, ForeignKey("product.id"), nullable=False)
quantity = Column(Integer, nullable=False)
user = relationship("User", back_populates="orders")
product = relationship("Product", back_populates="orders")
# -------------------- CHAT HISTORY MODEL --------------------
class ChatHistory(Base):
__tablename__ = "chat_history"
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String(100), index=True)
role = Column(String(100), default="user")
message = Column(Text, nullable=False)
timestamp = Column(DateTime(timezone=True), server_default=func.now())
# -------------------- CHAT SUMMARY MODEL --------------------
class ChatSummary(Base):
__tablename__ = "chat_summary"
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String(100), index=True)
summary = Column(Text, nullable=False)
created_at = Column(DateTime(timezone=True), server_default=func.now())
# -------------------- CHAT SESSION USER MODEL --------------------
class ChatUser(Base):
__tablename__ = "chat_user" # ✅ Different table name
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String(50), unique=True, nullable=False)
name = Column(String(100), nullable=True)
created_at = Column(DateTime, default=datetime.utcnow)
# ----------------------
class Reminder(Base):
__tablename__ = "reminders"
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String(255), index=True) # length added
text = Column(String(500)) # length added
time_str = Column(String(50)) # length added
created_at = Column(DateTime, default=func.now())
class Recommendation(Base):
__tablename__ = "recommendations"
id = Column(Integer, primary_key=True, index=True)
session_id = Column(String(255), index=True) # length added
text = Column(String(500)) # length added
created_at = Column(DateTime, default=func.now())