"""Array Table for the Database."""
from sqlalchemy import Column, DateTime, Integer, String, UniqueConstraint
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.sql import func
from jobmon.core.serializers import SerializeDistributorArray
from jobmon.server.web.models import Base
[docs]
class Array(Base):
"""Array Database object."""
[docs]
__tablename__ = "array"
[docs]
def to_wire_as_distributor_array(self) -> tuple:
"""Serialize executor task object."""
serialized = SerializeDistributorArray.to_wire(
array_id=self.id,
max_concurrently_running=self.max_concurrently_running,
name=self.name,
)
return serialized
[docs]
id: Mapped[int] = mapped_column(Integer, primary_key=True)
[docs]
name: Mapped[str] = mapped_column(String(255), index=True, nullable=False)
[docs]
task_template_version_id = Column(Integer, index=True)
[docs]
workflow_id = Column(Integer, index=True)
[docs]
max_concurrently_running: Mapped[int] = mapped_column(Integer)
[docs]
created_date = Column(DateTime, default=func.now())
[docs]
__table_args__ = (
UniqueConstraint(
"task_template_version_id",
"workflow_id",
name="uc_task_template_version_id_workflow_id",
),
)