chatbot_server / models /Database_MySQL.py
kltn21110's picture
Upload 9 files
9787727 verified
raw
history blame
2.79 kB
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")