"""audit_and_moderation_fields Revision ID: 398e76c2fa36 Revises: 9b20430f0ebb Create Date: 2026-02-12 19:48:09.530752 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import postgresql # revision identifiers, used by Alembic. revision: str = '398e76c2fa36' down_revision: Union[str, Sequence[str], None] = '9b20430f0ebb' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: """Upgrade schema.""" # ### commands auto generated by Alembic - please adjust! ### op.drop_constraint(op.f('addresses_postal_code_id_fkey'), 'addresses', type_='foreignkey') op.create_foreign_key(None, 'addresses', 'geo_postal_codes', ['postal_code_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('asset_assignments_asset_id_fkey'), 'asset_assignments', type_='foreignkey') op.drop_constraint(op.f('asset_assignments_organization_id_fkey'), 'asset_assignments', type_='foreignkey') op.create_foreign_key(None, 'asset_assignments', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'asset_assignments', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data') op.add_column('asset_costs', sa.Column('net_amount_local', sa.Numeric(precision=18, scale=2), nullable=True)) op.add_column('asset_costs', sa.Column('vat_rate', sa.Numeric(precision=5, scale=2), nullable=True)) op.add_column('asset_costs', sa.Column('exchange_rate_used', sa.Numeric(precision=18, scale=6), nullable=True)) op.alter_column('asset_costs', 'data', existing_type=postgresql.JSON(astext_type=sa.Text()), type_=postgresql.JSONB(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.drop_constraint(op.f('asset_costs_organization_id_fkey'), 'asset_costs', type_='foreignkey') op.drop_constraint(op.f('asset_costs_driver_id_fkey'), 'asset_costs', type_='foreignkey') op.drop_constraint(op.f('asset_costs_asset_id_fkey'), 'asset_costs', type_='foreignkey') op.create_foreign_key(None, 'asset_costs', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'asset_costs', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'asset_costs', 'users', ['driver_id'], ['id'], source_schema='data', referent_schema='data') op.alter_column('asset_events', 'data', existing_type=postgresql.JSON(astext_type=sa.Text()), type_=postgresql.JSONB(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.drop_constraint(op.f('asset_events_asset_id_fkey'), 'asset_events', type_='foreignkey') op.create_foreign_key(None, 'asset_events', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('asset_financials_asset_id_fkey'), 'asset_financials', type_='foreignkey') op.create_foreign_key(None, 'asset_financials', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data') op.alter_column('asset_reviews', 'criteria_scores', existing_type=postgresql.JSON(astext_type=sa.Text()), type_=postgresql.JSONB(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.drop_constraint(op.f('asset_reviews_user_id_fkey'), 'asset_reviews', type_='foreignkey') op.drop_constraint(op.f('asset_reviews_asset_id_fkey'), 'asset_reviews', type_='foreignkey') op.create_foreign_key(None, 'asset_reviews', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'asset_reviews', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('asset_telemetry_asset_id_fkey'), 'asset_telemetry', type_='foreignkey') op.create_foreign_key(None, 'asset_telemetry', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data') op.add_column('assets', sa.Column('verification_notes', sa.Text(), nullable=True)) op.add_column('assets', sa.Column('catalog_match_score', sa.Numeric(precision=5, scale=2), nullable=True)) op.drop_constraint(op.f('assets_current_organization_id_fkey'), 'assets', type_='foreignkey') op.drop_constraint(op.f('assets_catalog_id_fkey'), 'assets', type_='foreignkey') op.create_foreign_key(None, 'assets', 'organizations', ['current_organization_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'assets', 'vehicle_catalog', ['catalog_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('audit_logs_user_id_fkey'), 'audit_logs', type_='foreignkey') op.create_foreign_key(None, 'audit_logs', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('credit_logs_org_id_fkey'), 'credit_logs', type_='foreignkey') op.create_foreign_key(None, 'credit_logs', 'organizations', ['org_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('documents_uploaded_by_fkey'), 'documents', type_='foreignkey') op.create_foreign_key(None, 'documents', 'users', ['uploaded_by'], ['id'], source_schema='data', referent_schema='data') op.drop_column('exchange_rates', 'updated_at') op.alter_column('expertise_tags', 'key', existing_type=sa.VARCHAR(length=50), nullable=True) op.drop_constraint(op.f('expertise_tags_key_key'), 'expertise_tags', type_='unique') op.create_index(op.f('ix_data_expertise_tags_key'), 'expertise_tags', ['key'], unique=True, schema='data') op.drop_constraint(op.f('geo_streets_postal_code_id_fkey'), 'geo_streets', type_='foreignkey') op.create_foreign_key(None, 'geo_streets', 'geo_postal_codes', ['postal_code_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('org_subscriptions_org_id_fkey'), 'org_subscriptions', type_='foreignkey') op.drop_constraint(op.f('org_subscriptions_tier_id_fkey'), 'org_subscriptions', type_='foreignkey') op.create_foreign_key(None, 'org_subscriptions', 'organizations', ['org_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'org_subscriptions', 'subscription_tiers', ['tier_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('organization_members_organization_id_fkey'), 'organization_members', type_='foreignkey') op.drop_constraint(op.f('organization_members_user_id_fkey'), 'organization_members', type_='foreignkey') op.create_foreign_key(None, 'organization_members', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'organization_members', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data') op.alter_column('organizations', 'org_type', existing_type=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype'), type_=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype', schema='data', inherit_schema=True), existing_nullable=True) op.drop_constraint(op.f('organizations_owner_id_fkey'), 'organizations', type_='foreignkey') op.drop_constraint(op.f('organizations_address_id_fkey'), 'organizations', type_='foreignkey') op.create_foreign_key(None, 'organizations', 'addresses', ['address_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'organizations', 'users', ['owner_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('pending_actions_approver_id_fkey'), 'pending_actions', type_='foreignkey') op.drop_constraint(op.f('pending_actions_requester_id_fkey'), 'pending_actions', type_='foreignkey') op.create_foreign_key(None, 'pending_actions', 'users', ['approver_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'pending_actions', 'users', ['requester_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('persons_address_id_fkey'), 'persons', type_='foreignkey') op.create_foreign_key(None, 'persons', 'addresses', ['address_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('points_ledger_user_id_fkey'), 'points_ledger', type_='foreignkey') op.create_foreign_key(None, 'points_ledger', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('ratings_author_id_fkey'), 'ratings', type_='foreignkey') op.create_foreign_key(None, 'ratings', 'users', ['author_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('service_expertises_expertise_id_fkey'), 'service_expertises', type_='foreignkey') op.drop_constraint(op.f('service_expertises_service_id_fkey'), 'service_expertises', type_='foreignkey') op.create_foreign_key(None, 'service_expertises', 'service_profiles', ['service_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'service_expertises', 'expertise_tags', ['expertise_id'], ['id'], source_schema='data', referent_schema='data') op.alter_column('service_profiles', 'verification_log', existing_type=postgresql.JSONB(astext_type=sa.Text()), type_=sa.JSON(), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.alter_column('service_profiles', 'opening_hours', existing_type=postgresql.JSONB(astext_type=sa.Text()), type_=sa.JSON(), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.create_index(op.f('ix_data_service_profiles_id'), 'service_profiles', ['id'], unique=False, schema='data') op.create_index(op.f('ix_data_service_profiles_location'), 'service_profiles', ['location'], unique=False, schema='data') op.create_index(op.f('ix_data_service_profiles_status'), 'service_profiles', ['status'], unique=False, schema='data') op.drop_constraint(op.f('service_profiles_organization_id_fkey'), 'service_profiles', type_='foreignkey') op.create_foreign_key(None, 'service_profiles', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('service_specialties_parent_id_fkey'), 'service_specialties', type_='foreignkey') op.create_foreign_key(None, 'service_specialties', 'service_specialties', ['parent_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('social_accounts_user_id_fkey'), 'social_accounts', type_='foreignkey') op.create_foreign_key(None, 'social_accounts', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data', ondelete='CASCADE') op.drop_constraint(op.f('user_badges_badge_id_fkey'), 'user_badges', type_='foreignkey') op.drop_constraint(op.f('user_badges_user_id_fkey'), 'user_badges', type_='foreignkey') op.create_foreign_key(None, 'user_badges', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'user_badges', 'badges', ['badge_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('user_stats_user_id_fkey'), 'user_stats', type_='foreignkey') op.create_foreign_key(None, 'user_stats', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('users_person_id_fkey'), 'users', type_='foreignkey') op.create_foreign_key(None, 'users', 'persons', ['person_id'], ['id'], source_schema='data', referent_schema='data') op.alter_column('vehicle_catalog', 'factory_data', existing_type=postgresql.JSON(astext_type=sa.Text()), type_=postgresql.JSONB(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.create_index(op.f('ix_data_vehicle_catalog_engine_variant'), 'vehicle_catalog', ['engine_variant'], unique=False, schema='data') op.create_index(op.f('ix_data_vehicle_catalog_fuel_type'), 'vehicle_catalog', ['fuel_type'], unique=False, schema='data') op.create_unique_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', ['make', 'model', 'year_from', 'engine_variant', 'fuel_type'], schema='data') op.drop_constraint(op.f('vehicle_ownerships_user_id_fkey'), 'vehicle_ownerships', type_='foreignkey') op.drop_constraint(op.f('vehicle_ownerships_vehicle_id_fkey'), 'vehicle_ownerships', type_='foreignkey') op.create_foreign_key(None, 'vehicle_ownerships', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data') op.create_foreign_key(None, 'vehicle_ownerships', 'assets', ['vehicle_id'], ['id'], source_schema='data', referent_schema='data') op.drop_constraint(op.f('verification_tokens_user_id_fkey'), 'verification_tokens', type_='foreignkey') op.create_foreign_key(None, 'verification_tokens', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data', ondelete='CASCADE') op.drop_constraint(op.f('wallets_user_id_fkey'), 'wallets', type_='foreignkey') op.create_foreign_key(None, 'wallets', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='data') # ### end Alembic commands ### def downgrade() -> None: """Downgrade schema.""" # ### commands auto generated by Alembic - please adjust! ### op.drop_constraint(None, 'wallets', schema='data', type_='foreignkey') op.create_foreign_key(op.f('wallets_user_id_fkey'), 'wallets', 'users', ['user_id'], ['id']) op.drop_constraint(None, 'verification_tokens', schema='data', type_='foreignkey') op.create_foreign_key(op.f('verification_tokens_user_id_fkey'), 'verification_tokens', 'users', ['user_id'], ['id'], ondelete='CASCADE') op.drop_constraint(None, 'vehicle_ownerships', schema='data', type_='foreignkey') op.drop_constraint(None, 'vehicle_ownerships', schema='data', type_='foreignkey') op.create_foreign_key(op.f('vehicle_ownerships_vehicle_id_fkey'), 'vehicle_ownerships', 'assets', ['vehicle_id'], ['id']) op.create_foreign_key(op.f('vehicle_ownerships_user_id_fkey'), 'vehicle_ownerships', 'users', ['user_id'], ['id']) op.drop_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', schema='data', type_='unique') op.drop_index(op.f('ix_data_vehicle_catalog_fuel_type'), table_name='vehicle_catalog', schema='data') op.drop_index(op.f('ix_data_vehicle_catalog_engine_variant'), table_name='vehicle_catalog', schema='data') op.alter_column('vehicle_catalog', 'factory_data', existing_type=postgresql.JSONB(astext_type=sa.Text()), type_=postgresql.JSON(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.drop_constraint(None, 'users', schema='data', type_='foreignkey') op.create_foreign_key(op.f('users_person_id_fkey'), 'users', 'persons', ['person_id'], ['id']) op.drop_constraint(None, 'user_stats', schema='data', type_='foreignkey') op.create_foreign_key(op.f('user_stats_user_id_fkey'), 'user_stats', 'users', ['user_id'], ['id']) op.drop_constraint(None, 'user_badges', schema='data', type_='foreignkey') op.drop_constraint(None, 'user_badges', schema='data', type_='foreignkey') op.create_foreign_key(op.f('user_badges_user_id_fkey'), 'user_badges', 'users', ['user_id'], ['id']) op.create_foreign_key(op.f('user_badges_badge_id_fkey'), 'user_badges', 'badges', ['badge_id'], ['id']) op.drop_constraint(None, 'social_accounts', schema='data', type_='foreignkey') op.create_foreign_key(op.f('social_accounts_user_id_fkey'), 'social_accounts', 'users', ['user_id'], ['id'], ondelete='CASCADE') op.drop_constraint(None, 'service_specialties', schema='data', type_='foreignkey') op.create_foreign_key(op.f('service_specialties_parent_id_fkey'), 'service_specialties', 'service_specialties', ['parent_id'], ['id']) op.drop_constraint(None, 'service_profiles', schema='data', type_='foreignkey') op.create_foreign_key(op.f('service_profiles_organization_id_fkey'), 'service_profiles', 'organizations', ['organization_id'], ['id']) op.drop_index(op.f('ix_data_service_profiles_status'), table_name='service_profiles', schema='data') op.drop_index(op.f('ix_data_service_profiles_location'), table_name='service_profiles', schema='data') op.drop_index(op.f('ix_data_service_profiles_id'), table_name='service_profiles', schema='data') op.alter_column('service_profiles', 'opening_hours', existing_type=sa.JSON(), type_=postgresql.JSONB(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.alter_column('service_profiles', 'verification_log', existing_type=sa.JSON(), type_=postgresql.JSONB(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.drop_constraint(None, 'service_expertises', schema='data', type_='foreignkey') op.drop_constraint(None, 'service_expertises', schema='data', type_='foreignkey') op.create_foreign_key(op.f('service_expertises_service_id_fkey'), 'service_expertises', 'service_profiles', ['service_id'], ['id']) op.create_foreign_key(op.f('service_expertises_expertise_id_fkey'), 'service_expertises', 'expertise_tags', ['expertise_id'], ['id']) op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey') op.create_foreign_key(op.f('ratings_author_id_fkey'), 'ratings', 'users', ['author_id'], ['id']) op.drop_constraint(None, 'points_ledger', schema='data', type_='foreignkey') op.create_foreign_key(op.f('points_ledger_user_id_fkey'), 'points_ledger', 'users', ['user_id'], ['id']) op.drop_constraint(None, 'persons', schema='data', type_='foreignkey') op.create_foreign_key(op.f('persons_address_id_fkey'), 'persons', 'addresses', ['address_id'], ['id']) op.drop_constraint(None, 'pending_actions', schema='data', type_='foreignkey') op.drop_constraint(None, 'pending_actions', schema='data', type_='foreignkey') op.create_foreign_key(op.f('pending_actions_requester_id_fkey'), 'pending_actions', 'users', ['requester_id'], ['id']) op.create_foreign_key(op.f('pending_actions_approver_id_fkey'), 'pending_actions', 'users', ['approver_id'], ['id']) op.drop_constraint(None, 'organizations', schema='data', type_='foreignkey') op.drop_constraint(None, 'organizations', schema='data', type_='foreignkey') op.create_foreign_key(op.f('organizations_address_id_fkey'), 'organizations', 'addresses', ['address_id'], ['id']) op.create_foreign_key(op.f('organizations_owner_id_fkey'), 'organizations', 'users', ['owner_id'], ['id']) op.alter_column('organizations', 'org_type', existing_type=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype', schema='data', inherit_schema=True), type_=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype'), existing_nullable=True) op.drop_constraint(None, 'organization_members', schema='data', type_='foreignkey') op.drop_constraint(None, 'organization_members', schema='data', type_='foreignkey') op.create_foreign_key(op.f('organization_members_user_id_fkey'), 'organization_members', 'users', ['user_id'], ['id']) op.create_foreign_key(op.f('organization_members_organization_id_fkey'), 'organization_members', 'organizations', ['organization_id'], ['id']) op.drop_constraint(None, 'org_subscriptions', schema='data', type_='foreignkey') op.drop_constraint(None, 'org_subscriptions', schema='data', type_='foreignkey') op.create_foreign_key(op.f('org_subscriptions_tier_id_fkey'), 'org_subscriptions', 'subscription_tiers', ['tier_id'], ['id']) op.create_foreign_key(op.f('org_subscriptions_org_id_fkey'), 'org_subscriptions', 'organizations', ['org_id'], ['id']) op.drop_constraint(None, 'geo_streets', schema='data', type_='foreignkey') op.create_foreign_key(op.f('geo_streets_postal_code_id_fkey'), 'geo_streets', 'geo_postal_codes', ['postal_code_id'], ['id']) op.drop_index(op.f('ix_data_expertise_tags_key'), table_name='expertise_tags', schema='data') op.create_unique_constraint(op.f('expertise_tags_key_key'), 'expertise_tags', ['key'], postgresql_nulls_not_distinct=False) op.alter_column('expertise_tags', 'key', existing_type=sa.VARCHAR(length=50), nullable=False) op.add_column('exchange_rates', sa.Column('updated_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=True)) op.drop_constraint(None, 'documents', schema='data', type_='foreignkey') op.create_foreign_key(op.f('documents_uploaded_by_fkey'), 'documents', 'users', ['uploaded_by'], ['id']) op.drop_constraint(None, 'credit_logs', schema='data', type_='foreignkey') op.create_foreign_key(op.f('credit_logs_org_id_fkey'), 'credit_logs', 'organizations', ['org_id'], ['id']) op.drop_constraint(None, 'audit_logs', schema='data', type_='foreignkey') op.create_foreign_key(op.f('audit_logs_user_id_fkey'), 'audit_logs', 'users', ['user_id'], ['id']) op.drop_constraint(None, 'assets', schema='data', type_='foreignkey') op.drop_constraint(None, 'assets', schema='data', type_='foreignkey') op.create_foreign_key(op.f('assets_catalog_id_fkey'), 'assets', 'vehicle_catalog', ['catalog_id'], ['id']) op.create_foreign_key(op.f('assets_current_organization_id_fkey'), 'assets', 'organizations', ['current_organization_id'], ['id']) op.drop_column('assets', 'catalog_match_score') op.drop_column('assets', 'verification_notes') op.drop_constraint(None, 'asset_telemetry', schema='data', type_='foreignkey') op.create_foreign_key(op.f('asset_telemetry_asset_id_fkey'), 'asset_telemetry', 'assets', ['asset_id'], ['id']) op.drop_constraint(None, 'asset_reviews', schema='data', type_='foreignkey') op.drop_constraint(None, 'asset_reviews', schema='data', type_='foreignkey') op.create_foreign_key(op.f('asset_reviews_asset_id_fkey'), 'asset_reviews', 'assets', ['asset_id'], ['id']) op.create_foreign_key(op.f('asset_reviews_user_id_fkey'), 'asset_reviews', 'users', ['user_id'], ['id']) op.alter_column('asset_reviews', 'criteria_scores', existing_type=postgresql.JSONB(astext_type=sa.Text()), type_=postgresql.JSON(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.drop_constraint(None, 'asset_financials', schema='data', type_='foreignkey') op.create_foreign_key(op.f('asset_financials_asset_id_fkey'), 'asset_financials', 'assets', ['asset_id'], ['id']) op.drop_constraint(None, 'asset_events', schema='data', type_='foreignkey') op.create_foreign_key(op.f('asset_events_asset_id_fkey'), 'asset_events', 'assets', ['asset_id'], ['id']) op.alter_column('asset_events', 'data', existing_type=postgresql.JSONB(astext_type=sa.Text()), type_=postgresql.JSON(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.drop_constraint(None, 'asset_costs', schema='data', type_='foreignkey') op.drop_constraint(None, 'asset_costs', schema='data', type_='foreignkey') op.drop_constraint(None, 'asset_costs', schema='data', type_='foreignkey') op.create_foreign_key(op.f('asset_costs_asset_id_fkey'), 'asset_costs', 'assets', ['asset_id'], ['id']) op.create_foreign_key(op.f('asset_costs_driver_id_fkey'), 'asset_costs', 'users', ['driver_id'], ['id']) op.create_foreign_key(op.f('asset_costs_organization_id_fkey'), 'asset_costs', 'organizations', ['organization_id'], ['id']) op.alter_column('asset_costs', 'data', existing_type=postgresql.JSONB(astext_type=sa.Text()), type_=postgresql.JSON(astext_type=sa.Text()), existing_nullable=True, existing_server_default=sa.text("'{}'::jsonb")) op.drop_column('asset_costs', 'exchange_rate_used') op.drop_column('asset_costs', 'vat_rate') op.drop_column('asset_costs', 'net_amount_local') op.drop_constraint(None, 'asset_assignments', schema='data', type_='foreignkey') op.drop_constraint(None, 'asset_assignments', schema='data', type_='foreignkey') op.create_foreign_key(op.f('asset_assignments_organization_id_fkey'), 'asset_assignments', 'organizations', ['organization_id'], ['id']) op.create_foreign_key(op.f('asset_assignments_asset_id_fkey'), 'asset_assignments', 'assets', ['asset_id'], ['id']) op.drop_constraint(None, 'addresses', schema='data', type_='foreignkey') op.create_foreign_key(op.f('addresses_postal_code_id_fkey'), 'addresses', 'geo_postal_codes', ['postal_code_id'], ['id']) # ### end Alembic commands ###