kltn21110 commited on
Commit
9787727
·
verified ·
1 Parent(s): 0d2005b

Upload 9 files

Browse files
models/Database_Entity.py ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from mongoengine import (
2
+ Document, StringField, ReferenceField, DateTimeField, BooleanField, ObjectIdField,EmbeddedDocumentField
3
+ )
4
+ from datetime import datetime
5
+ import pytz
6
+ from mongoengine import connect
7
+ import os
8
+ from dotenv import load_dotenv
9
+ load_dotenv()
10
+ MONGO_URI = os.getenv("MONGO_URI", "mongodb+srv://kltn20133118:XEYSVzYvEwsp5Cvo@cluster0.nnsw9.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0")
11
+
12
+ def init_db(db_name="chatbot_hmdrinks"):
13
+ connect(db_name, host=MONGO_URI)
14
+
15
+ from mongoengine import Document, StringField, IntField,ListField
16
+
17
+
18
+ class User(Document):
19
+ _id = ObjectIdField(required=True, primary_key=True)
20
+ user_name = StringField(required=True, max_length=255)
21
+ user_id = IntField(unique=True, required=True)
22
+ is_deleted = BooleanField(default=False)
23
+ date_deleted = DateTimeField(default=None)
24
+ meta = {'collection': 'users'}
25
+
26
+
27
+ class ChatHistory(Document):
28
+ _id = ObjectIdField(required=True, primary_key=True)
29
+ user = ReferenceField(User, required=True, reverse_delete_rule=2)
30
+ name_chat = StringField(required=True, unique=True, max_length=255)
31
+ is_deleted = BooleanField(default=False)
32
+ date_deleted = DateTimeField(default=None)
33
+ meta = {'collection': 'chat_history'}
34
+
35
+ from bson import ObjectId
36
+ from mongoengine import EmbeddedDocument, StringField, IntField, FloatField
37
+
38
+
39
+
40
+
41
+ class CartProduct(EmbeddedDocument):
42
+ name = StringField()
43
+ quantity = IntField(min_value=1, default=1)
44
+ size = StringField()
45
+
46
+ class DetailChat(Document):
47
+ _id = ObjectIdField(required=True, primary_key=True,default=ObjectId)
48
+ chat_history = ReferenceField(ChatHistory, required=True, reverse_delete_rule=2)
49
+ you_message = StringField()
50
+ ai_message = StringField()
51
+ data_relevant = StringField()
52
+ full_input = StringField()
53
+ source_file = StringField()
54
+ cart_id = IntField()
55
+ confirmed_order = BooleanField(default=False)
56
+ timestamp = DateTimeField(default=lambda: datetime.now(pytz.UTC))
57
+ is_deleted = BooleanField(default=False)
58
+ date_deleted = DateTimeField(default=lambda: datetime.now(pytz.UTC))
59
+ meta = {'collection': 'detail_chat',
60
+ 'strict': False
61
+ }
62
+
63
+
64
+ class ChatCart(Document):
65
+ _id = ObjectIdField(primary_key=True, default=ObjectId)
66
+ chat_history = ReferenceField(ChatHistory, required=True, reverse_delete_rule=2)
67
+ created_from_detail_chat = ReferenceField(DetailChat) # Để biết cart được tạo từ đoạn chat nào
68
+ cart_products = ListField(EmbeddedDocumentField(CartProduct), default=list)
69
+ status = StringField(choices=["pending", "confirmed", "failed"], default="pending")
70
+ confirmed_order = BooleanField(default=False)
71
+ created_at = DateTimeField(default=lambda: datetime.now(pytz.UTC))
72
+ confirmed_at = DateTimeField()
73
+ note = StringField()
74
+ cart_id = IntField()
75
+
76
+ meta = {
77
+ 'collection': 'chat_cart',
78
+ 'strict': False
79
+ }
models/Database_MySQL.py ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from sqlalchemy import Column, String, Text, DateTime, Integer, ForeignKey, Boolean, Enum
2
+ from sqlalchemy.orm import relationship, DeclarativeBase
3
+ from sqlalchemy.sql import func
4
+ import enum
5
+
6
+
7
+ class UserRole(enum.Enum):
8
+ ADMIN = "ADMIN"
9
+ CUSTOMER = "CUSTOMER"
10
+ SHIPPER = "SHIPPER"
11
+
12
+
13
+ class SexType(enum.Enum):
14
+ OTHER = "OTHER"
15
+ MALE = "MALE"
16
+ FEMALE = "FEMALE"
17
+
18
+
19
+ class UserType(enum.Enum):
20
+ BASIC = "BASIC"
21
+ BOTH = "BOTH"
22
+ EMAIL = "EMAIL"
23
+
24
+
25
+ class Base(DeclarativeBase):
26
+ pass
27
+
28
+
29
+ class User(Base):
30
+ __tablename__ = 'user'
31
+ user_id = Column(Integer, primary_key=True, autoincrement=True)
32
+ avatar = Column(Text, nullable=True)
33
+ birth_date = Column(DateTime, nullable=True)
34
+ city = Column(String(255), nullable=True)
35
+ district = Column(String(255), nullable=True)
36
+ email = Column(String(255), unique=True, nullable=False)
37
+ full_name = Column(String(255), nullable=False)
38
+ is_deleted = Column(Boolean, default=False)
39
+ password = Column(Text, nullable=False)
40
+ phone_number = Column(String(20), nullable=True)
41
+ role = Column(Enum(UserRole), nullable=False) # 🎯 Enum Role
42
+ sex = Column(Enum(SexType), nullable=True) # 🎯 Enum Sex
43
+ street = Column(String(255), nullable=True)
44
+ type = Column(Enum(UserType), nullable=True) # 🎯 Enum Type
45
+ username = Column(String(255), unique=True, nullable=False)
46
+ date_created = Column(DateTime, default=func.now())
47
+ date_updated = Column(DateTime, default=func.now(), onupdate=func.now())
48
+ date_deleted = Column(DateTime, nullable=True)
49
+ ward = Column(String(255), nullable=True)
50
+ tokens = relationship("Token", back_populates="user")
51
+ user_chats = relationship("UserChat", back_populates="user")
52
+
53
+
54
+ class Token(Base):
55
+ __tablename__ = 'token'
56
+ token_id = Column(Integer, primary_key=True, autoincrement=True)
57
+ access_token = Column(Text, nullable=False)
58
+ expire = Column(DateTime, nullable=False)
59
+ refresh_token = Column(Text, nullable=False)
60
+ user_id = Column(Integer, ForeignKey('user.user_id'), nullable=False)
61
+ user = relationship("User", back_populates="tokens")
62
+
63
+
64
+ class UserChat(Base):
65
+ __tablename__ = 'user_chat'
66
+ user_chat_id = Column(Integer, primary_key=True, autoincrement=True)
67
+ chat_name = Column(String(255), nullable=False)
68
+ id_mongo_db = Column(String(255), nullable=True)
69
+ user_id = Column(Integer, ForeignKey('user.user_id'), nullable=False)
70
+ date_created = Column(DateTime, default=func.now())
71
+ date_updated = Column(DateTime, default=func.now(), onupdate=func.now())
72
+ date_deleted = Column(DateTime, nullable=True)
73
+ is_deleted = Column(Boolean, default=False)
74
+ user = relationship("User", back_populates="user_chats")
models/__init__.py ADDED
File without changes
models/__pycache__/Database_Entity.cpython-311.pyc ADDED
Binary file (5.42 kB). View file
 
models/__pycache__/Database_Entity.cpython-312.pyc ADDED
Binary file (2.71 kB). View file
 
models/__pycache__/Database_MySQL.cpython-311.pyc ADDED
Binary file (5.28 kB). View file
 
models/__pycache__/Database_MySQL.cpython-312.pyc ADDED
Binary file (4.23 kB). View file
 
models/__pycache__/__init__.cpython-311.pyc ADDED
Binary file (152 Bytes). View file
 
models/__pycache__/__init__.cpython-312.pyc ADDED
Binary file (149 Bytes). View file