41 lines
2.8 KiB
Python
41 lines
2.8 KiB
Python
# #region Alembic.ScenarioInvestigationTables [C:3] [TYPE Module] [SEMANTICS alembic,scenario,investigation,queue,case,action,episode]
|
|
# @ingroup Alembic
|
|
# @BRIEF Add 047 investigation queue, case, agent action and recurring failure episode tables.
|
|
# @LAYER Database
|
|
"""add scenario investigation queue and case tables (047)"""
|
|
from collections.abc import Sequence
|
|
import sqlalchemy as sa
|
|
from alembic import op
|
|
|
|
revision: str = "y4z5a6b7c8d9"
|
|
down_revision: str | Sequence[str] | None = "x3y4z5a6b7c8"
|
|
branch_labels: str | Sequence[str] | None = None
|
|
depends_on: str | Sequence[str] | None = None
|
|
|
|
def upgrade() -> None:
|
|
op.create_table("scenario_investigation_queue",
|
|
sa.Column("id", sa.String(36), primary_key=True), sa.Column("fingerprint", sa.String(128), nullable=False),
|
|
sa.Column("scenario_id", sa.String(36), nullable=False), sa.Column("run_id", sa.String(36)),
|
|
sa.Column("severity", sa.String(16), nullable=False), sa.Column("status", sa.String(24), nullable=False),
|
|
sa.Column("occurrence_count", sa.Integer(), nullable=False), sa.Column("created_at", sa.DateTime(), nullable=False),
|
|
sa.ForeignKeyConstraint(["scenario_id"], ["scenario_registry_entries.scenario_id"], ondelete="CASCADE"))
|
|
op.create_index("ix_scenario_investigation_queue_fingerprint", "scenario_investigation_queue", ["fingerprint"])
|
|
op.create_index("ix_scenario_investigation_queue_status", "scenario_investigation_queue", ["status"])
|
|
op.create_table("scenario_investigation_cases",
|
|
sa.Column("id", sa.String(36), primary_key=True), sa.Column("fingerprint", sa.String(128), nullable=False, unique=True),
|
|
sa.Column("scenario_id", sa.String(36), nullable=False), sa.Column("status", sa.String(24), nullable=False),
|
|
sa.Column("disposition", sa.String(32)), sa.Column("decision_version", sa.Integer(), nullable=False), sa.Column("created_at", sa.DateTime(), nullable=False),
|
|
sa.ForeignKeyConstraint(["scenario_id"], ["scenario_registry_entries.scenario_id"], ondelete="CASCADE"))
|
|
op.create_table("scenario_agent_actions",
|
|
sa.Column("id", sa.String(36), primary_key=True), sa.Column("case_id", sa.String(36), nullable=False),
|
|
sa.Column("action_type", sa.String(32), nullable=False), sa.Column("payload", sa.JSON(), nullable=False), sa.Column("created_at", sa.DateTime(), nullable=False),
|
|
sa.ForeignKeyConstraint(["case_id"], ["scenario_investigation_cases.id"], ondelete="CASCADE"))
|
|
|
|
def downgrade() -> None:
|
|
op.drop_table("scenario_agent_actions")
|
|
op.drop_table("scenario_investigation_cases")
|
|
op.drop_index("ix_scenario_investigation_queue_status", table_name="scenario_investigation_queue")
|
|
op.drop_index("ix_scenario_investigation_queue_fingerprint", table_name="scenario_investigation_queue")
|
|
op.drop_table("scenario_investigation_queue")
|
|
# #endregion Alembic.ScenarioInvestigationTables
|