in src/dispatch/database/revisions/tenant/versions/2022-10-05_534c316ba65b.py [0:0]
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
"duplication_rule",
sa.Column("evergreen", sa.Boolean(), nullable=True),
sa.Column("evergreen_owner", sa.String(), nullable=True),
sa.Column("evergreen_reminder_interval", sa.Integer(), nullable=True),
sa.Column("evergreen_last_reminder_at", sa.DateTime(), nullable=True),
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("name", sa.String(), nullable=True),
sa.Column("description", sa.String(), nullable=True),
sa.Column("expression", sa.JSON(), nullable=False),
sa.Column("creator_id", sa.Integer(), nullable=True),
sa.Column("mode", sa.String(), nullable=False),
sa.Column("search_vector", sqlalchemy_utils.types.ts_vector.TSVectorType(), nullable=True),
sa.Column("project_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["creator_id"],
["dispatch_core.dispatch_user.id"],
),
sa.ForeignKeyConstraint(["project_id"], ["project.id"], ondelete="CASCADE"),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("name", "project_id"),
)
op.create_index(
"duplication_rule_search_vector_idx",
"duplication_rule",
["search_vector"],
unique=False,
postgresql_using="gin",
)
op.create_table(
"suppression_rule",
sa.Column("evergreen", sa.Boolean(), nullable=True),
sa.Column("evergreen_owner", sa.String(), nullable=True),
sa.Column("evergreen_reminder_interval", sa.Integer(), nullable=True),
sa.Column("evergreen_last_reminder_at", sa.DateTime(), nullable=True),
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("name", sa.String(), nullable=True),
sa.Column("description", sa.String(), nullable=True),
sa.Column("expression", sa.JSON(), nullable=False),
sa.Column("creator_id", sa.Integer(), nullable=True),
sa.Column("mode", sa.String(), nullable=False),
sa.Column("expiration", sa.DateTime(), nullable=True),
sa.Column("search_vector", sqlalchemy_utils.types.ts_vector.TSVectorType(), nullable=True),
sa.Column("project_id", sa.Integer(), nullable=True),
sa.ForeignKeyConstraint(
["creator_id"],
["dispatch_core.dispatch_user.id"],
),
sa.ForeignKeyConstraint(["project_id"], ["project.id"], ondelete="CASCADE"),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("name", "project_id"),
)
op.create_index(
"suppression_rule_search_vector_idx",
"suppression_rule",
["search_vector"],
unique=False,
postgresql_using="gin",
)
op.create_table(
"signal",
sa.Column("id", postgresql.UUID(as_uuid=True), nullable=False),
sa.Column("name", sa.String(), nullable=True),
sa.Column("external_url", sa.String(), nullable=True),
sa.Column("external_id", sa.String(), nullable=True),
sa.Column("severity", sa.String(), nullable=True),
sa.Column("detection", sa.String(), nullable=True),
sa.Column("detection_variant", sa.String(), nullable=True),
sa.Column("raw", postgresql.JSONB(astext_type=sa.Text()), nullable=True),
sa.Column("source_id", sa.Integer(), nullable=True),
sa.Column("case_id", sa.Integer(), nullable=True),
sa.Column("duplication_rule_id", sa.Integer(), nullable=True),
sa.Column("suppression_rule_id", sa.Integer(), nullable=True),
sa.Column("search_vector", sqlalchemy_utils.types.ts_vector.TSVectorType(), nullable=True),
sa.Column("project_id", sa.Integer(), nullable=True),
sa.Column("updated_at", sa.DateTime(), nullable=True),
sa.Column("created_at", sa.DateTime(), nullable=True),
sa.ForeignKeyConstraint(
["case_id"],
["case.id"],
),
sa.ForeignKeyConstraint(
["duplication_rule_id"],
["duplication_rule.id"],
),
sa.ForeignKeyConstraint(["project_id"], ["project.id"], ondelete="CASCADE"),
sa.ForeignKeyConstraint(
["source_id"],
["source.id"],
),
sa.ForeignKeyConstraint(
["suppression_rule_id"],
["suppression_rule.id"],
),
sa.PrimaryKeyConstraint("id"),
)
op.create_index(
"signal_search_vector_idx",
"signal",
["search_vector"],
unique=False,
postgresql_using="gin",
)