"""add provision_policies table Revision ID: 022 Revises: 021 Create Date: 2026-04-17 """ import sqlalchemy as sa from alembic import op from app.core.migration_helpers import id_type_for, table_kw_for revision = '022' down_revision = '021' def upgrade() -> None: ID = id_type_for("identity_persons") KW = table_kw_for("identity_persons") op.create_table( 'provision_policies', sa.Column('id', ID, primary_key=True), sa.Column('department_name', sa.String(128), nullable=True), sa.Column('target_type', sa.String(32), nullable=False), sa.Column('target_id', ID, nullable=False), sa.Column('is_active', sa.Boolean, nullable=False, server_default=sa.text('1')), sa.Column('notes', sa.Text, nullable=True), sa.Column('created_by', ID, sa.ForeignKey('identity_persons.id'), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), sa.Column('updated_at', sa.DateTime(timezone=True), nullable=False, server_default=sa.func.now()), **KW, ) op.create_index( 'ix_provision_policies_department_active', 'provision_policies', ['department_name', 'is_active'], ) op.create_unique_constraint( 'uq_provision_policy_dep_target', 'provision_policies', ['department_name', 'target_type', 'target_id'], ) def downgrade() -> None: op.drop_constraint( 'uq_provision_policy_dep_target', 'provision_policies', type_='unique', ) op.drop_index('ix_provision_policies_department_active', table_name='provision_policies') op.drop_table('provision_policies')