"""Add push configs and events. Revision ID: 0007_add_push_configs_and_events Revises: 0006_add_reading_events_and_memory_items Create Date: 2025-12-24 16:40:00.000000 """ from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision = "0007_add_push_configs_and_events" down_revision = "0006_add_reading_events_and_memory_items" branch_labels = None depends_on = None def upgrade() -> None: op.create_table( "push_configs", sa.Column("id", sa.String(length=36), primary_key=True), sa.Column("user_id", sa.String(length=255), nullable=False), sa.Column("child_profile_id", sa.String(length=36), nullable=False), sa.Column("push_time", sa.Time(), nullable=True), sa.Column("push_days", sa.JSON(), nullable=False, server_default="[]"), sa.Column("enabled", sa.Boolean(), nullable=False, server_default=sa.true()), sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now()), sa.Column( "updated_at", sa.DateTime(timezone=True), server_default=sa.func.now(), onupdate=sa.func.now(), ), sa.ForeignKeyConstraint(["user_id"], ["users.id"], ondelete="CASCADE"), sa.ForeignKeyConstraint(["child_profile_id"], ["child_profiles.id"], ondelete="CASCADE"), sa.UniqueConstraint("child_profile_id", name="uq_push_config_child"), ) op.create_index("ix_push_configs_user_id", "push_configs", ["user_id"]) op.create_index("ix_push_configs_child_profile_id", "push_configs", ["child_profile_id"]) op.create_table( "push_events", sa.Column("id", sa.String(length=36), primary_key=True), sa.Column("user_id", sa.String(length=255), nullable=False), sa.Column("child_profile_id", sa.String(length=36), nullable=False), sa.Column("trigger_type", sa.String(length=20), nullable=False), sa.Column("status", sa.String(length=20), nullable=False), sa.Column("reason", sa.Text(), nullable=True), sa.Column("sent_at", sa.DateTime(timezone=True), nullable=False), sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now()), sa.ForeignKeyConstraint(["user_id"], ["users.id"], ondelete="CASCADE"), sa.ForeignKeyConstraint(["child_profile_id"], ["child_profiles.id"], ondelete="CASCADE"), ) op.create_index("ix_push_events_user_id", "push_events", ["user_id"]) op.create_index("ix_push_events_child_profile_id", "push_events", ["child_profile_id"]) op.create_index("ix_push_events_sent_at", "push_events", ["sent_at"]) def downgrade() -> None: op.drop_index("ix_push_events_sent_at", table_name="push_events") op.drop_index("ix_push_events_child_profile_id", table_name="push_events") op.drop_index("ix_push_events_user_id", table_name="push_events") op.drop_table("push_events") op.drop_index("ix_push_configs_child_profile_id", table_name="push_configs") op.drop_index("ix_push_configs_user_id", table_name="push_configs") op.drop_table("push_configs")