chatbot_server / models /Database_MySQL.py
kltn21110's picture
Upload 239 files
325b400 verified
from sqlalchemy import Column, String, Text, DateTime, Integer, ForeignKey, Boolean, Enum
from sqlalchemy.orm import relationship, DeclarativeBase
from sqlalchemy.sql import func
import enum
class UserRole(enum.Enum):
ADMIN = "ADMIN"
CUSTOMER = "CUSTOMER"
SHIPPER = "SHIPPER"
class SexType(enum.Enum):
OTHER = "OTHER"
MALE = "MALE"
FEMALE = "FEMALE"
class UserType(enum.Enum):
BASIC = "BASIC"
BOTH = "BOTH"
EMAIL = "EMAIL"
class Base(DeclarativeBase):
pass
class User(Base):
__tablename__ = 'user'
user_id = Column(Integer, primary_key=True, autoincrement=True)
avatar = Column(Text, nullable=True)
birth_date = Column(DateTime, nullable=True)
city = Column(String(255), nullable=True)
district = Column(String(255), nullable=True)
email = Column(String(255), unique=True, nullable=False)
full_name = Column(String(255), nullable=False)
is_deleted = Column(Boolean, default=False)
password = Column(Text, nullable=False)
phone_number = Column(String(20), nullable=True)
role = Column(Enum(UserRole), nullable=False) # 🎯 Enum Role
sex = Column(Enum(SexType), nullable=True) # 🎯 Enum Sex
street = Column(String(255), nullable=True)
type = Column(Enum(UserType), nullable=True) # 🎯 Enum Type
username = Column(String(255), unique=True, nullable=False)
date_created = Column(DateTime, default=func.now())
date_updated = Column(DateTime, default=func.now(), onupdate=func.now())
date_deleted = Column(DateTime, nullable=True)
ward = Column(String(255), nullable=True)
tokens = relationship("Token", back_populates="user")
user_chats = relationship("UserChat", back_populates="user")
class Token(Base):
__tablename__ = 'token'
token_id = Column(Integer, primary_key=True, autoincrement=True)
access_token = Column(Text, nullable=False)
expire = Column(DateTime, nullable=False)
refresh_token = Column(Text, nullable=False)
user_id = Column(Integer, ForeignKey('user.user_id'), nullable=False)
user = relationship("User", back_populates="tokens")
class UserChat(Base):
__tablename__ = 'user_chat'
user_chat_id = Column(Integer, primary_key=True, autoincrement=True)
chat_name = Column(String(255), nullable=False)
id_mongo_db = Column(String(255), nullable=True)
user_id = Column(Integer, ForeignKey('user.user_id'), nullable=False)
date_created = Column(DateTime, default=func.now())
date_updated = Column(DateTime, default=func.now(), onupdate=func.now())
date_deleted = Column(DateTime, nullable=True)
is_deleted = Column(Boolean, default=False)
user = relationship("User", back_populates="user_chats")