import enum from sqlalchemy import func from sqlalchemy.orm import Mapped, mapped_column from .engine import db from .types import StringUUID class DeptStatus(enum.StrEnum): ACTIVE = "active" CLOSED = "closed" class Dept(db.Model): __tablename__ = "dept" __table_args__ = ( db.PrimaryKeyConstraint("dept_id", name="dept_pkey"), ) dept_id: Mapped[str] = mapped_column(StringUUID, server_default=db.text("uuid_generate_v4()")) dept_name = db.Column(db.String(255), nullable=False) parent_dept_id = db.Column(db.String(255)) timezone = db.Column(db.String(255)) status = db.Column(db.String(16), nullable=False, server_default=db.text("'active'::character varying")) created_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp()) updated_at = db.Column(db.DateTime, nullable=False, server_default=func.current_timestamp()) def get_status(self) -> DeptStatus: status_str = self.status return DeptStatus(status_str)