dept.py 1008 B

123456789101112131415161718192021222324252627282930
  1. import enum
  2. from sqlalchemy import func
  3. from sqlalchemy.orm import Mapped, mapped_column
  4. from .engine import db
  5. from .types import StringUUID
  6. class DeptStatus(enum.StrEnum):
  7. ACTIVE = "active"
  8. CLOSED = "closed"
  9. class Dept(db.Model):
  10. __tablename__ = "dept"
  11. __table_args__ = db.PrimaryKeyConstraint("dept_id", name="dept_pkey")
  12. dept_id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
  13. dept_name = db.Column(db.String(255), nullable=False)
  14. parent_dept_id = db.Column(db.String(255))
  15. timezone = db.Column(db.String(255))
  16. status = db.Column(db.String(16), nullable=False, server_default=db.text("'active'::character varying"))
  17. created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
  18. updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
  19. def get_status(self) -> DeptStatus:
  20. status_str = self.status
  21. return DeptStatus(status_str)