dept.py 1.0 KB

1234567891011121314151617181920212223242526272829303132
  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__ = (
  12. db.PrimaryKeyConstraint("dept_id", name="dept_pkey"),
  13. )
  14. dept_id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()"))
  15. dept_name = db.Column(db.String(255), nullable=False)
  16. parent_dept_id = db.Column(db.String(255))
  17. timezone = db.Column(db.String(255))
  18. status = db.Column(db.String(16), nullable=False, server_default=db.text("'active'::character varying"))
  19. created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
  20. updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp())
  21. def get_status(self) -> DeptStatus:
  22. status_str = self.status
  23. return DeptStatus(status_str)