Spaces:
Sleeping
Sleeping
| 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") |