Spaces:
Sleeping
Sleeping
File size: 2,793 Bytes
325b400 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
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") |