"""A rule can cover every host, or every host in an inventory group (#5464): the covering rule keeps one child rule per host under it. Revision ID: 0041_alert_rule_covers Revises: 0040_alert_event_actor Create Date: 2026-10-09 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa revision: str = "0041_alert_rule_covers" down_revision: Union[str, None] = "0040_alert_event_actor" branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: op.add_column("alert_rules", sa.Column("covers", sa.String(16), nullable=False, server_default="resource")) op.add_column("alert_rules", sa.Column("cover_group", sa.String(128), nullable=True)) op.add_column("alert_rules", sa.Column( "parent_id", sa.String(36), sa.ForeignKey("alert_rules.id", ondelete="CASCADE"), nullable=True)) op.create_index("ix_alert_rules_parent_id", "alert_rules", ["parent_id"]) def downgrade() -> None: op.drop_index("ix_alert_rules_parent_id", table_name="alert_rules") op.drop_column("alert_rules", "parent_id") op.drop_column("alert_rules", "cover_group") op.drop_column("alert_rules", "covers")