Spaces:
Sleeping
Sleeping
| 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 | |
| } | |