chatbot_server / models /Database_MySQL.py
kltn21110's picture
Upload 239 files
325b400 verified
Raw
History Blame Contribute Delete
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")