"""Migration for emr_integrations Revision ID: auto Revises: None Create Date: auto """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. revision = 'auto' down_revision = None branch_labels = None depends_on = None def upgrade() -> None: op.create_table( 'emr_integrations', sa.Column('id', postgresql.UUID(as_uuid=True), primary_key=True, nullable=False), sa.Column('organization_id', postgresql.UUID(as_uuid=True), nullable=False), sa.Column('emr_system', sa.String(100), nullable=False), sa.Column('emr_version', sa.String(50), nullable=True), sa.Column('integration_type', sa.String(50), nullable=False), sa.Column('fhir_base_url', sa.String(500), nullable=True), sa.Column('api_endpoint', sa.String(500), nullable=True), sa.Column('auth_type', sa.String(50), nullable=False), sa.Column('client_id', sa.String(255), nullable=True), sa.Column('client_secret_encrypted', sa.Text(), nullable=True), sa.Column('api_key_encrypted', sa.Text(), nullable=True), sa.Column('token_url', sa.String(500), nullable=True), sa.Column('scopes', postgresql.JSONB(), nullable=True), sa.Column('approval_status', sa.String(50), nullable=True), sa.Column('approval_date', sa.Date(), nullable=True), sa.Column('epic_approval_months_estimate', sa.Integer(), nullable=True), sa.Column('data_mappings', postgresql.JSONB(), nullable=True), sa.Column('supported_resources', postgresql.JSONB(), nullable=True), sa.Column('last_sync_at', sa.DateTime(timezone=True), nullable=True), sa.Column('last_sync_status', sa.String(50), nullable=True), sa.Column('last_error_message', sa.Text(), nullable=True), sa.Column('retry_count', sa.Integer(), nullable=True), sa.Column('rate_limit_per_minute', sa.Integer(), nullable=True), sa.Column('use_mock_data', sa.Boolean(), nullable=True), sa.Column('configuration_notes', sa.Text(), nullable=True), sa.Column('connection_status', sa.String(50), server_default='disconnected', nullable=False), sa.Column('created_by_id', postgresql.UUID(as_uuid=True), nullable=True), sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False), sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('CURRENT_TIMESTAMP'), onupdate=sa.text('CURRENT_TIMESTAMP'), nullable=False), ) op.create_index( 'idx_emr_integrations_organization_id', 'emr_integrations', ['organization_id'], ) op.create_index( 'idx_emr_integrations_emr_system', 'emr_integrations', ['emr_system'], ) op.create_index( 'idx_emr_integrations_connection_status', 'emr_integrations', ['connection_status'], ) op.create_index( 'idx_emr_integrations_approval_status', 'emr_integrations', ['approval_status'], ) op.create_index( 'idx_emr_integrations_last_sync_at', 'emr_integrations', ['last_sync_at'], ) def downgrade() -> None: op.drop_index('idx_emr_integrations_organization_id', table_name='emr_integrations') op.drop_index('idx_emr_integrations_emr_system', table_name='emr_integrations') op.drop_index('idx_emr_integrations_connection_status', table_name='emr_integrations') op.drop_index('idx_emr_integrations_approval_status', table_name='emr_integrations') op.drop_index('idx_emr_integrations_last_sync_at', table_name='emr_integrations') op.drop_table('emr_integrations')