chatbot_server / models /Database_Entity.py
kltn21110's picture
Upload 9 files
9787727 verified
raw
history blame
3.09 kB
from mongoengine import (
Document, StringField, ReferenceField, DateTimeField, BooleanField, ObjectIdField,EmbeddedDocumentField
)
from datetime import datetime
import pytz
from mongoengine import connect
import os
from dotenv import load_dotenv
load_dotenv()
MONGO_URI = os.getenv("MONGO_URI", "mongodb+srv://kltn20133118:XEYSVzYvEwsp5Cvo@cluster0.nnsw9.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0")
def init_db(db_name="chatbot_hmdrinks"):
connect(db_name, host=MONGO_URI)
from mongoengine import Document, StringField, IntField,ListField
class User(Document):
_id = ObjectIdField(required=True, primary_key=True)
user_name = StringField(required=True, max_length=255)
user_id = IntField(unique=True, required=True)
is_deleted = BooleanField(default=False)
date_deleted = DateTimeField(default=None)
meta = {'collection': 'users'}
class ChatHistory(Document):
_id = ObjectIdField(required=True, primary_key=True)
user = ReferenceField(User, required=True, reverse_delete_rule=2)
name_chat = StringField(required=True, unique=True, max_length=255)
is_deleted = BooleanField(default=False)
date_deleted = DateTimeField(default=None)
meta = {'collection': 'chat_history'}
from bson import ObjectId
from mongoengine import EmbeddedDocument, StringField, IntField, FloatField
class CartProduct(EmbeddedDocument):
name = StringField()
quantity = IntField(min_value=1, default=1)
size = StringField()
class DetailChat(Document):
_id = ObjectIdField(required=True, primary_key=True,default=ObjectId)
chat_history = ReferenceField(ChatHistory, required=True, reverse_delete_rule=2)
you_message = StringField()
ai_message = StringField()
data_relevant = StringField()
full_input = StringField()
source_file = StringField()
cart_id = IntField()
confirmed_order = BooleanField(default=False)
timestamp = DateTimeField(default=lambda: datetime.now(pytz.UTC))
is_deleted = BooleanField(default=False)
date_deleted = DateTimeField(default=lambda: datetime.now(pytz.UTC))
meta = {'collection': 'detail_chat',
'strict': False
}
class ChatCart(Document):
_id = ObjectIdField(primary_key=True, default=ObjectId)
chat_history = ReferenceField(ChatHistory, required=True, reverse_delete_rule=2)
created_from_detail_chat = ReferenceField(DetailChat) # Để biết cart được tạo từ đoạn chat nào
cart_products = ListField(EmbeddedDocumentField(CartProduct), default=list)
status = StringField(choices=["pending", "confirmed", "failed"], default="pending")
confirmed_order = BooleanField(default=False)
created_at = DateTimeField(default=lambda: datetime.now(pytz.UTC))
confirmed_at = DateTimeField()
note = StringField()
cart_id = IntField()
meta = {
'collection': 'chat_cart',
'strict': False
}