File size: 1,417 Bytes
ba54b37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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")