Files
arrr-erp/alembic/versions/20260423_services_phase_s2_default_templates.py
2026-06-20 15:01:44 +05:30

56 lines
2.3 KiB
Python

"""services phase s2: default task templates
Revision ID: 20260423_services_phase_s2_default_templates
Revises: 20260422_services_phase_s1
Create Date: 2026-04-23 19:30:00.000000
"""
from alembic import op
import sqlalchemy as sa
revision = "20260423_services_phase_s2_default_templates"
down_revision = "20260422_services_phase_s1"
branch_labels = None
depends_on = None
def _inspector():
return sa.inspect(op.get_bind())
def _has_table(name: str) -> bool:
return name in _inspector().get_table_names()
def _has_index(table_name: str, index_name: str) -> bool:
try:
indexes = _inspector().get_indexes(table_name)
except Exception:
return False
return any(ix.get("name") == index_name for ix in indexes)
def upgrade():
if not _has_table("service_default_task_templates"):
op.create_table(
"service_default_task_templates",
sa.Column("id", sa.Integer(), primary_key=True, autoincrement=True, nullable=False),
sa.Column("service_catalogue_id", sa.Integer(), nullable=False),
sa.Column("task_name", sa.String(length=200), nullable=False),
sa.Column("description", sa.Text(), nullable=True),
sa.Column("sequence_no", sa.Integer(), nullable=False, server_default="1"),
sa.Column("default_role_name", sa.String(length=100), nullable=True),
sa.Column("is_mandatory", sa.Boolean(), nullable=False, server_default=sa.true()),
sa.Column("requires_review", sa.Boolean(), nullable=False, server_default=sa.false()),
sa.Column("is_active", sa.Boolean(), nullable=False, server_default=sa.true()),
sa.ForeignKeyConstraint(["service_catalogue_id"], ["service_catalogues.id"], ondelete="CASCADE"),
sa.UniqueConstraint("service_catalogue_id", "sequence_no", name="uq_service_default_task_templates_sequence"),
)
if not _has_index("service_default_task_templates", "ix_service_default_task_templates_service_catalogue_id"):
op.create_index("ix_service_default_task_templates_service_catalogue_id", "service_default_task_templates", ["service_catalogue_id"], unique=False)
def downgrade():
if _has_table("service_default_task_templates"):
op.drop_table("service_default_task_templates")