from schemas.base_imports import ( CrudCollection, String, Integer, Boolean, ForeignKey, Index, TIMESTAMP, Numeric, SmallInteger, mapped_column, Mapped, ) class Staff(CrudCollection): __tablename__ = "staff" __exclude__fields__ = [] staff_description: Mapped[str] = mapped_column( String, server_default="", comment="Staff Description" ) staff_name: Mapped[str] = mapped_column( String, nullable=False, comment="Staff Name" ) staff_code: Mapped[str] = mapped_column( String, nullable=False, comment="Staff Code" ) duties_id: Mapped[int] = mapped_column(ForeignKey("duties.id"), nullable=False) duties_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Duty UUID" ) __table_args__ = ({"comment": "Staff Information"},) class Employees(CrudCollection): __tablename__ = "employees" __exclude__fields__ = [] staff_id: Mapped[int] = mapped_column(ForeignKey("staff.id")) staff_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Staff UUID" ) people_id: Mapped[int] = mapped_column(ForeignKey("people.id"), nullable=True) people_uu_id: Mapped[str] = mapped_column( String, nullable=True, comment="People UUID" ) __table_args__ = ( Index("employees_ndx_00", people_id, staff_id, unique=True), {"comment": "Employee Person Information"}, ) class EmployeeHistory(CrudCollection): __tablename__ = "employee_history" __exclude__fields__ = [] staff_id: Mapped[int] = mapped_column( ForeignKey("staff.id"), nullable=False, comment="Staff ID" ) staff_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="Staff UUID" ) people_id: Mapped[int] = mapped_column( ForeignKey("people.id"), nullable=False, comment="People ID" ) people_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="People UUID" ) __table_args__ = ( Index("_employee_history_ndx_00", people_id, staff_id), {"comment": "Employee History Information"}, ) class EmployeesSalaries(CrudCollection): __tablename__ = "employee_salaries" __exclude__fields__ = [] gross_salary: Mapped[float] = mapped_column( Numeric(20, 6), nullable=False, comment="Gross Salary" ) net_salary: Mapped[float] = mapped_column( Numeric(20, 6), nullable=False, comment="Net Salary" ) people_id: Mapped[int] = mapped_column(ForeignKey("people.id"), nullable=False) people_uu_id: Mapped[str] = mapped_column( String, nullable=False, comment="People UUID" ) __table_args__ = ( Index("_employee_salaries_ndx_00", people_id, "expiry_starts"), {"comment": "Employee Salaries Information"}, )