| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- """add_app_alert_rules
- Revision ID: add_app_alert_rules
- Revises: 923752d42eb6
- Create Date: 2024-10-28 14:00:00.000000
- """
- import models as models
- import sqlalchemy as sa
- from alembic import op
- from sqlalchemy.dialects import postgresql
- # revision identifiers, used by Alembic.
- revision = "add_app_alert_rules"
- down_revision = "923752d42eb6"
- branch_labels = None
- depends_on = None
- def upgrade():
- # ### commands auto generated by Alembic - please adjust! ###
- # Create app_alert_rules table
- op.create_table(
- "app_alert_rules",
- sa.Column("id", models.types.StringUUID(), server_default=sa.text("uuid_generate_v4()"), nullable=False),
- sa.Column("tenant_id", models.types.StringUUID(), nullable=False),
- sa.Column("app_id", models.types.StringUUID(), nullable=False),
- sa.Column("name", sa.String(255), nullable=False),
- sa.Column("description", sa.Text(), nullable=True),
- sa.Column("is_enabled", sa.Boolean(), server_default=sa.text("true"), nullable=False),
- sa.Column("metric_type", sa.String(50), nullable=False),
- sa.Column("operator", sa.String(10), nullable=False),
- sa.Column("threshold_value", sa.Float(), nullable=False),
- sa.Column("check_interval_minutes", sa.Integer(), server_default=sa.text("5"), nullable=False),
- sa.Column("consecutive_triggers", sa.Integer(), server_default=sa.text("2"), nullable=False),
- sa.Column("notification_channels", postgresql.JSONB(), nullable=False),
- sa.Column("last_triggered_at", sa.DateTime(), nullable=True),
- sa.Column("trigger_count", sa.Integer(), server_default=sa.text("0"), nullable=False),
- sa.Column("consecutive_trigger_count", sa.Integer(), server_default=sa.text("0"), nullable=False),
- sa.Column("created_by", models.types.StringUUID(), nullable=False),
- sa.Column("created_at", sa.DateTime(), server_default=sa.text("CURRENT_TIMESTAMP(0)"), nullable=False),
- sa.Column("updated_at", sa.DateTime(), server_default=sa.text("CURRENT_TIMESTAMP(0)"), nullable=False),
- sa.PrimaryKeyConstraint("id", name="app_alert_rule_pkey"),
- )
- # Create indexes for app_alert_rules
- with op.batch_alter_table("app_alert_rules", schema=None) as batch_op:
- batch_op.create_index("app_alert_rule_app_idx", ["app_id"], unique=False)
- batch_op.create_index("app_alert_rule_tenant_idx", ["tenant_id"], unique=False)
- batch_op.create_index("app_alert_rule_enabled_idx", ["is_enabled"], unique=False)
- # Create app_alert_logs table
- op.create_table(
- "app_alert_logs",
- sa.Column("id", models.types.StringUUID(), server_default=sa.text("uuid_generate_v4()"), nullable=False),
- sa.Column("alert_rule_id", models.types.StringUUID(), nullable=False),
- sa.Column("triggered_at", sa.DateTime(), server_default=sa.text("CURRENT_TIMESTAMP(0)"), nullable=False),
- sa.Column("metric_value", sa.Float(), nullable=False),
- sa.Column("threshold_value", sa.Float(), nullable=False),
- sa.Column("notification_status", postgresql.JSONB(), nullable=False),
- sa.Column("error_message", sa.Text(), nullable=True),
- sa.PrimaryKeyConstraint("id", name="app_alert_log_pkey"),
- )
- # Create indexes for app_alert_logs
- with op.batch_alter_table("app_alert_logs", schema=None) as batch_op:
- batch_op.create_index("app_alert_log_rule_idx", ["alert_rule_id"], unique=False)
- batch_op.create_index("app_alert_log_triggered_at_idx", ["triggered_at"], unique=False)
- # ### end Alembic commands ###
- def downgrade():
- # ### commands auto generated by Alembic - please adjust! ###
- # Drop app_alert_logs table
- with op.batch_alter_table("app_alert_logs", schema=None) as batch_op:
- batch_op.drop_index("app_alert_log_triggered_at_idx")
- batch_op.drop_index("app_alert_log_rule_idx")
- op.drop_table("app_alert_logs")
- # Drop app_alert_rules table
- with op.batch_alter_table("app_alert_rules", schema=None) as batch_op:
- batch_op.drop_index("app_alert_rule_enabled_idx")
- batch_op.drop_index("app_alert_rule_tenant_idx")
- batch_op.drop_index("app_alert_rule_app_idx")
- op.drop_table("app_alert_rules")
- # ### end Alembic commands ###
|