main
py 126 lines 4.89 KB
Raw
1 """Add incident tables
2
3 Revision ID: 1501739c6898
4 Revises: fed7739bd07c
5 Create Date: 2024-07-15 09:07:17.324615
6
7 """
8 from typing import Sequence
9 from typing import Union
10
11 import sqlalchemy as sa
12 from sqlalchemy.dialects import mysql
13
14 from alembic import op
15
16 # revision identifiers, used by Alembic.
17 revision: str = "1501739c6898"
18 down_revision: Union[str, None] = "fed7739bd07c"
19 branch_labels: Union[str, Sequence[str], None] = None
20 depends_on: Union[str, Sequence[str], None] = None
21
22
23 def upgrade() -> None:
24 # ### commands auto generated by Alembic - please adjust! ###
25 op.create_table(
26 "incident_management_alert",
27 sa.Column("id", sa.Integer(), nullable=False),
28 sa.Column("alert_name", mysql.TEXT(length=1000000), nullable=False),
29 sa.Column("alert_description", mysql.TEXT(length=1000000), nullable=False),
30 sa.Column("status", sa.String(length=50), nullable=False),
31 sa.Column("alert_creation_time", sa.DateTime(), nullable=False),
32 sa.Column("customer_code", sa.String(length=50), nullable=False),
33 sa.Column("time_closed", sa.DateTime(), nullable=True),
34 sa.Column("source", sa.String(length=50), nullable=False),
35 sa.PrimaryKeyConstraint("id"),
36 )
37 op.create_table(
38 "incident_management_alertcontext",
39 sa.Column("context", sa.JSON(), nullable=True),
40 sa.Column("id", sa.Integer(), nullable=False),
41 sa.Column("source", sa.String(length=50), nullable=False),
42 sa.PrimaryKeyConstraint("id"),
43 )
44 op.create_table(
45 "incident_management_assetfieldname",
46 sa.Column("id", sa.Integer(), nullable=False),
47 sa.Column("source", sa.String(length=50), nullable=False),
48 sa.Column("field_name", sa.String(length=100), nullable=False),
49 sa.PrimaryKeyConstraint("id"),
50 )
51 op.create_table(
52 "incident_management_case",
53 sa.Column("id", sa.Integer(), nullable=False),
54 sa.Column("case_name", sa.String(length=10000), nullable=False),
55 sa.Column("case_description", mysql.TEXT(length=1000000), nullable=False),
56 sa.PrimaryKeyConstraint("id"),
57 )
58 op.create_table(
59 "incident_management_fieldname",
60 sa.Column("id", sa.Integer(), nullable=False),
61 sa.Column("source", sa.String(length=50), nullable=False),
62 sa.Column("field_name", sa.String(length=100), nullable=False),
63 sa.PrimaryKeyConstraint("id"),
64 )
65 op.create_table(
66 "incident_management_asset",
67 sa.Column("id", sa.Integer(), nullable=False),
68 sa.Column("alert_linked", sa.Integer(), nullable=True),
69 sa.Column("asset_name", sa.String(length=255), nullable=False),
70 sa.Column("alert_context_id", sa.Integer(), nullable=False),
71 sa.Column("agent_id", sa.String(length=50), nullable=True),
72 sa.Column("velociraptor_id", sa.String(length=150), nullable=True),
73 sa.Column("customer_code", sa.String(length=50), nullable=False),
74 sa.Column("index_name", sa.String(length=255), nullable=False),
75 sa.Column("index_id", sa.String(length=255), nullable=False),
76 sa.ForeignKeyConstraint(
77 ["alert_context_id"],
78 ["incident_management_alertcontext.id"],
79 ),
80 sa.ForeignKeyConstraint(
81 ["alert_linked"],
82 ["incident_management_alert.id"],
83 ),
84 sa.PrimaryKeyConstraint("id"),
85 )
86 op.create_table(
87 "incident_management_casealertlink",
88 sa.Column("case_id", sa.Integer(), nullable=True),
89 sa.Column("alert_id", sa.Integer(), nullable=True),
90 sa.ForeignKeyConstraint(
91 ["alert_id"],
92 ["incident_management_alert.id"],
93 ),
94 sa.ForeignKeyConstraint(
95 ["case_id"],
96 ["incident_management_case.id"],
97 ),
98 sa.PrimaryKeyConstraint("case_id", "alert_id"),
99 )
100 op.create_table(
101 "incident_management_comment",
102 sa.Column("id", sa.Integer(), nullable=False),
103 sa.Column("alert_id", sa.Integer(), nullable=True),
104 sa.Column("comment", mysql.TEXT(length=1000000), nullable=False),
105 sa.Column("user_name", sa.String(length=50), nullable=False),
106 sa.Column("created_at", sa.DateTime(), nullable=False),
107 sa.ForeignKeyConstraint(
108 ["alert_id"],
109 ["incident_management_alert.id"],
110 ),
111 sa.PrimaryKeyConstraint("id"),
112 )
113 # ### end Alembic commands ###
114
115
116 def downgrade() -> None:
117 # ### commands auto generated by Alembic - please adjust! ###
118 op.drop_table("incident_management_comment")
119 op.drop_table("incident_management_casealertlink")
120 op.drop_table("incident_management_asset")
121 op.drop_table("incident_management_fieldname")
122 op.drop_table("incident_management_case")
123 op.drop_table("incident_management_assetfieldname")
124 op.drop_table("incident_management_alertcontext")
125 op.drop_table("incident_management_alert")
126 # ### end Alembic commands ###