Files
arrr-erp/alembic/versions/20260723_phase3_consultant_task_execution.py
T
2026-07-23 11:37:04 +05:30

53 lines
4.2 KiB
Python

"""Phase 3 consultant task execution.
Revision ID: 20260723_phase3_consultant_task_execution
Revises: 20260723_phase2_consultant_visibility_document_requests
"""
from alembic import op
import sqlalchemy as sa
revision = "20260723_phase3_consultant_task_execution"
down_revision = "20260723_phase2_consultant_visibility_document_requests"
branch_labels = None
depends_on = None
def upgrade():
op.add_column("client_service_task_instances", sa.Column("execution_mode", sa.String(30), nullable=False, server_default="internal"))
op.add_column("client_service_task_instances", sa.Column("assigned_consultant_id", sa.Integer(), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_assignment_status", sa.String(30), nullable=False, server_default="not_applicable"))
op.add_column("client_service_task_instances", sa.Column("consultant_due_date", sa.Date(), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_offered_at_utc", sa.DateTime(timezone=True), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_accepted_at_utc", sa.DateTime(timezone=True), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_declined_at_utc", sa.DateTime(timezone=True), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_decline_reason", sa.Text(), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_started_at_utc", sa.DateTime(timezone=True), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_submitted_at_utc", sa.DateTime(timezone=True), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_submission_note", sa.Text(), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_approved_at_utc", sa.DateTime(timezone=True), nullable=True))
op.add_column("client_service_task_instances", sa.Column("consultant_approved_by_user_id", sa.Integer(), nullable=True))
op.create_foreign_key("fk_task_instance_assigned_consultant", "client_service_task_instances", "consultant_profiles", ["assigned_consultant_id"], ["id"], ondelete="SET NULL")
op.create_foreign_key("fk_task_instance_consultant_approved_by", "client_service_task_instances", "users", ["consultant_approved_by_user_id"], ["id"], ondelete="SET NULL")
op.create_index("ix_task_instance_execution_mode", "client_service_task_instances", ["execution_mode"])
op.create_index("ix_task_instance_assigned_consultant", "client_service_task_instances", ["assigned_consultant_id"])
op.create_index("ix_task_instance_consultant_assignment_status", "client_service_task_instances", ["consultant_assignment_status"])
op.create_index("ix_task_instance_consultant_due_date", "client_service_task_instances", ["consultant_due_date"])
op.create_index("ix_task_instance_consultant_approved_by", "client_service_task_instances", ["consultant_approved_by_user_id"])
def downgrade():
op.drop_index("ix_task_instance_consultant_approved_by", table_name="client_service_task_instances")
op.drop_index("ix_task_instance_consultant_due_date", table_name="client_service_task_instances")
op.drop_index("ix_task_instance_consultant_assignment_status", table_name="client_service_task_instances")
op.drop_index("ix_task_instance_assigned_consultant", table_name="client_service_task_instances")
op.drop_index("ix_task_instance_execution_mode", table_name="client_service_task_instances")
op.drop_constraint("fk_task_instance_consultant_approved_by", "client_service_task_instances", type_="foreignkey")
op.drop_constraint("fk_task_instance_assigned_consultant", "client_service_task_instances", type_="foreignkey")
for column in [
"consultant_approved_by_user_id", "consultant_approved_at_utc", "consultant_submission_note",
"consultant_submitted_at_utc", "consultant_started_at_utc", "consultant_decline_reason",
"consultant_declined_at_utc", "consultant_accepted_at_utc", "consultant_offered_at_utc",
"consultant_due_date", "consultant_assignment_status", "assigned_consultant_id", "execution_mode",
]:
op.drop_column("client_service_task_instances", column)