main
py 108 lines 4.92 KB
Raw
1 """Add case template tables
2
3 Revision ID: 6ba5c2887ec5
4 Revises: 51e33a247851
5 Create Date: 2026-04-26 19:01:10.218459
6
7 """
8 from typing import Sequence
9 from typing import Union
10
11 import sqlalchemy as sa
12
13 from alembic import op
14
15 # revision identifiers, used by Alembic.
16 revision: str = "6ba5c2887ec5"
17 down_revision: Union[str, None] = "51e33a247851"
18 branch_labels: Union[str, Sequence[str], None] = None
19 depends_on: Union[str, Sequence[str], None] = None
20
21
22 def upgrade() -> None:
23 # ### commands auto generated by Alembic - please adjust! ###
24 op.create_table(
25 "incident_management_case_template",
26 sa.Column("id", sa.Integer(), nullable=False),
27 sa.Column("name", sa.String(length=255), nullable=False),
28 sa.Column("description", sa.String(length=255), nullable=True),
29 sa.Column("customer_code", sa.String(length=50), nullable=True),
30 sa.Column("source", sa.String(length=50), nullable=True),
31 sa.Column("is_default", sa.Boolean(), nullable=False),
32 sa.Column("created_by", sa.String(length=100), nullable=False),
33 sa.Column("created_at", sa.DateTime(), nullable=False),
34 sa.Column("updated_at", sa.DateTime(), nullable=False),
35 sa.PrimaryKeyConstraint("id"),
36 )
37 op.create_table(
38 "incident_management_case_event",
39 sa.Column("payload", sa.JSON(), nullable=True),
40 sa.Column("id", sa.Integer(), nullable=False),
41 sa.Column("case_id", sa.Integer(), nullable=False),
42 sa.Column("event_type", sa.String(length=64), nullable=False),
43 sa.Column("actor", sa.String(length=100), nullable=False),
44 sa.Column("timestamp", sa.DateTime(), nullable=False),
45 sa.ForeignKeyConstraint(
46 ["case_id"],
47 ["incident_management_case.id"],
48 ),
49 sa.PrimaryKeyConstraint("id"),
50 )
51 op.create_index(op.f("ix_incident_management_case_event_case_id"), "incident_management_case_event", ["case_id"], unique=False)
52 op.create_index(op.f("ix_incident_management_case_event_event_type"), "incident_management_case_event", ["event_type"], unique=False)
53 op.create_index(op.f("ix_incident_management_case_event_timestamp"), "incident_management_case_event", ["timestamp"], unique=False)
54 op.create_table(
55 "incident_management_case_template_task",
56 sa.Column("id", sa.Integer(), nullable=False),
57 sa.Column("template_id", sa.Integer(), nullable=False),
58 sa.Column("title", sa.String(length=500), nullable=False),
59 sa.Column("description", sa.String(length=255), nullable=True),
60 sa.Column("guidelines", sa.String(length=255), nullable=True),
61 sa.Column("mandatory", sa.Boolean(), nullable=False),
62 sa.Column("order_index", sa.Integer(), nullable=False),
63 sa.ForeignKeyConstraint(
64 ["template_id"],
65 ["incident_management_case_template.id"],
66 ),
67 sa.PrimaryKeyConstraint("id"),
68 )
69 op.create_table(
70 "incident_management_case_task",
71 sa.Column("id", sa.Integer(), nullable=False),
72 sa.Column("case_id", sa.Integer(), nullable=False),
73 sa.Column("template_task_id", sa.Integer(), nullable=True),
74 sa.Column("title", sa.String(length=500), nullable=False),
75 sa.Column("description", sa.String(length=255), nullable=True),
76 sa.Column("guidelines", sa.String(length=255), nullable=True),
77 sa.Column("mandatory", sa.Boolean(), nullable=False),
78 sa.Column("order_index", sa.Integer(), nullable=False),
79 sa.Column("status", sa.String(length=50), nullable=False),
80 sa.Column("evidence_comment", sa.String(length=255), nullable=True),
81 sa.Column("completed_by", sa.String(length=100), nullable=True),
82 sa.Column("completed_at", sa.DateTime(), nullable=True),
83 sa.Column("created_by", sa.String(length=100), nullable=False),
84 sa.Column("created_at", sa.DateTime(), nullable=False),
85 sa.Column("updated_at", sa.DateTime(), nullable=False),
86 sa.ForeignKeyConstraint(
87 ["case_id"],
88 ["incident_management_case.id"],
89 ),
90 sa.ForeignKeyConstraint(
91 ["template_task_id"],
92 ["incident_management_case_template_task.id"],
93 ),
94 sa.PrimaryKeyConstraint("id"),
95 )
96 # ### end Alembic commands ###
97
98
99 def downgrade() -> None:
100 # ### commands auto generated by Alembic - please adjust! ###
101 op.drop_table("incident_management_case_task")
102 op.drop_table("incident_management_case_template_task")
103 op.drop_index(op.f("ix_incident_management_case_event_timestamp"), table_name="incident_management_case_event")
104 op.drop_index(op.f("ix_incident_management_case_event_event_type"), table_name="incident_management_case_event")
105 op.drop_index(op.f("ix_incident_management_case_event_case_id"), table_name="incident_management_case_event")
106 op.drop_table("incident_management_case_event")
107 op.drop_table("incident_management_case_template")
108 # ### end Alembic commands ###