Jul 10 - Update codes to catch up with the single tenant project (Medium)
This commit is contained in:
@@ -2,6 +2,60 @@ from app import db
|
||||
from app.utils.time_utils import now_eastern
|
||||
|
||||
|
||||
class SupportChatSession(db.Model):
|
||||
__tablename__ = 'support_chat_sessions'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
customer_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='SET NULL'), nullable=True)
|
||||
title = db.Column(db.String(200), nullable=True)
|
||||
created_at = db.Column(db.DateTime, default=now_eastern, nullable=False)
|
||||
last_msg_at = db.Column(db.DateTime, default=now_eastern, nullable=False)
|
||||
|
||||
customer = db.relationship('User', foreign_keys=[customer_id], backref='chat_sessions')
|
||||
messages = db.relationship(
|
||||
'SupportChatMessage', back_populates='session',
|
||||
cascade='all, delete-orphan',
|
||||
order_by='SupportChatMessage.created_at',
|
||||
)
|
||||
|
||||
def __repr__(self):
|
||||
return f'<SupportChatSession {self.id}>'
|
||||
|
||||
|
||||
class SupportChatMessage(db.Model):
|
||||
__tablename__ = 'support_chat_messages'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
session_id = db.Column(db.Integer,
|
||||
db.ForeignKey('support_chat_sessions.id', ondelete='CASCADE'),
|
||||
nullable=False)
|
||||
role = db.Column(db.String(20), nullable=False) # 'user' | 'assistant'
|
||||
content = db.Column(db.Text, nullable=False)
|
||||
created_at = db.Column(db.DateTime, default=now_eastern, nullable=False)
|
||||
|
||||
session = db.relationship('SupportChatSession', back_populates='messages')
|
||||
|
||||
def __repr__(self):
|
||||
return f'<SupportChatMessage {self.id} [{self.role}]>'
|
||||
|
||||
|
||||
class SupportKnowledge(db.Model):
|
||||
__tablename__ = 'support_knowledge'
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
title = db.Column(db.String(200), nullable=False)
|
||||
body = db.Column(db.Text, nullable=False)
|
||||
active = db.Column(db.Boolean, default=True, nullable=False)
|
||||
created_by = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='SET NULL'), nullable=True)
|
||||
created_at = db.Column(db.DateTime, default=now_eastern, nullable=False)
|
||||
updated_at = db.Column(db.DateTime, default=now_eastern, nullable=False)
|
||||
|
||||
creator = db.relationship('User', foreign_keys=[created_by])
|
||||
|
||||
def __repr__(self):
|
||||
return f'<SupportKnowledge {self.id} "{self.title[:30]}">'
|
||||
|
||||
|
||||
class SupportTicket(db.Model):
|
||||
__tablename__ = 'support_tickets'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user