schat / engine-ddo /models.py
VeuReu's picture
Upload 12 files
ba54b37 verified
raw
history blame
1.42 kB
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")