51 lines
1.9 KiB
Python
51 lines
1.9 KiB
Python
"""Fix tenant_id nullable constraint for tenant-independent subscriptions
|
|
|
|
This migration fixes the database schema issue where tenant_id was incorrectly
|
|
defined as NOT NULL, preventing tenant-independent subscription creation during
|
|
registration.
|
|
|
|
Revision ID: 002_fix_tenant_id_nullable
|
|
Revises: 001_unified_initial_schema
|
|
Create Date: 2026-01-15 19:00:00.000000+00:00
|
|
|
|
"""
|
|
from typing import Sequence, Union
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision: str = '002_fix_tenant_id_nullable'
|
|
down_revision: Union[str, None] = '001_unified_initial_schema'
|
|
branch_labels: Union[str, Sequence[str], None] = None
|
|
depends_on: Union[str, Sequence[str], None] = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# First, drop the foreign key constraint temporarily
|
|
op.drop_constraint('subscriptions_tenant_id_fkey', 'subscriptions', type_='foreignkey')
|
|
|
|
# Alter the tenant_id column to be nullable
|
|
op.alter_column('subscriptions', 'tenant_id',
|
|
existing_type=sa.UUID(),
|
|
nullable=True)
|
|
|
|
# Recreate the foreign key constraint
|
|
op.create_foreign_key('subscriptions_tenant_id_fkey', 'subscriptions', 'tenants',
|
|
['tenant_id'], ['id'], ondelete='CASCADE')
|
|
|
|
|
|
def downgrade() -> None:
|
|
# Drop the foreign key constraint temporarily
|
|
op.drop_constraint('subscriptions_tenant_id_fkey', 'subscriptions', type_='foreignkey')
|
|
|
|
# Revert the tenant_id column to be non-nullable
|
|
# Note: This will fail if there are any records with tenant_id = NULL
|
|
op.alter_column('subscriptions', 'tenant_id',
|
|
existing_type=sa.UUID(),
|
|
nullable=False)
|
|
|
|
# Recreate the foreign key constraint
|
|
op.create_foreign_key('subscriptions_tenant_id_fkey', 'subscriptions', 'tenants',
|
|
['tenant_id'], ['id'], ondelete='CASCADE') |