group_model.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. from datetime import datetime
  2. from enum import IntEnum
  3. from typing import Optional
  4. from sqlalchemy import Column, Integer, String, DateTime, Enum, Index
  5. from pydantic import BaseModel
  6. from app.models.base_model import Base
  7. class GroupStatus(IntEnum):
  8. NO = 1
  9. OFF = 0
  10. class GroupInfoModel(Base):
  11. __tablename__ = "group_info"
  12. group_id = Column(Integer, primary_key=True, index=True)
  13. group_name = Column(String(255), unique=True, nullable=False, index=True)
  14. group_description = Column(String(255))
  15. group_status = Column(Integer, nullable=False, default=1)
  16. created_at = Column(DateTime, default=datetime.now())
  17. updated_at = Column(DateTime, default=datetime.now(), onupdate=datetime.now())
  18. def to_dict(self):
  19. return {
  20. 'id': self.group_id,
  21. 'name': self.group_name,
  22. 'group_description': self.group_description,
  23. 'group_status': self.group_status,
  24. 'created_at': self.created_at.strftime("%Y.%m.%d %H:%M")
  25. }
  26. class UserGroupModel(Base):
  27. __tablename__ = "user_group"
  28. id = Column(Integer, primary_key=True)
  29. group_id = Column(Integer, nullable=False)
  30. user_id = Column(Integer, nullable=False)
  31. Index('ix_user_group_id', group_id, user_id, unique=True)
  32. class GroupData(BaseModel):
  33. id: Optional[int] = None
  34. group_name: Optional[str] = ""
  35. group_description: Optional[str] = ""
  36. group_status: Optional[int] = None
  37. class GroupUsers(BaseModel):
  38. id: int
  39. user_list: list