aibilly_backend_code/src/migrations/019_create_emr_integrations_table.py
laxmanhalaki b793ac859a
Some checks failed
CI/CD Pipeline / test (push) Has been cancelled
CI/CD Pipeline / build (push) Has been cancelled
CI/CD Pipeline / deploy-staging (push) Has been cancelled
CI/CD Pipeline / deploy-production (push) Has been cancelled
modification done to up the project
2026-03-12 20:52:08 +05:30

92 lines
3.7 KiB
Python

"""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')