schat / engine-ddo /models.py
VeuReu's picture
Upload 12 files
ba54b37 verified
from sqlalchemy import Column, Integer, String, Text, Float, ForeignKey, DateTime
from sqlalchemy.orm import relationship
from datetime import datetime
from db import Base
class Product(Base):
__tablename__ = "products"
id = Column(Integer, primary_key=True)
name = Column(String(200), unique=True, index=True)
description = Column(Text, nullable=True)
notes = Column(Text, nullable=True)
price = Column(Float, nullable=True)
class CustomerProfile(Base):
__tablename__ = "customer_profiles"
id = Column(Integer, primary_key=True)
name = Column(String(200), unique=True, index=True)
attributes = Column(Text) # JSON or plain text description
wcltv = Column(Float, default=0.0)
n = Column(Integer, default=0)
class Conversation(Base):
__tablename__ = "conversations"
id = Column(Integer, primary_key=True)
profile_name = Column(String(200), index=True)
started_at = Column(DateTime, default=datetime.utcnow)
messages = relationship("Message", back_populates="conversation", cascade="all, delete-orphan")
class Message(Base):
__tablename__ = "messages"
id = Column(Integer, primary_key=True)
conversation_id = Column(Integer, ForeignKey("conversations.id"))
sender = Column(String(32)) # 'customer' or 'agent'
text = Column(Text)
ts = Column(DateTime, default=datetime.utcnow)
conversation = relationship("Conversation", back_populates="messages")