Initial commit: Robot ökoszisztéma v2.0 - Stabilizált jármű és szerviz robotok
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
"""fix_org_lifecycle_and_expertise_id
|
||||
Revision ID: 0473a3146058
|
||||
Revises: 1d75b3806b43
|
||||
Create Date: 2026-02-28 00:15:15.823744
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '0473a3146058'
|
||||
down_revision: Union[str, Sequence[str], None] = '1d75b3806b43'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
def upgrade() -> None:
|
||||
# --- 1. Organizations tábla bővítése (Életciklus adatok) ---
|
||||
# Megjegyzés: A schema='data' kritikus, mert ott lakik a tábla!
|
||||
op.add_column('organizations', sa.Column('legal_owner_id', sa.Integer(), nullable=True), schema='data')
|
||||
op.add_column('organizations', sa.Column('first_registered_at', sa.DateTime(timezone=True), nullable=True), schema='data')
|
||||
op.add_column('organizations', sa.Column('current_lifecycle_started_at', sa.DateTime(timezone=True), nullable=True), schema='data')
|
||||
op.add_column('organizations', sa.Column('last_deactivated_at', sa.DateTime(timezone=True), nullable=True), schema='data')
|
||||
op.add_column('organizations', sa.Column('lifecycle_index', sa.Integer(), server_default='0', nullable=False), schema='data')
|
||||
|
||||
# --- 2. Service Expertises tábla bővítése (Hiányzó ID) ---
|
||||
# Identity-t használunk, hogy automatikusan generáljon számokat a meglévő sorokhoz is
|
||||
op.add_column('service_expertises', sa.Column('id', sa.Integer(), sa.Identity(always=False), nullable=False), schema='data')
|
||||
|
||||
# Opcionális: Ha az ID-t elsődleges kulccsá akarod tenni
|
||||
# op.create_primary_key('pk_service_expertises', 'service_expertises', ['id'], schema='data')
|
||||
|
||||
def downgrade() -> None:
|
||||
# Visszaállítási logika (fordított sorrendben)
|
||||
op.drop_column('service_expertises', 'id', schema='data')
|
||||
op.drop_column('organizations', 'lifecycle_index', schema='data')
|
||||
op.drop_column('organizations', 'last_deactivated_at', schema='data')
|
||||
op.drop_column('organizations', 'current_lifecycle_started_at', schema='data')
|
||||
op.drop_column('organizations', 'first_registered_at', schema='data')
|
||||
op.drop_column('organizations', 'legal_owner_id', schema='data')
|
||||
@@ -0,0 +1,536 @@
|
||||
"""Fix_Persons_Schema_and_Final_Integrity
|
||||
|
||||
Revision ID: 062cfbbdd076
|
||||
Revises: f7505332b1c8
|
||||
Create Date: 2026-02-24 22:34:52.364686
|
||||
|
||||
"""
|
||||
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 = '062cfbbdd076'
|
||||
down_revision: Union[str, Sequence[str], None] = 'f7505332b1c8'
|
||||
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.create_table('asset_inspections',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('inspector_id', sa.Integer(), nullable=False),
|
||||
sa.Column('timestamp', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('checklist_results', postgresql.JSONB(astext_type=sa.Text()), nullable=False),
|
||||
sa.Column('is_safe', sa.Boolean(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['inspector_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('vehicle_logbook',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('driver_id', sa.Integer(), nullable=False),
|
||||
sa.Column('trip_type', sa.String(length=30), nullable=False),
|
||||
sa.Column('is_reimbursable', sa.Boolean(), nullable=False),
|
||||
sa.Column('start_mileage', sa.Integer(), nullable=False),
|
||||
sa.Column('end_mileage', sa.Integer(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['driver_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_vehicle_logbook_trip_type'), 'vehicle_logbook', ['trip_type'], unique=False, schema='data')
|
||||
op.create_table('vehicle_ownership_history',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('acquired_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('disposed_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
# op.drop_table('spatial_ref_sys', schema='public')
|
||||
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_branch_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_assignments_organization_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_assignments_asset_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.drop_column('asset_assignments', 'released_at')
|
||||
op.drop_column('asset_assignments', 'branch_id')
|
||||
op.drop_column('asset_assignments', 'assigned_at')
|
||||
op.add_column('asset_costs', sa.Column('cost_category', sa.String(length=50), nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('amount_net', sa.Numeric(precision=18, scale=2), nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('currency', sa.String(length=3), nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('invoice_number', sa.String(length=100), nullable=True))
|
||||
op.drop_index(op.f('ix_data_asset_costs_registration_uuid'), table_name='asset_costs')
|
||||
op.create_index(op.f('ix_data_asset_costs_cost_category'), 'asset_costs', ['cost_category'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_asset_costs_invoice_number'), 'asset_costs', ['invoice_number'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('asset_costs_driver_id_fkey'), 'asset_costs', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_costs_organization_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.drop_column('asset_costs', 'driver_id')
|
||||
op.drop_column('asset_costs', 'amount_eur')
|
||||
op.drop_column('asset_costs', 'registration_uuid')
|
||||
op.drop_column('asset_costs', 'exchange_rate_used')
|
||||
op.drop_column('asset_costs', 'cost_type')
|
||||
op.drop_column('asset_costs', 'mileage_at_cost')
|
||||
op.drop_column('asset_costs', 'currency_local')
|
||||
op.drop_column('asset_costs', 'amount_local')
|
||||
op.drop_column('asset_costs', 'vat_rate')
|
||||
op.drop_column('asset_costs', 'net_amount_local')
|
||||
op.drop_index(op.f('ix_data_asset_events_registration_uuid'), table_name='asset_events')
|
||||
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_column('asset_events', 'recorded_mileage')
|
||||
op.drop_column('asset_events', 'data')
|
||||
op.drop_column('asset_events', 'registration_uuid')
|
||||
op.add_column('asset_financials', sa.Column('purchase_price_net', sa.Numeric(precision=18, scale=2), nullable=False))
|
||||
op.add_column('asset_financials', sa.Column('purchase_price_gross', sa.Numeric(precision=18, scale=2), nullable=False))
|
||||
op.add_column('asset_financials', sa.Column('vat_rate', sa.Numeric(precision=5, scale=2), nullable=False))
|
||||
op.add_column('asset_financials', sa.Column('activation_date', sa.DateTime(), nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('accounting_details', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False))
|
||||
op.alter_column('asset_financials', 'financing_type',
|
||||
existing_type=sa.VARCHAR(),
|
||||
nullable=False)
|
||||
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.drop_column('asset_financials', 'acquisition_date')
|
||||
op.drop_column('asset_financials', 'residual_value_estimate')
|
||||
op.drop_column('asset_financials', 'acquisition_price')
|
||||
op.drop_constraint(op.f('asset_reviews_asset_id_fkey'), 'asset_reviews', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_reviews_user_id_fkey'), 'asset_reviews', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'asset_reviews', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'asset_reviews', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('asset_reviews', 'criteria_scores')
|
||||
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.drop_column('asset_telemetry', 'dbs_score')
|
||||
op.drop_column('asset_telemetry', 'vqi_score')
|
||||
op.drop_column('asset_telemetry', 'mileage_unit')
|
||||
op.add_column('assets', sa.Column('first_registration_date', sa.DateTime(timezone=True), nullable=True))
|
||||
op.add_column('assets', sa.Column('current_mileage', sa.Integer(), nullable=False))
|
||||
op.add_column('assets', sa.Column('condition_score', sa.Integer(), nullable=False))
|
||||
op.add_column('assets', sa.Column('is_for_sale', sa.Boolean(), nullable=False))
|
||||
op.add_column('assets', sa.Column('price', sa.Numeric(precision=15, scale=2), nullable=True))
|
||||
op.add_column('assets', sa.Column('currency', sa.String(length=3), nullable=False))
|
||||
op.add_column('assets', sa.Column('individual_equipment', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False))
|
||||
op.drop_index(op.f('ix_data_assets_registration_uuid'), table_name='assets')
|
||||
op.create_index(op.f('ix_data_assets_current_mileage'), 'assets', ['current_mileage'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_is_for_sale'), 'assets', ['is_for_sale'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_year_of_manufacture'), 'assets', ['year_of_manufacture'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('assets_owner_org_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_operator_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_catalog_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_owner_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_operator_org_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_current_organization_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['operator_org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'assets', 'persons', ['owner_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['owner_org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'assets', 'persons', ['operator_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'assets', 'vehicle_catalog', ['catalog_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['current_organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('assets', 'is_verified')
|
||||
op.drop_column('assets', 'is_corporate')
|
||||
op.drop_column('assets', 'catalog_match_score')
|
||||
op.drop_column('assets', 'registration_uuid')
|
||||
op.drop_column('assets', 'verification_notes')
|
||||
op.drop_column('assets', 'verification_method')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
existing_nullable=False)
|
||||
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='identity')
|
||||
op.drop_constraint(op.f('branches_address_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.drop_constraint(op.f('branches_organization_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'branches', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'branches', 'addresses', ['address_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('_make_model_class_uc'), 'catalog_discovery', type_='unique')
|
||||
op.drop_index(op.f('ix_data_catalog_discovery_vehicle_class'), table_name='catalog_discovery')
|
||||
op.create_unique_constraint('_make_model_uc', 'catalog_discovery', ['make', 'model'], schema='data')
|
||||
op.drop_column('catalog_discovery', 'last_attempt')
|
||||
op.drop_column('catalog_discovery', 'source')
|
||||
op.drop_column('catalog_discovery', 'created_at')
|
||||
op.drop_column('catalog_discovery', 'vehicle_class')
|
||||
op.drop_column('catalog_discovery', 'priority_score')
|
||||
op.drop_column('catalog_discovery', 'attempts')
|
||||
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('exchange_rates_target_currency_key'), 'exchange_rates', type_='unique')
|
||||
op.drop_column('exchange_rates', 'base_currency')
|
||||
op.drop_column('exchange_rates', 'target_currency')
|
||||
op.drop_constraint(op.f('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_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('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.drop_constraint(op.f('model_feature_maps_feature_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'feature_definitions', ['feature_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.drop_constraint(op.f('org_subscriptions_tier_id_fkey'), 'org_subscriptions', type_='foreignkey')
|
||||
op.drop_constraint(op.f('org_subscriptions_org_id_fkey'), 'org_subscriptions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'org_subscriptions', 'subscription_tiers', ['tier_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'org_subscriptions', 'organizations', ['org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('organization_financials_organization_id_fkey'), 'organization_financials', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organization_financials', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(op.f('organization_members_person_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
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='identity')
|
||||
op.create_foreign_key(None, 'organization_members', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'organization_members', 'persons', ['person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
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'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(op.f('organizations_address_id_fkey'), 'organizations', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organizations_owner_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='identity')
|
||||
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='identity')
|
||||
op.drop_constraint(op.f('ratings_author_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_branch_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_user_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_organization_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['author_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['target_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'ratings', 'branches', ['target_branch_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'ratings', 'organizations', ['target_organization_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.drop_index(op.f('idx_service_profiles_location'), table_name='service_profiles', postgresql_using='gist')
|
||||
op.drop_constraint(op.f('service_profiles_organization_id_fkey'), 'service_profiles', type_='foreignkey')
|
||||
op.drop_constraint(op.f('service_profiles_parent_id_fkey'), 'service_profiles', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'service_profiles', 'service_profiles', ['parent_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
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('user_badges_user_id_fkey'), 'user_badges', type_='foreignkey')
|
||||
op.drop_constraint(op.f('user_badges_badge_id_fkey'), 'user_badges', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'user_badges', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
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='identity')
|
||||
op.drop_index(op.f('ix_data_vehicle_catalog_engine_variant'), table_name='vehicle_catalog')
|
||||
op.drop_constraint(op.f('uix_vehicle_catalog_full'), 'vehicle_catalog', type_='unique')
|
||||
op.create_unique_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', ['make', 'model', 'year_from', 'fuel_type'], schema='data')
|
||||
op.drop_constraint(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('vehicle_catalog', 'axle_count')
|
||||
op.drop_column('vehicle_catalog', 'engine_variant')
|
||||
op.drop_column('vehicle_catalog', 'vehicle_class')
|
||||
op.drop_column('vehicle_catalog', 'euro_class')
|
||||
op.drop_column('vehicle_catalog', 'engine_code')
|
||||
op.drop_column('vehicle_catalog', 'body_type')
|
||||
op.drop_column('vehicle_catalog', 'max_weight_kg')
|
||||
#op.add_column('vehicle_model_definitions', sa.Column('body_type', sa.String(length=100), nullable=True))
|
||||
#op.add_column('vehicle_model_definitions', sa.Column('torque_nm', sa.Integer(), nullable=True))
|
||||
#op.add_column('vehicle_model_definitions', sa.Column('cylinder_layout', sa.String(length=50), nullable=True))
|
||||
#op.add_column('vehicle_model_definitions', sa.Column('transmission_type', sa.String(length=50), nullable=True))
|
||||
#op.add_column('vehicle_model_definitions', sa.Column('drive_type', sa.String(length=50), nullable=True))
|
||||
#op.add_column('vehicle_model_definitions', sa.Column('source', sa.String(length=100), nullable=True))
|
||||
op.alter_column('vehicle_model_definitions', 'make',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'technical_code',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name',
|
||||
existing_type=sa.VARCHAR(length=100),
|
||||
type_=sa.String(length=150),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'engine_capacity',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'power_kw',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=False)
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_engine_capacity'), 'vehicle_model_definitions', ['engine_capacity'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_fuel_type'), 'vehicle_model_definitions', ['fuel_type'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_power_kw'), 'vehicle_model_definitions', ['power_kw'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_vehicle_class'), 'vehicle_model_definitions', ['vehicle_class'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('persons_address_id_fkey'), 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity', referent_schema='data')
|
||||
op.alter_column('pending_actions', 'status',
|
||||
existing_type=sa.VARCHAR(length=20),
|
||||
type_=sa.Enum('pending', 'approved', 'rejected', 'expired', name='actionstatus', schema='system'),
|
||||
existing_nullable=False,
|
||||
existing_server_default=sa.text("'pending'::character varying"),
|
||||
schema='system')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.alter_column('pending_actions', 'status',
|
||||
existing_type=sa.Enum('pending', 'approved', 'rejected', 'expired', name='actionstatus', schema='system'),
|
||||
type_=sa.VARCHAR(length=20),
|
||||
existing_nullable=False,
|
||||
existing_server_default=sa.text("'pending'::character varying"),
|
||||
schema='system')
|
||||
op.drop_constraint(None, 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('persons_address_id_fkey'), 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity')
|
||||
op.drop_constraint(None, 'vehicle_model_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'])
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_vehicle_class'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_power_kw'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_fuel_type'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_engine_capacity'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.alter_column('vehicle_model_definitions', 'power_kw',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'engine_capacity',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name',
|
||||
existing_type=sa.String(length=150),
|
||||
type_=sa.VARCHAR(length=100),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'technical_code',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'make',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=False)
|
||||
op.drop_column('vehicle_model_definitions', 'source')
|
||||
op.drop_column('vehicle_model_definitions', 'drive_type')
|
||||
op.drop_column('vehicle_model_definitions', 'transmission_type')
|
||||
op.drop_column('vehicle_model_definitions', 'cylinder_layout')
|
||||
op.drop_column('vehicle_model_definitions', 'torque_nm')
|
||||
op.drop_column('vehicle_model_definitions', 'body_type')
|
||||
op.add_column('vehicle_catalog', sa.Column('max_weight_kg', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('body_type', sa.VARCHAR(length=100), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('engine_code', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('euro_class', sa.VARCHAR(length=20), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('vehicle_class', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('engine_variant', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('axle_count', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.drop_constraint(None, 'vehicle_catalog', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_id'], ['id'])
|
||||
op.drop_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', schema='data', type_='unique')
|
||||
op.create_unique_constraint(op.f('uix_vehicle_catalog_full'), 'vehicle_catalog', ['make', 'model', 'year_from', 'engine_variant', 'fuel_type'], postgresql_nulls_not_distinct=False)
|
||||
op.create_index(op.f('ix_data_vehicle_catalog_engine_variant'), 'vehicle_catalog', ['engine_variant'], unique=False)
|
||||
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'], referent_schema='identity')
|
||||
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_badge_id_fkey'), 'user_badges', 'badges', ['badge_id'], ['id'])
|
||||
op.create_foreign_key(op.f('user_badges_user_id_fkey'), 'user_badges', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
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.drop_constraint(None, 'service_profiles', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('service_profiles_parent_id_fkey'), 'service_profiles', 'service_profiles', ['parent_id'], ['id'])
|
||||
op.create_foreign_key(op.f('service_profiles_organization_id_fkey'), 'service_profiles', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_index(op.f('idx_service_profiles_location'), 'service_profiles', ['location'], unique=False, postgresql_using='gist')
|
||||
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.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('ratings_target_organization_id_fkey'), 'ratings', 'organizations', ['target_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('ratings_target_user_id_fkey'), 'ratings', 'users', ['target_user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('ratings_target_branch_id_fkey'), 'ratings', 'branches', ['target_branch_id'], ['id'])
|
||||
op.create_foreign_key(op.f('ratings_author_id_fkey'), 'ratings', 'users', ['author_id'], ['id'], referent_schema='identity')
|
||||
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'], referent_schema='identity')
|
||||
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_owner_id_fkey'), 'organizations', 'users', ['owner_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('organizations_address_id_fkey'), 'organizations', 'addresses', ['address_id'], ['id'])
|
||||
op.alter_column('organizations', 'org_type',
|
||||
existing_type=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype', schema='data'),
|
||||
type_=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'organization_members', schema='data', type_='foreignkey')
|
||||
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'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('organization_members_organization_id_fkey'), 'organization_members', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('organization_members_person_id_fkey'), 'organization_members', 'persons', ['person_id'], ['id'], referent_schema='identity')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'organization_financials', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('organization_financials_organization_id_fkey'), 'organization_financials', '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_org_id_fkey'), 'org_subscriptions', 'organizations', ['org_id'], ['id'])
|
||||
op.create_foreign_key(op.f('org_subscriptions_tier_id_fkey'), 'org_subscriptions', 'subscription_tiers', ['tier_id'], ['id'])
|
||||
op.drop_constraint(None, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], referent_schema='identity')
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('model_feature_maps_feature_id_fkey'), 'model_feature_maps', 'feature_definitions', ['feature_id'], ['id'])
|
||||
op.create_foreign_key(op.f('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_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_constraint(None, 'feature_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'])
|
||||
op.add_column('exchange_rates', sa.Column('target_currency', sa.VARCHAR(length=3), autoincrement=False, nullable=True))
|
||||
op.add_column('exchange_rates', sa.Column('base_currency', sa.VARCHAR(length=3), autoincrement=False, nullable=False))
|
||||
op.create_unique_constraint(op.f('exchange_rates_target_currency_key'), 'exchange_rates', ['target_currency'], postgresql_nulls_not_distinct=False)
|
||||
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.add_column('catalog_discovery', sa.Column('attempts', sa.INTEGER(), autoincrement=False, nullable=False))
|
||||
op.add_column('catalog_discovery', sa.Column('priority_score', sa.INTEGER(), server_default=sa.text('0'), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('vehicle_class', sa.VARCHAR(length=50), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False))
|
||||
op.add_column('catalog_discovery', sa.Column('source', sa.VARCHAR(length=50), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('last_attempt', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
|
||||
op.drop_constraint('_make_model_uc', 'catalog_discovery', schema='data', type_='unique')
|
||||
op.create_index(op.f('ix_data_catalog_discovery_vehicle_class'), 'catalog_discovery', ['vehicle_class'], unique=False)
|
||||
op.create_unique_constraint(op.f('_make_model_class_uc'), 'catalog_discovery', ['make', 'model', 'vehicle_class'], postgresql_nulls_not_distinct=False)
|
||||
op.drop_constraint(None, 'branches', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'branches', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('branches_organization_id_fkey'), 'branches', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('branches_address_id_fkey'), 'branches', 'addresses', ['address_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'], referent_schema='identity')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
existing_nullable=False)
|
||||
op.add_column('assets', sa.Column('verification_method', sa.VARCHAR(length=20), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('verification_notes', sa.TEXT(), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=False))
|
||||
op.add_column('assets', sa.Column('catalog_match_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('is_corporate', sa.BOOLEAN(), server_default=sa.text('false'), autoincrement=False, nullable=False))
|
||||
op.add_column('assets', sa.Column('is_verified', sa.BOOLEAN(), autoincrement=False, nullable=False))
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
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_current_organization_id_fkey'), 'assets', 'organizations', ['current_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_operator_org_id_fkey'), 'assets', 'organizations', ['operator_org_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_owner_person_id_fkey'), 'assets', 'persons', ['owner_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_catalog_id_fkey'), 'assets', 'vehicle_catalog', ['catalog_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_operator_person_id_fkey'), 'assets', 'persons', ['operator_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_owner_org_id_fkey'), 'assets', 'organizations', ['owner_org_id'], ['id'])
|
||||
op.drop_index(op.f('ix_data_assets_year_of_manufacture'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_is_for_sale'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_current_mileage'), table_name='assets', schema='data')
|
||||
op.create_index(op.f('ix_data_assets_registration_uuid'), 'assets', ['registration_uuid'], unique=False)
|
||||
op.drop_column('assets', 'individual_equipment')
|
||||
op.drop_column('assets', 'currency')
|
||||
op.drop_column('assets', 'price')
|
||||
op.drop_column('assets', 'is_for_sale')
|
||||
op.drop_column('assets', 'condition_score')
|
||||
op.drop_column('assets', 'current_mileage')
|
||||
op.drop_column('assets', 'first_registration_date')
|
||||
op.add_column('asset_telemetry', sa.Column('mileage_unit', sa.VARCHAR(length=10), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_telemetry', sa.Column('vqi_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_telemetry', sa.Column('dbs_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=False))
|
||||
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.add_column('asset_reviews', sa.Column('criteria_scores', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), autoincrement=False, nullable=False))
|
||||
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_user_id_fkey'), 'asset_reviews', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('asset_reviews_asset_id_fkey'), 'asset_reviews', 'assets', ['asset_id'], ['id'])
|
||||
op.add_column('asset_financials', sa.Column('acquisition_price', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('residual_value_estimate', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('acquisition_date', postgresql.TIMESTAMP(), autoincrement=False, nullable=True))
|
||||
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.alter_column('asset_financials', 'financing_type',
|
||||
existing_type=sa.VARCHAR(),
|
||||
nullable=True)
|
||||
op.drop_column('asset_financials', 'accounting_details')
|
||||
op.drop_column('asset_financials', 'activation_date')
|
||||
op.drop_column('asset_financials', 'vat_rate')
|
||||
op.drop_column('asset_financials', 'purchase_price_gross')
|
||||
op.drop_column('asset_financials', 'purchase_price_net')
|
||||
op.add_column('asset_events', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_events', sa.Column('data', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_events', sa.Column('recorded_mileage', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
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.create_index(op.f('ix_data_asset_events_registration_uuid'), 'asset_events', ['registration_uuid'], unique=False)
|
||||
op.add_column('asset_costs', sa.Column('net_amount_local', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('vat_rate', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('amount_local', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('currency_local', sa.VARCHAR(length=3), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('mileage_at_cost', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('cost_type', sa.VARCHAR(length=50), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('exchange_rate_used', sa.NUMERIC(precision=18, scale=6), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('amount_eur', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('driver_id', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
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_organization_id_fkey'), 'asset_costs', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('asset_costs_driver_id_fkey'), 'asset_costs', 'users', ['driver_id'], ['id'], referent_schema='identity')
|
||||
op.drop_index(op.f('ix_data_asset_costs_invoice_number'), table_name='asset_costs', schema='data')
|
||||
op.drop_index(op.f('ix_data_asset_costs_cost_category'), table_name='asset_costs', schema='data')
|
||||
op.create_index(op.f('ix_data_asset_costs_registration_uuid'), 'asset_costs', ['registration_uuid'], unique=False)
|
||||
op.drop_column('asset_costs', 'invoice_number')
|
||||
op.drop_column('asset_costs', 'currency')
|
||||
op.drop_column('asset_costs', 'amount_net')
|
||||
op.drop_column('asset_costs', 'cost_category')
|
||||
op.add_column('asset_assignments', sa.Column('assigned_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_assignments', sa.Column('branch_id', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_assignments', sa.Column('released_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
|
||||
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_asset_id_fkey'), 'asset_assignments', 'assets', ['asset_id'], ['id'])
|
||||
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_branch_id_fkey'), 'asset_assignments', 'branches', ['branch_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'])
|
||||
#op.create_table('spatial_ref_sys',
|
||||
#sa.Column('srid', sa.INTEGER(), autoincrement=False, nullable=False),
|
||||
#sa.Column('auth_name', sa.VARCHAR(length=256), autoincrement=False, nullable=True),
|
||||
#sa.Column('auth_srid', sa.INTEGER(), autoincrement=False, nullable=True),
|
||||
#sa.Column('srtext', sa.VARCHAR(length=2048), autoincrement=False, nullable=True),
|
||||
#sa.Column('proj4text', sa.VARCHAR(length=2048), autoincrement=False, nullable=True),
|
||||
#sa.CheckConstraint('srid > 0 AND srid <= 998999', name=op.f('spatial_ref_sys_srid_check')),
|
||||
#sa.PrimaryKeyConstraint('srid', name=op.f('spatial_ref_sys_pkey')),
|
||||
#schema='public'
|
||||
#)
|
||||
op.drop_table('vehicle_ownership_history', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_logbook_trip_type'), table_name='vehicle_logbook', schema='data')
|
||||
op.drop_table('vehicle_logbook', schema='data')
|
||||
op.drop_table('asset_inspections', schema='data')
|
||||
# ### end Alembic commands ###
|
||||
@@ -0,0 +1,28 @@
|
||||
"""fix_organization_lifecycle_columns
|
||||
|
||||
Revision ID: 1d75b3806b43
|
||||
Revises: 2f72e7ae52bb
|
||||
Create Date: 2026-02-28 00:12:42.714132
|
||||
|
||||
"""
|
||||
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 = '1d75b3806b43'
|
||||
down_revision: Union[str, Sequence[str], None] = '2f72e7ae52bb'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Upgrade schema."""
|
||||
pass
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
pass
|
||||
28
backend/migrations/versions/2f72e7ae52bb_fix_system_param_types.py
Executable file
28
backend/migrations/versions/2f72e7ae52bb_fix_system_param_types.py
Executable file
@@ -0,0 +1,28 @@
|
||||
"""fix_system_param_types
|
||||
|
||||
Revision ID: 2f72e7ae52bb
|
||||
Revises: 5bd7f1cb0dc9
|
||||
Create Date: 2026-02-28 00:01:56.691221
|
||||
|
||||
"""
|
||||
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 = '2f72e7ae52bb'
|
||||
down_revision: Union[str, Sequence[str], None] = '5bd7f1cb0dc9'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Upgrade schema."""
|
||||
pass
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
pass
|
||||
538
backend/migrations/versions/429ffa7dd5e1_add_org_lifecycle_and_twin_logic.py
Executable file
538
backend/migrations/versions/429ffa7dd5e1_add_org_lifecycle_and_twin_logic.py
Executable file
@@ -0,0 +1,538 @@
|
||||
"""add_org_lifecycle_and_twin_logic
|
||||
|
||||
Revision ID: 429ffa7dd5e1
|
||||
Revises: 7e5a1b721dfb
|
||||
Create Date: 2026-02-27 04:53:44.271337
|
||||
|
||||
"""
|
||||
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 = '429ffa7dd5e1'
|
||||
down_revision: Union[str, Sequence[str], None] = '7e5a1b721dfb'
|
||||
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_branch_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_assignments_organization_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_assignments_asset_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'asset_assignments', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'asset_assignments', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('asset_assignments', 'assigned_at')
|
||||
op.drop_column('asset_assignments', 'released_at')
|
||||
op.drop_column('asset_assignments', 'branch_id')
|
||||
op.drop_index(op.f('ix_data_asset_costs_registration_uuid'), table_name='asset_costs')
|
||||
op.create_index(op.f('ix_data_asset_costs_cost_category'), 'asset_costs', ['cost_category'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_asset_costs_invoice_number'), 'asset_costs', ['invoice_number'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('asset_costs_driver_id_fkey'), 'asset_costs', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_costs_organization_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', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'asset_costs', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('asset_costs', 'amount_local')
|
||||
op.drop_column('asset_costs', 'mileage_at_cost')
|
||||
op.drop_column('asset_costs', 'net_amount_local')
|
||||
op.drop_column('asset_costs', 'exchange_rate_used')
|
||||
op.drop_column('asset_costs', 'driver_id')
|
||||
op.drop_column('asset_costs', 'vat_rate')
|
||||
op.drop_column('asset_costs', 'amount_eur')
|
||||
op.drop_column('asset_costs', 'cost_type')
|
||||
op.drop_column('asset_costs', 'registration_uuid')
|
||||
op.drop_column('asset_costs', 'currency_local')
|
||||
op.drop_index(op.f('ix_data_asset_events_registration_uuid'), table_name='asset_events')
|
||||
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_column('asset_events', 'recorded_mileage')
|
||||
op.drop_column('asset_events', 'data')
|
||||
op.drop_column('asset_events', 'registration_uuid')
|
||||
op.alter_column('asset_financials', 'financing_type',
|
||||
existing_type=sa.VARCHAR(),
|
||||
nullable=False)
|
||||
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.drop_column('asset_financials', 'acquisition_date')
|
||||
op.drop_column('asset_financials', 'acquisition_price')
|
||||
op.drop_column('asset_financials', 'residual_value_estimate')
|
||||
op.drop_index(op.f('ix_data_asset_inspections_asset_id'), table_name='asset_inspections')
|
||||
op.drop_index(op.f('ix_data_asset_inspections_inspector_id'), table_name='asset_inspections')
|
||||
op.drop_constraint(op.f('fk_asset_inspections_inspector'), 'asset_inspections', type_='foreignkey')
|
||||
op.drop_constraint(op.f('fk_asset_inspections_asset'), 'asset_inspections', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'asset_inspections', 'users', ['inspector_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'asset_inspections', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('asset_reviews_asset_id_fkey'), 'asset_reviews', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_reviews_user_id_fkey'), 'asset_reviews', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'asset_reviews', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'asset_reviews', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('asset_reviews', 'criteria_scores')
|
||||
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.drop_column('asset_telemetry', 'vqi_score')
|
||||
op.drop_column('asset_telemetry', 'mileage_unit')
|
||||
op.drop_column('asset_telemetry', 'dbs_score')
|
||||
op.drop_index(op.f('ix_data_assets_registration_uuid'), table_name='assets')
|
||||
op.create_index(op.f('ix_data_assets_current_mileage'), 'assets', ['current_mileage'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_is_for_sale'), 'assets', ['is_for_sale'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_year_of_manufacture'), 'assets', ['year_of_manufacture'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('assets_operator_org_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_operator_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_catalog_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_owner_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_owner_org_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_current_organization_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', 'persons', ['operator_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['owner_org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['operator_org_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.create_foreign_key(None, 'assets', 'persons', ['owner_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.drop_column('assets', 'catalog_match_score')
|
||||
op.drop_column('assets', 'is_verified')
|
||||
op.drop_column('assets', 'is_corporate')
|
||||
op.drop_column('assets', 'verification_notes')
|
||||
op.drop_column('assets', 'verification_method')
|
||||
op.drop_column('assets', 'registration_uuid')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
existing_nullable=False)
|
||||
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='identity')
|
||||
op.drop_constraint(op.f('branches_address_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.drop_constraint(op.f('branches_organization_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'branches', 'addresses', ['address_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'branches', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
# op.add_column('catalog_discovery', sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False))
|
||||
op.drop_constraint(op.f('_make_model_class_uc'), 'catalog_discovery', type_='unique')
|
||||
op.drop_index(op.f('ix_data_catalog_discovery_vehicle_class'), table_name='catalog_discovery')
|
||||
op.create_unique_constraint('_make_model_uc', 'catalog_discovery', ['make', 'model'], schema='data')
|
||||
op.drop_column('catalog_discovery', 'created_at')
|
||||
op.drop_column('catalog_discovery', 'priority_score')
|
||||
op.drop_column('catalog_discovery', 'vehicle_class')
|
||||
op.drop_column('catalog_discovery', 'last_attempt')
|
||||
op.drop_column('catalog_discovery', 'source')
|
||||
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('exchange_rates_target_currency_key'), 'exchange_rates', type_='unique')
|
||||
op.drop_column('exchange_rates', 'target_currency')
|
||||
op.drop_column('exchange_rates', 'base_currency')
|
||||
op.drop_constraint(op.f('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_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('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.drop_constraint(op.f('model_feature_maps_feature_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'feature_definitions', ['feature_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'organizations', ['organization_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', 'subscription_tiers', ['tier_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'org_subscriptions', 'organizations', ['org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('organization_financials_organization_id_fkey'), 'organization_financials', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organization_financials', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(op.f('organization_members_person_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organization_members_user_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organization_members_organization_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organization_members', 'persons', ['person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'organization_members', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'organization_members', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.add_column('organizations', sa.Column('legal_owner_id', sa.BigInteger(), nullable=True))
|
||||
op.add_column('organizations', sa.Column('first_registered_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False))
|
||||
op.add_column('organizations', sa.Column('current_lifecycle_started_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False))
|
||||
op.add_column('organizations', sa.Column('last_deactivated_at', sa.DateTime(timezone=True), nullable=True))
|
||||
op.add_column('organizations', sa.Column('lifecycle_index', sa.Integer(), server_default=sa.text('1'), nullable=False))
|
||||
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'),
|
||||
existing_nullable=False)
|
||||
op.create_index(op.f('ix_data_organizations_legal_owner_id'), 'organizations', ['legal_owner_id'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('organizations_address_id_fkey'), 'organizations', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organizations_owner_id_fkey'), 'organizations', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organizations', 'persons', ['legal_owner_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'organizations', 'users', ['owner_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'organizations', '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='identity')
|
||||
op.drop_constraint(op.f('ratings_target_branch_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_author_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_organization_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_user_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'ratings', 'branches', ['target_branch_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'ratings', 'organizations', ['target_organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['target_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['author_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.drop_constraint(op.f('service_expertises_service_id_fkey'), 'service_expertises', type_='foreignkey')
|
||||
op.drop_constraint(op.f('service_expertises_expertise_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.drop_index(op.f('idx_service_profiles_location'), table_name='service_profiles', postgresql_using='gist')
|
||||
op.drop_constraint(op.f('service_profiles_parent_id_fkey'), 'service_profiles', type_='foreignkey')
|
||||
op.drop_constraint(op.f('service_profiles_organization_id_fkey'), 'service_profiles', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'service_profiles', 'service_profiles', ['parent_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'service_profiles', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data', ondelete='SET NULL')
|
||||
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('user_badges_user_id_fkey'), 'user_badges', type_='foreignkey')
|
||||
op.drop_constraint(op.f('user_badges_badge_id_fkey'), 'user_badges', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'user_badges', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
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='identity')
|
||||
op.drop_index(op.f('ix_data_vehicle_catalog_engine_variant'), table_name='vehicle_catalog')
|
||||
op.drop_constraint(op.f('uix_vehicle_catalog_full'), 'vehicle_catalog', type_='unique')
|
||||
op.create_unique_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', ['make', 'model', 'year_from', 'fuel_type'], schema='data')
|
||||
op.drop_constraint(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('vehicle_catalog', 'body_type')
|
||||
op.drop_column('vehicle_catalog', 'max_weight_kg')
|
||||
op.drop_column('vehicle_catalog', 'vehicle_class')
|
||||
op.drop_column('vehicle_catalog', 'engine_code')
|
||||
op.drop_column('vehicle_catalog', 'engine_variant')
|
||||
op.drop_column('vehicle_catalog', 'euro_class')
|
||||
op.drop_column('vehicle_catalog', 'axle_count')
|
||||
op.create_index(op.f('ix_data_vehicle_logbook_trip_type'), 'vehicle_logbook', ['trip_type'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('vehicle_logbook_asset_id_fkey'), 'vehicle_logbook', type_='foreignkey')
|
||||
op.drop_constraint(op.f('vehicle_logbook_driver_id_fkey'), 'vehicle_logbook', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_logbook', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'vehicle_logbook', 'users', ['driver_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.drop_column('vehicle_logbook', 'created_at')
|
||||
op.alter_column('vehicle_model_definitions', 'make',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name',
|
||||
existing_type=sa.VARCHAR(length=100),
|
||||
type_=sa.String(length=255),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'updated_at',
|
||||
existing_type=postgresql.TIMESTAMP(timezone=True),
|
||||
nullable=False,
|
||||
existing_server_default=sa.text('now()'))
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name_aliases',
|
||||
existing_type=postgresql.JSONB(astext_type=sa.Text()),
|
||||
nullable=False,
|
||||
existing_server_default=sa.text("'[]'::jsonb"))
|
||||
op.alter_column('vehicle_model_definitions', 'technical_code',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'body_type',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'engine_capacity',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'power_kw',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'status',
|
||||
existing_type=sa.VARCHAR(length=30),
|
||||
type_=sa.String(length=50),
|
||||
existing_nullable=False,
|
||||
existing_server_default=sa.text("'active'::character varying"))
|
||||
op.alter_column('vehicle_model_definitions', 'source',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=True)
|
||||
op.drop_index(op.f('idx_vmd_engine_code'), table_name='vehicle_model_definitions')
|
||||
op.drop_index(op.f('idx_vmd_lookup'), table_name='vehicle_model_definitions')
|
||||
op.drop_index(op.f('idx_vmd_normalized_name'), table_name='vehicle_model_definitions')
|
||||
op.drop_index(op.f('ix_vehicle_model_marketing_name'), table_name='vehicle_model_definitions')
|
||||
op.drop_constraint(op.f('uix_make_tech_type'), 'vehicle_model_definitions', type_='unique')
|
||||
op.create_index('idx_vmd_engine_bridge', 'vehicle_model_definitions', ['make', 'engine_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_engine_capacity'), 'vehicle_model_definitions', ['engine_capacity'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_engine_code'), 'vehicle_model_definitions', ['engine_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_fuel_type'), 'vehicle_model_definitions', ['fuel_type'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_id'), 'vehicle_model_definitions', ['id'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_normalized_name'), 'vehicle_model_definitions', ['normalized_name'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_power_kw'), 'vehicle_model_definitions', ['power_kw'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_variant_code'), 'vehicle_model_definitions', ['variant_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_vehicle_class'), 'vehicle_model_definitions', ['vehicle_class'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_version_code'), 'vehicle_model_definitions', ['version_code'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('vehicle_ownership_history_user_id_fkey'), 'vehicle_ownership_history', type_='foreignkey')
|
||||
op.drop_constraint(op.f('vehicle_ownership_history_asset_id_fkey'), 'vehicle_ownership_history', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_ownership_history', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'vehicle_ownership_history', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('persons_address_id_fkey'), 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity', referent_schema='data')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_constraint(None, 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('persons_address_id_fkey'), 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity')
|
||||
op.drop_constraint(None, 'vehicle_ownership_history', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'vehicle_ownership_history', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_ownership_history_asset_id_fkey'), 'vehicle_ownership_history', 'assets', ['asset_id'], ['id'])
|
||||
op.create_foreign_key(op.f('vehicle_ownership_history_user_id_fkey'), 'vehicle_ownership_history', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
op.drop_constraint(None, 'vehicle_model_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'])
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_version_code'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_vehicle_class'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_variant_code'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_power_kw'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_normalized_name'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_id'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_fuel_type'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_engine_code'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_engine_capacity'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index('idx_vmd_engine_bridge', table_name='vehicle_model_definitions', schema='data')
|
||||
op.create_unique_constraint(op.f('uix_make_tech_type'), 'vehicle_model_definitions', ['make', 'technical_code', 'vehicle_type_id'], postgresql_nulls_not_distinct=False)
|
||||
op.create_index(op.f('ix_vehicle_model_marketing_name'), 'vehicle_model_definitions', ['marketing_name'], unique=False)
|
||||
op.create_index(op.f('idx_vmd_normalized_name'), 'vehicle_model_definitions', ['normalized_name'], unique=False)
|
||||
op.create_index(op.f('idx_vmd_lookup'), 'vehicle_model_definitions', ['make', 'technical_code'], unique=False)
|
||||
op.create_index(op.f('idx_vmd_engine_code'), 'vehicle_model_definitions', ['engine_code'], unique=False)
|
||||
op.alter_column('vehicle_model_definitions', 'source',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'status',
|
||||
existing_type=sa.String(length=50),
|
||||
type_=sa.VARCHAR(length=30),
|
||||
existing_nullable=False,
|
||||
existing_server_default=sa.text("'active'::character varying"))
|
||||
op.alter_column('vehicle_model_definitions', 'power_kw',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'engine_capacity',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'body_type',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'technical_code',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name_aliases',
|
||||
existing_type=postgresql.JSONB(astext_type=sa.Text()),
|
||||
nullable=True,
|
||||
existing_server_default=sa.text("'[]'::jsonb"))
|
||||
op.alter_column('vehicle_model_definitions', 'updated_at',
|
||||
existing_type=postgresql.TIMESTAMP(timezone=True),
|
||||
nullable=True,
|
||||
existing_server_default=sa.text('now()'))
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name',
|
||||
existing_type=sa.String(length=255),
|
||||
type_=sa.VARCHAR(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'make',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=False)
|
||||
op.add_column('vehicle_logbook', sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=True))
|
||||
op.drop_constraint(None, 'vehicle_logbook', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'vehicle_logbook', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_logbook_driver_id_fkey'), 'vehicle_logbook', 'users', ['driver_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('vehicle_logbook_asset_id_fkey'), 'vehicle_logbook', 'assets', ['asset_id'], ['id'])
|
||||
op.drop_index(op.f('ix_data_vehicle_logbook_trip_type'), table_name='vehicle_logbook', schema='data')
|
||||
op.add_column('vehicle_catalog', sa.Column('axle_count', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('euro_class', sa.VARCHAR(length=20), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('engine_variant', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('engine_code', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('vehicle_class', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('max_weight_kg', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('body_type', sa.VARCHAR(length=100), autoincrement=False, nullable=True))
|
||||
op.drop_constraint(None, 'vehicle_catalog', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_id'], ['id'])
|
||||
op.drop_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', schema='data', type_='unique')
|
||||
op.create_unique_constraint(op.f('uix_vehicle_catalog_full'), 'vehicle_catalog', ['make', 'model', 'year_from', 'engine_variant', 'fuel_type'], postgresql_nulls_not_distinct=False)
|
||||
op.create_index(op.f('ix_data_vehicle_catalog_engine_variant'), 'vehicle_catalog', ['engine_variant'], unique=False)
|
||||
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'], referent_schema='identity')
|
||||
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_badge_id_fkey'), 'user_badges', 'badges', ['badge_id'], ['id'])
|
||||
op.create_foreign_key(op.f('user_badges_user_id_fkey'), 'user_badges', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
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.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.create_foreign_key(op.f('service_profiles_parent_id_fkey'), 'service_profiles', 'service_profiles', ['parent_id'], ['id'])
|
||||
op.create_index(op.f('idx_service_profiles_location'), 'service_profiles', ['location'], unique=False, postgresql_using='gist')
|
||||
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_expertise_id_fkey'), 'service_expertises', 'expertise_tags', ['expertise_id'], ['id'])
|
||||
op.create_foreign_key(op.f('service_expertises_service_id_fkey'), 'service_expertises', 'service_profiles', ['service_id'], ['id'])
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('ratings_target_user_id_fkey'), 'ratings', 'users', ['target_user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('ratings_target_organization_id_fkey'), 'ratings', 'organizations', ['target_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('ratings_author_id_fkey'), 'ratings', 'users', ['author_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('ratings_target_branch_id_fkey'), 'ratings', 'branches', ['target_branch_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'], referent_schema='identity')
|
||||
op.drop_constraint(None, 'organizations', schema='data', type_='foreignkey')
|
||||
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_owner_id_fkey'), 'organizations', 'users', ['owner_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('organizations_address_id_fkey'), 'organizations', 'addresses', ['address_id'], ['id'])
|
||||
op.drop_index(op.f('ix_data_organizations_legal_owner_id'), table_name='organizations', schema='data')
|
||||
op.alter_column('organizations', 'org_type',
|
||||
existing_type=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype', schema='data'),
|
||||
type_=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype'),
|
||||
existing_nullable=False)
|
||||
op.drop_column('organizations', 'lifecycle_index')
|
||||
op.drop_column('organizations', 'last_deactivated_at')
|
||||
op.drop_column('organizations', 'current_lifecycle_started_at')
|
||||
op.drop_column('organizations', 'first_registered_at')
|
||||
op.drop_column('organizations', 'legal_owner_id')
|
||||
op.drop_constraint(None, 'organization_members', schema='data', type_='foreignkey')
|
||||
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_organization_id_fkey'), 'organization_members', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('organization_members_user_id_fkey'), 'organization_members', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('organization_members_person_id_fkey'), 'organization_members', 'persons', ['person_id'], ['id'], referent_schema='identity')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'organization_financials', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('organization_financials_organization_id_fkey'), 'organization_financials', '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, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', 'organizations', ['organization_id'], ['id'])
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('model_feature_maps_feature_id_fkey'), 'model_feature_maps', 'feature_definitions', ['feature_id'], ['id'])
|
||||
op.create_foreign_key(op.f('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_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_constraint(None, 'feature_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'])
|
||||
op.add_column('exchange_rates', sa.Column('base_currency', sa.VARCHAR(length=3), autoincrement=False, nullable=False))
|
||||
op.add_column('exchange_rates', sa.Column('target_currency', sa.VARCHAR(length=3), autoincrement=False, nullable=True))
|
||||
op.create_unique_constraint(op.f('exchange_rates_target_currency_key'), 'exchange_rates', ['target_currency'], postgresql_nulls_not_distinct=False)
|
||||
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.add_column('catalog_discovery', sa.Column('source', sa.VARCHAR(length=50), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('last_attempt', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('vehicle_class', sa.VARCHAR(length=50), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('priority_score', sa.INTEGER(), server_default=sa.text('0'), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False))
|
||||
op.drop_constraint('_make_model_uc', 'catalog_discovery', schema='data', type_='unique')
|
||||
op.create_index(op.f('ix_data_catalog_discovery_vehicle_class'), 'catalog_discovery', ['vehicle_class'], unique=False)
|
||||
op.create_unique_constraint(op.f('_make_model_class_uc'), 'catalog_discovery', ['make', 'model', 'vehicle_class'], postgresql_nulls_not_distinct=False)
|
||||
op.drop_column('catalog_discovery', 'updated_at')
|
||||
op.drop_constraint(None, 'branches', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'branches', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('branches_organization_id_fkey'), 'branches', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('branches_address_id_fkey'), 'branches', 'addresses', ['address_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'], referent_schema='identity')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
existing_nullable=False)
|
||||
op.add_column('assets', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=False))
|
||||
op.add_column('assets', sa.Column('verification_method', sa.VARCHAR(length=20), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('verification_notes', sa.TEXT(), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('is_corporate', sa.BOOLEAN(), server_default=sa.text('false'), autoincrement=False, nullable=False))
|
||||
op.add_column('assets', sa.Column('is_verified', sa.BOOLEAN(), autoincrement=False, nullable=False))
|
||||
op.add_column('assets', sa.Column('catalog_match_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=True))
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
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_current_organization_id_fkey'), 'assets', 'organizations', ['current_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_owner_org_id_fkey'), 'assets', 'organizations', ['owner_org_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_owner_person_id_fkey'), 'assets', 'persons', ['owner_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_catalog_id_fkey'), 'assets', 'vehicle_catalog', ['catalog_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_operator_person_id_fkey'), 'assets', 'persons', ['operator_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_operator_org_id_fkey'), 'assets', 'organizations', ['operator_org_id'], ['id'])
|
||||
op.drop_index(op.f('ix_data_assets_year_of_manufacture'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_is_for_sale'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_current_mileage'), table_name='assets', schema='data')
|
||||
op.create_index(op.f('ix_data_assets_registration_uuid'), 'assets', ['registration_uuid'], unique=False)
|
||||
op.add_column('asset_telemetry', sa.Column('dbs_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_telemetry', sa.Column('mileage_unit', sa.VARCHAR(length=10), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_telemetry', sa.Column('vqi_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=False))
|
||||
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.add_column('asset_reviews', sa.Column('criteria_scores', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), autoincrement=False, nullable=False))
|
||||
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_user_id_fkey'), 'asset_reviews', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('asset_reviews_asset_id_fkey'), 'asset_reviews', 'assets', ['asset_id'], ['id'])
|
||||
op.drop_constraint(None, 'asset_inspections', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'asset_inspections', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('fk_asset_inspections_asset'), 'asset_inspections', 'assets', ['asset_id'], ['id'], ondelete='CASCADE')
|
||||
op.create_foreign_key(op.f('fk_asset_inspections_inspector'), 'asset_inspections', 'users', ['inspector_id'], ['id'], referent_schema='identity')
|
||||
op.create_index(op.f('ix_data_asset_inspections_inspector_id'), 'asset_inspections', ['inspector_id'], unique=False)
|
||||
op.create_index(op.f('ix_data_asset_inspections_asset_id'), 'asset_inspections', ['asset_id'], unique=False)
|
||||
op.add_column('asset_financials', sa.Column('residual_value_estimate', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('acquisition_price', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('acquisition_date', postgresql.TIMESTAMP(), autoincrement=False, nullable=True))
|
||||
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.alter_column('asset_financials', 'financing_type',
|
||||
existing_type=sa.VARCHAR(),
|
||||
nullable=True)
|
||||
op.add_column('asset_events', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_events', sa.Column('data', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_events', sa.Column('recorded_mileage', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
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.create_index(op.f('ix_data_asset_events_registration_uuid'), 'asset_events', ['registration_uuid'], unique=False)
|
||||
op.add_column('asset_costs', sa.Column('currency_local', sa.VARCHAR(length=3), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('cost_type', sa.VARCHAR(length=50), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('amount_eur', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('vat_rate', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('driver_id', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('exchange_rate_used', sa.NUMERIC(precision=18, scale=6), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('net_amount_local', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('mileage_at_cost', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('amount_local', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=False))
|
||||
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_organization_id_fkey'), 'asset_costs', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('asset_costs_driver_id_fkey'), 'asset_costs', 'users', ['driver_id'], ['id'], referent_schema='identity')
|
||||
op.drop_index(op.f('ix_data_asset_costs_invoice_number'), table_name='asset_costs', schema='data')
|
||||
op.drop_index(op.f('ix_data_asset_costs_cost_category'), table_name='asset_costs', schema='data')
|
||||
op.create_index(op.f('ix_data_asset_costs_registration_uuid'), 'asset_costs', ['registration_uuid'], unique=False)
|
||||
op.add_column('asset_assignments', sa.Column('branch_id', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_assignments', sa.Column('released_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_assignments', sa.Column('assigned_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False))
|
||||
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_asset_id_fkey'), 'asset_assignments', 'assets', ['asset_id'], ['id'])
|
||||
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_branch_id_fkey'), 'asset_assignments', 'branches', ['branch_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 ###
|
||||
561
backend/migrations/versions/4d69a44da00a_precision_schema_v1_0_9_final.py
Executable file
561
backend/migrations/versions/4d69a44da00a_precision_schema_v1_0_9_final.py
Executable file
@@ -0,0 +1,561 @@
|
||||
"""Precision_Schema_v1_0_9_Final
|
||||
|
||||
Revision ID: 4d69a44da00a
|
||||
Revises: 062cfbbdd076
|
||||
Create Date: 2026-02-25 08:41:01.664164
|
||||
|
||||
"""
|
||||
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 = '4d69a44da00a'
|
||||
down_revision: Union[str, Sequence[str], None] = '062cfbbdd076'
|
||||
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.create_table('asset_inspections',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('inspector_id', sa.Integer(), nullable=False),
|
||||
sa.Column('timestamp', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('checklist_results', postgresql.JSONB(astext_type=sa.Text()), nullable=False),
|
||||
sa.Column('is_safe', sa.Boolean(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['inspector_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('vehicle_logbook',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('driver_id', sa.Integer(), nullable=False),
|
||||
sa.Column('trip_type', sa.String(length=30), nullable=False),
|
||||
sa.Column('is_reimbursable', sa.Boolean(), nullable=False),
|
||||
sa.Column('start_mileage', sa.Integer(), nullable=False),
|
||||
sa.Column('end_mileage', sa.Integer(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['driver_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_vehicle_logbook_trip_type'), 'vehicle_logbook', ['trip_type'], unique=False, schema='data')
|
||||
op.create_table('vehicle_ownership_history',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('acquired_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('disposed_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
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_branch_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
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.drop_column('asset_assignments', 'assigned_at')
|
||||
op.drop_column('asset_assignments', 'released_at')
|
||||
op.drop_column('asset_assignments', 'branch_id')
|
||||
op.add_column('asset_costs', sa.Column('cost_category', sa.String(length=50), nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('amount_net', sa.Numeric(precision=18, scale=2), nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('currency', sa.String(length=3), nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('invoice_number', sa.String(length=100), nullable=True))
|
||||
op.drop_index(op.f('ix_data_asset_costs_registration_uuid'), table_name='asset_costs')
|
||||
op.create_index(op.f('ix_data_asset_costs_cost_category'), 'asset_costs', ['cost_category'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_asset_costs_invoice_number'), 'asset_costs', ['invoice_number'], unique=False, schema='data')
|
||||
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.drop_constraint(op.f('asset_costs_organization_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.drop_column('asset_costs', 'driver_id')
|
||||
op.drop_column('asset_costs', 'cost_type')
|
||||
op.drop_column('asset_costs', 'currency_local')
|
||||
op.drop_column('asset_costs', 'amount_local')
|
||||
op.drop_column('asset_costs', 'amount_eur')
|
||||
op.drop_column('asset_costs', 'vat_rate')
|
||||
op.drop_column('asset_costs', 'registration_uuid')
|
||||
op.drop_column('asset_costs', 'exchange_rate_used')
|
||||
op.drop_column('asset_costs', 'net_amount_local')
|
||||
op.drop_column('asset_costs', 'mileage_at_cost')
|
||||
op.drop_index(op.f('ix_data_asset_events_registration_uuid'), table_name='asset_events')
|
||||
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_column('asset_events', 'registration_uuid')
|
||||
op.drop_column('asset_events', 'recorded_mileage')
|
||||
op.drop_column('asset_events', 'data')
|
||||
op.add_column('asset_financials', sa.Column('purchase_price_net', sa.Numeric(precision=18, scale=2), nullable=False))
|
||||
op.add_column('asset_financials', sa.Column('purchase_price_gross', sa.Numeric(precision=18, scale=2), nullable=False))
|
||||
op.add_column('asset_financials', sa.Column('vat_rate', sa.Numeric(precision=5, scale=2), nullable=False))
|
||||
op.add_column('asset_financials', sa.Column('activation_date', sa.DateTime(), nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('accounting_details', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False))
|
||||
op.alter_column('asset_financials', 'financing_type',
|
||||
existing_type=sa.VARCHAR(),
|
||||
nullable=False)
|
||||
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.drop_column('asset_financials', 'residual_value_estimate')
|
||||
op.drop_column('asset_financials', 'acquisition_price')
|
||||
op.drop_column('asset_financials', 'acquisition_date')
|
||||
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', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'asset_reviews', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('asset_reviews', 'criteria_scores')
|
||||
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.drop_column('asset_telemetry', 'dbs_score')
|
||||
op.drop_column('asset_telemetry', 'vqi_score')
|
||||
op.drop_column('asset_telemetry', 'mileage_unit')
|
||||
op.add_column('assets', sa.Column('first_registration_date', sa.DateTime(timezone=True), nullable=True))
|
||||
op.add_column('assets', sa.Column('current_mileage', sa.Integer(), nullable=False))
|
||||
op.add_column('assets', sa.Column('condition_score', sa.Integer(), nullable=False))
|
||||
op.add_column('assets', sa.Column('is_for_sale', sa.Boolean(), nullable=False))
|
||||
op.add_column('assets', sa.Column('price', sa.Numeric(precision=15, scale=2), nullable=True))
|
||||
op.add_column('assets', sa.Column('currency', sa.String(length=3), nullable=False))
|
||||
op.add_column('assets', sa.Column('individual_equipment', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False))
|
||||
op.drop_index(op.f('ix_data_assets_registration_uuid'), table_name='assets')
|
||||
op.create_index(op.f('ix_data_assets_current_mileage'), 'assets', ['current_mileage'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_is_for_sale'), 'assets', ['is_for_sale'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_year_of_manufacture'), 'assets', ['year_of_manufacture'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('assets_operator_org_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_owner_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_owner_org_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_operator_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_catalog_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_current_organization_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'assets', 'vehicle_catalog', ['catalog_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['owner_org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'assets', 'persons', ['owner_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['current_organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'assets', 'persons', ['operator_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['operator_org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('assets', 'is_corporate')
|
||||
op.drop_column('assets', 'is_verified')
|
||||
op.drop_column('assets', 'catalog_match_score')
|
||||
op.drop_column('assets', 'verification_method')
|
||||
op.drop_column('assets', 'verification_notes')
|
||||
op.drop_column('assets', 'registration_uuid')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
existing_nullable=False)
|
||||
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='identity')
|
||||
op.drop_constraint(op.f('branches_address_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.drop_constraint(op.f('branches_organization_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'branches', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'branches', 'addresses', ['address_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('_make_model_class_uc'), 'catalog_discovery', type_='unique')
|
||||
op.drop_index(op.f('ix_data_catalog_discovery_vehicle_class'), table_name='catalog_discovery')
|
||||
op.create_unique_constraint('_make_model_uc', 'catalog_discovery', ['make', 'model'], schema='data')
|
||||
op.drop_column('catalog_discovery', 'source')
|
||||
op.drop_column('catalog_discovery', 'vehicle_class')
|
||||
op.drop_column('catalog_discovery', 'last_attempt')
|
||||
op.drop_column('catalog_discovery', 'priority_score')
|
||||
op.drop_column('catalog_discovery', 'attempts')
|
||||
op.drop_column('catalog_discovery', 'created_at')
|
||||
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('exchange_rates_target_currency_key'), 'exchange_rates', type_='unique')
|
||||
op.drop_column('exchange_rates', 'base_currency')
|
||||
op.drop_column('exchange_rates', 'target_currency')
|
||||
op.drop_constraint(op.f('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_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('model_feature_maps_feature_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.drop_constraint(op.f('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'feature_definitions', ['feature_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.drop_constraint(op.f('org_subscriptions_tier_id_fkey'), 'org_subscriptions', type_='foreignkey')
|
||||
op.drop_constraint(op.f('org_subscriptions_org_id_fkey'), 'org_subscriptions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'org_subscriptions', 'subscription_tiers', ['tier_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'org_subscriptions', 'organizations', ['org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('organization_financials_organization_id_fkey'), 'organization_financials', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organization_financials', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(op.f('organization_members_user_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organization_members_organization_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organization_members_person_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organization_members', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'organization_members', 'persons', ['person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
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'),
|
||||
existing_nullable=False)
|
||||
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='identity')
|
||||
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='identity')
|
||||
op.drop_constraint(op.f('ratings_target_user_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_author_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_organization_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_branch_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['target_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'ratings', 'branches', ['target_branch_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['author_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'ratings', 'organizations', ['target_organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('service_expertises_service_id_fkey'), 'service_expertises', type_='foreignkey')
|
||||
op.drop_constraint(op.f('service_expertises_expertise_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.drop_index(op.f('idx_service_profiles_location'), table_name='service_profiles', postgresql_using='gist')
|
||||
op.drop_constraint(op.f('service_profiles_parent_id_fkey'), 'service_profiles', type_='foreignkey')
|
||||
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.create_foreign_key(None, 'service_profiles', 'service_profiles', ['parent_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('user_badges_user_id_fkey'), 'user_badges', type_='foreignkey')
|
||||
op.drop_constraint(op.f('user_badges_badge_id_fkey'), 'user_badges', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'user_badges', 'badges', ['badge_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'user_badges', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
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='identity')
|
||||
op.drop_index(op.f('ix_data_vehicle_catalog_engine_variant'), table_name='vehicle_catalog')
|
||||
op.drop_constraint(op.f('uix_vehicle_catalog_full'), 'vehicle_catalog', type_='unique')
|
||||
op.create_unique_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', ['make', 'model', 'year_from', 'fuel_type'], schema='data')
|
||||
op.drop_constraint(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('vehicle_catalog', 'euro_class')
|
||||
op.drop_column('vehicle_catalog', 'vehicle_class')
|
||||
op.drop_column('vehicle_catalog', 'body_type')
|
||||
op.drop_column('vehicle_catalog', 'max_weight_kg')
|
||||
op.drop_column('vehicle_catalog', 'axle_count')
|
||||
op.drop_column('vehicle_catalog', 'engine_variant')
|
||||
op.drop_column('vehicle_catalog', 'engine_code')
|
||||
op.add_column('vehicle_model_definitions', sa.Column('normalized_name', sa.String(length=255), nullable=True), schema='data')
|
||||
op.add_column('vehicle_model_definitions', sa.Column('marketing_name_aliases', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'[]'::jsonb"), nullable=False))
|
||||
op.add_column('vehicle_model_definitions', sa.Column('variant_code', sa.String(length=100), nullable=True))
|
||||
op.add_column('vehicle_model_definitions', sa.Column('version_code', sa.String(length=100), nullable=True))
|
||||
op.add_column('vehicle_model_definitions', sa.Column('cylinders', sa.Integer(), nullable=True))
|
||||
op.add_column('vehicle_model_definitions', sa.Column('curb_weight', sa.Integer(), nullable=True))
|
||||
op.add_column('vehicle_model_definitions', sa.Column('max_weight', sa.Integer(), nullable=True))
|
||||
op.add_column('vehicle_model_definitions', sa.Column('euro_classification', sa.String(length=20), nullable=True))
|
||||
op.add_column('vehicle_model_definitions', sa.Column('doors', sa.Integer(), nullable=True))
|
||||
op.alter_column('vehicle_model_definitions', 'make',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name',
|
||||
existing_type=sa.VARCHAR(length=100),
|
||||
type_=sa.String(length=255),
|
||||
nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'technical_code',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'body_type',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'engine_capacity',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'power_kw',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'status',
|
||||
existing_type=sa.VARCHAR(length=30),
|
||||
type_=sa.String(length=50),
|
||||
existing_nullable=False,
|
||||
existing_server_default=sa.text("'active'::character varying"))
|
||||
op.alter_column('vehicle_model_definitions', 'source',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=True)
|
||||
op.drop_index(op.f('idx_vmd_lookup'), table_name='vehicle_model_definitions')
|
||||
op.drop_index(op.f('ix_vehicle_model_marketing_name'), table_name='vehicle_model_definitions')
|
||||
op.drop_constraint(op.f('uix_make_tech_type'), 'vehicle_model_definitions', type_='unique')
|
||||
op.create_index('idx_vmd_lookup_fast', 'vehicle_model_definitions', ['make', 'normalized_name'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_engine_capacity'), 'vehicle_model_definitions', ['engine_capacity'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_fuel_type'), 'vehicle_model_definitions', ['fuel_type'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_normalized_name'), 'vehicle_model_definitions', ['normalized_name'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_power_kw'), 'vehicle_model_definitions', ['power_kw'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_variant_code'), 'vehicle_model_definitions', ['variant_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_vehicle_class'), 'vehicle_model_definitions', ['vehicle_class'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_version_code'), 'vehicle_model_definitions', ['version_code'], unique=False, schema='data')
|
||||
op.create_unique_constraint('uix_vmd_precision', 'vehicle_model_definitions', ['make', 'normalized_name', 'variant_code', 'version_code', 'fuel_type'], schema='data')
|
||||
op.drop_constraint(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('persons_address_id_fkey'), 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity', referent_schema='data')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_constraint(None, 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('persons_address_id_fkey'), 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity')
|
||||
op.drop_constraint(None, 'vehicle_model_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'])
|
||||
op.drop_constraint('uix_vmd_precision', 'vehicle_model_definitions', schema='data', type_='unique')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_version_code'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_vehicle_class'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_variant_code'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_power_kw'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_normalized_name'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_fuel_type'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_engine_capacity'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index('idx_vmd_lookup_fast', table_name='vehicle_model_definitions', schema='data')
|
||||
op.create_unique_constraint(op.f('uix_make_tech_type'), 'vehicle_model_definitions', ['make', 'technical_code', 'vehicle_type_id'], postgresql_nulls_not_distinct=False)
|
||||
op.create_index(op.f('ix_vehicle_model_marketing_name'), 'vehicle_model_definitions', ['marketing_name'], unique=False)
|
||||
op.create_index(op.f('idx_vmd_lookup'), 'vehicle_model_definitions', ['make', 'technical_code'], unique=False)
|
||||
op.alter_column('vehicle_model_definitions', 'source',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'status',
|
||||
existing_type=sa.String(length=50),
|
||||
type_=sa.VARCHAR(length=30),
|
||||
existing_nullable=False,
|
||||
existing_server_default=sa.text("'active'::character varying"))
|
||||
op.alter_column('vehicle_model_definitions', 'power_kw',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'engine_capacity',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'body_type',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'technical_code',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name',
|
||||
existing_type=sa.String(length=255),
|
||||
type_=sa.VARCHAR(length=100),
|
||||
nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'make',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=False)
|
||||
op.drop_column('vehicle_model_definitions', 'doors')
|
||||
op.drop_column('vehicle_model_definitions', 'euro_classification')
|
||||
op.drop_column('vehicle_model_definitions', 'max_weight')
|
||||
op.drop_column('vehicle_model_definitions', 'curb_weight')
|
||||
op.drop_column('vehicle_model_definitions', 'cylinders')
|
||||
op.drop_column('vehicle_model_definitions', 'version_code')
|
||||
op.drop_column('vehicle_model_definitions', 'variant_code')
|
||||
op.drop_column('vehicle_model_definitions', 'marketing_name_aliases')
|
||||
op.drop_column('vehicle_model_definitions', 'normalized_name')
|
||||
op.add_column('vehicle_catalog', sa.Column('engine_code', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('engine_variant', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('axle_count', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('max_weight_kg', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('body_type', sa.VARCHAR(length=100), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('vehicle_class', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('euro_class', sa.VARCHAR(length=20), autoincrement=False, nullable=True))
|
||||
op.drop_constraint(None, 'vehicle_catalog', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_id'], ['id'])
|
||||
op.drop_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', schema='data', type_='unique')
|
||||
op.create_unique_constraint(op.f('uix_vehicle_catalog_full'), 'vehicle_catalog', ['make', 'model', 'year_from', 'engine_variant', 'fuel_type'], postgresql_nulls_not_distinct=False)
|
||||
op.create_index(op.f('ix_data_vehicle_catalog_engine_variant'), 'vehicle_catalog', ['engine_variant'], unique=False)
|
||||
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'], referent_schema='identity')
|
||||
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_badge_id_fkey'), 'user_badges', 'badges', ['badge_id'], ['id'])
|
||||
op.create_foreign_key(op.f('user_badges_user_id_fkey'), 'user_badges', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
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.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.create_foreign_key(op.f('service_profiles_parent_id_fkey'), 'service_profiles', 'service_profiles', ['parent_id'], ['id'])
|
||||
op.create_index(op.f('idx_service_profiles_location'), 'service_profiles', ['location'], unique=False, postgresql_using='gist')
|
||||
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_expertise_id_fkey'), 'service_expertises', 'expertise_tags', ['expertise_id'], ['id'])
|
||||
op.create_foreign_key(op.f('service_expertises_service_id_fkey'), 'service_expertises', 'service_profiles', ['service_id'], ['id'])
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('ratings_target_branch_id_fkey'), 'ratings', 'branches', ['target_branch_id'], ['id'])
|
||||
op.create_foreign_key(op.f('ratings_target_organization_id_fkey'), 'ratings', 'organizations', ['target_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('ratings_author_id_fkey'), 'ratings', 'users', ['author_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('ratings_target_user_id_fkey'), 'ratings', 'users', ['target_user_id'], ['id'], referent_schema='identity')
|
||||
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'], referent_schema='identity')
|
||||
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'], referent_schema='identity')
|
||||
op.alter_column('organizations', 'org_type',
|
||||
existing_type=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype', schema='data'),
|
||||
type_=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'organization_members', schema='data', type_='foreignkey')
|
||||
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_person_id_fkey'), 'organization_members', 'persons', ['person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('organization_members_organization_id_fkey'), 'organization_members', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('organization_members_user_id_fkey'), 'organization_members', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'organization_financials', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('organization_financials_organization_id_fkey'), 'organization_financials', '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_org_id_fkey'), 'org_subscriptions', 'organizations', ['org_id'], ['id'])
|
||||
op.create_foreign_key(op.f('org_subscriptions_tier_id_fkey'), 'org_subscriptions', 'subscription_tiers', ['tier_id'], ['id'])
|
||||
op.drop_constraint(None, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], referent_schema='identity')
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_id'], ['id'])
|
||||
op.create_foreign_key(op.f('model_feature_maps_feature_id_fkey'), 'model_feature_maps', 'feature_definitions', ['feature_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_constraint(None, 'feature_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'])
|
||||
op.add_column('exchange_rates', sa.Column('target_currency', sa.VARCHAR(length=3), autoincrement=False, nullable=True))
|
||||
op.add_column('exchange_rates', sa.Column('base_currency', sa.VARCHAR(length=3), autoincrement=False, nullable=False))
|
||||
op.create_unique_constraint(op.f('exchange_rates_target_currency_key'), 'exchange_rates', ['target_currency'], postgresql_nulls_not_distinct=False)
|
||||
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.add_column('catalog_discovery', sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False))
|
||||
op.add_column('catalog_discovery', sa.Column('attempts', sa.INTEGER(), autoincrement=False, nullable=False))
|
||||
op.add_column('catalog_discovery', sa.Column('priority_score', sa.INTEGER(), server_default=sa.text('0'), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('last_attempt', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('vehicle_class', sa.VARCHAR(length=50), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('source', sa.VARCHAR(length=50), autoincrement=False, nullable=True))
|
||||
op.drop_constraint('_make_model_uc', 'catalog_discovery', schema='data', type_='unique')
|
||||
op.create_index(op.f('ix_data_catalog_discovery_vehicle_class'), 'catalog_discovery', ['vehicle_class'], unique=False)
|
||||
op.create_unique_constraint(op.f('_make_model_class_uc'), 'catalog_discovery', ['make', 'model', 'vehicle_class'], postgresql_nulls_not_distinct=False)
|
||||
op.drop_constraint(None, 'branches', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'branches', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('branches_organization_id_fkey'), 'branches', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('branches_address_id_fkey'), 'branches', 'addresses', ['address_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'], referent_schema='identity')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
existing_nullable=False)
|
||||
op.add_column('assets', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=False))
|
||||
op.add_column('assets', sa.Column('verification_notes', sa.TEXT(), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('verification_method', sa.VARCHAR(length=20), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('catalog_match_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('is_verified', sa.BOOLEAN(), autoincrement=False, nullable=False))
|
||||
op.add_column('assets', sa.Column('is_corporate', sa.BOOLEAN(), server_default=sa.text('false'), autoincrement=False, nullable=False))
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
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_current_organization_id_fkey'), 'assets', 'organizations', ['current_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_catalog_id_fkey'), 'assets', 'vehicle_catalog', ['catalog_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_operator_person_id_fkey'), 'assets', 'persons', ['operator_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_owner_org_id_fkey'), 'assets', 'organizations', ['owner_org_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_owner_person_id_fkey'), 'assets', 'persons', ['owner_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_operator_org_id_fkey'), 'assets', 'organizations', ['operator_org_id'], ['id'])
|
||||
op.drop_index(op.f('ix_data_assets_year_of_manufacture'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_is_for_sale'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_current_mileage'), table_name='assets', schema='data')
|
||||
op.create_index(op.f('ix_data_assets_registration_uuid'), 'assets', ['registration_uuid'], unique=False)
|
||||
op.drop_column('assets', 'individual_equipment')
|
||||
op.drop_column('assets', 'currency')
|
||||
op.drop_column('assets', 'price')
|
||||
op.drop_column('assets', 'is_for_sale')
|
||||
op.drop_column('assets', 'condition_score')
|
||||
op.drop_column('assets', 'current_mileage')
|
||||
op.drop_column('assets', 'first_registration_date')
|
||||
op.add_column('asset_telemetry', sa.Column('mileage_unit', sa.VARCHAR(length=10), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_telemetry', sa.Column('vqi_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_telemetry', sa.Column('dbs_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=False))
|
||||
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.add_column('asset_reviews', sa.Column('criteria_scores', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), autoincrement=False, nullable=False))
|
||||
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'], referent_schema='identity')
|
||||
op.add_column('asset_financials', sa.Column('acquisition_date', postgresql.TIMESTAMP(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('acquisition_price', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('residual_value_estimate', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
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.alter_column('asset_financials', 'financing_type',
|
||||
existing_type=sa.VARCHAR(),
|
||||
nullable=True)
|
||||
op.drop_column('asset_financials', 'accounting_details')
|
||||
op.drop_column('asset_financials', 'activation_date')
|
||||
op.drop_column('asset_financials', 'vat_rate')
|
||||
op.drop_column('asset_financials', 'purchase_price_gross')
|
||||
op.drop_column('asset_financials', 'purchase_price_net')
|
||||
op.add_column('asset_events', sa.Column('data', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_events', sa.Column('recorded_mileage', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_events', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=True))
|
||||
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.create_index(op.f('ix_data_asset_events_registration_uuid'), 'asset_events', ['registration_uuid'], unique=False)
|
||||
op.add_column('asset_costs', sa.Column('mileage_at_cost', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('net_amount_local', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('exchange_rate_used', sa.NUMERIC(precision=18, scale=6), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('vat_rate', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('amount_eur', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('amount_local', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('currency_local', sa.VARCHAR(length=3), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('cost_type', sa.VARCHAR(length=50), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('driver_id', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
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_organization_id_fkey'), 'asset_costs', 'organizations', ['organization_id'], ['id'])
|
||||
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'], referent_schema='identity')
|
||||
op.drop_index(op.f('ix_data_asset_costs_invoice_number'), table_name='asset_costs', schema='data')
|
||||
op.drop_index(op.f('ix_data_asset_costs_cost_category'), table_name='asset_costs', schema='data')
|
||||
op.create_index(op.f('ix_data_asset_costs_registration_uuid'), 'asset_costs', ['registration_uuid'], unique=False)
|
||||
op.drop_column('asset_costs', 'invoice_number')
|
||||
op.drop_column('asset_costs', 'currency')
|
||||
op.drop_column('asset_costs', 'amount_net')
|
||||
op.drop_column('asset_costs', 'cost_category')
|
||||
op.add_column('asset_assignments', sa.Column('branch_id', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_assignments', sa.Column('released_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_assignments', sa.Column('assigned_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False))
|
||||
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.create_foreign_key(op.f('asset_assignments_branch_id_fkey'), 'asset_assignments', 'branches', ['branch_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'])
|
||||
op.drop_table('vehicle_ownership_history', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_logbook_trip_type'), table_name='vehicle_logbook', schema='data')
|
||||
op.drop_table('vehicle_logbook', schema='data')
|
||||
op.drop_table('asset_inspections', schema='data')
|
||||
# ### end Alembic commands ###
|
||||
28
backend/migrations/versions/5bd7f1cb0dc9_sentinel_v2_core_update.py
Executable file
28
backend/migrations/versions/5bd7f1cb0dc9_sentinel_v2_core_update.py
Executable file
@@ -0,0 +1,28 @@
|
||||
"""sentinel_v2_core_update
|
||||
|
||||
Revision ID: 5bd7f1cb0dc9
|
||||
Revises: e5ad17906e7f
|
||||
Create Date: 2026-02-27 23:48:28.770182
|
||||
|
||||
"""
|
||||
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 = '5bd7f1cb0dc9'
|
||||
down_revision: Union[str, Sequence[str], None] = 'e5ad17906e7f'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Upgrade schema."""
|
||||
pass
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
pass
|
||||
919
backend/migrations/versions/78f5b29d0714_mb2_genesis_final.py
Executable file
919
backend/migrations/versions/78f5b29d0714_mb2_genesis_final.py
Executable file
@@ -0,0 +1,919 @@
|
||||
"""MB2_Genesis_Final
|
||||
|
||||
Revision ID: 78f5b29d0714
|
||||
Revises:
|
||||
Create Date: 2026-02-23 23:33:45.271156
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
import geoalchemy2
|
||||
from sqlalchemy.dialects import postgresql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '78f5b29d0714'
|
||||
down_revision: Union[str, Sequence[str], None] = None
|
||||
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.execute('CREATE EXTENSION IF NOT EXISTS postgis')
|
||||
op.execute('CREATE SCHEMA IF NOT EXISTS identity')
|
||||
op.execute('CREATE SCHEMA IF NOT EXISTS data')
|
||||
op.execute('CREATE SCHEMA IF NOT EXISTS system')
|
||||
op.execute('CREATE EXTENSION IF NOT EXISTS postgis')
|
||||
op.create_table('badges',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('name', sa.String(), nullable=False),
|
||||
sa.Column('description', sa.String(), nullable=False),
|
||||
sa.Column('icon_url', sa.String(), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('name'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_badges_id'), 'badges', ['id'], unique=False, schema='data')
|
||||
op.create_table('catalog_discovery',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('make', sa.String(length=100), nullable=False),
|
||||
sa.Column('model', sa.String(length=100), nullable=False),
|
||||
sa.Column('vehicle_class', sa.String(length=50), nullable=True),
|
||||
sa.Column('source', sa.String(length=50), nullable=True),
|
||||
sa.Column('status', sa.String(length=20), server_default=sa.text("'pending'"), nullable=False),
|
||||
sa.Column('attempts', sa.Integer(), nullable=False),
|
||||
sa.Column('last_attempt', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('make', 'model', 'vehicle_class', name='_make_model_class_uc'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_catalog_discovery_id'), 'catalog_discovery', ['id'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_catalog_discovery_make'), 'catalog_discovery', ['make'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_catalog_discovery_model'), 'catalog_discovery', ['model'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_catalog_discovery_status'), 'catalog_discovery', ['status'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_catalog_discovery_vehicle_class'), 'catalog_discovery', ['vehicle_class'], unique=False, schema='data')
|
||||
op.create_table('discovery_parameters',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('city', sa.String(length=100), nullable=False),
|
||||
sa.Column('keyword', sa.String(length=100), nullable=False),
|
||||
sa.Column('is_active', sa.Boolean(), nullable=False),
|
||||
sa.Column('last_run_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('exchange_rates',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('base_currency', sa.String(length=3), nullable=False),
|
||||
sa.Column('target_currency', sa.String(length=3), nullable=True),
|
||||
sa.Column('rate', sa.Numeric(precision=18, scale=6), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('target_currency'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('expertise_tags',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('key', sa.String(length=50), nullable=False),
|
||||
sa.Column('name_hu', sa.String(length=100), nullable=True),
|
||||
sa.Column('category', sa.String(length=30), nullable=True),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_expertise_tags_key'), 'expertise_tags', ['key'], unique=True, schema='data')
|
||||
op.create_table('geo_postal_codes',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('country_code', sa.String(length=5), nullable=False),
|
||||
sa.Column('zip_code', sa.String(length=10), nullable=False),
|
||||
sa.Column('city', sa.String(length=100), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_geo_postal_codes_city'), 'geo_postal_codes', ['city'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_geo_postal_codes_zip_code'), 'geo_postal_codes', ['zip_code'], unique=False, schema='data')
|
||||
op.create_table('geo_street_types',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('name', sa.String(length=50), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('name'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('level_configs',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('level_number', sa.Integer(), nullable=False),
|
||||
sa.Column('min_points', sa.Integer(), nullable=False),
|
||||
sa.Column('rank_name', sa.String(), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('level_number'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_level_configs_id'), 'level_configs', ['id'], unique=False, schema='data')
|
||||
op.create_table('point_rules',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('action_key', sa.String(), nullable=False),
|
||||
sa.Column('points', sa.Integer(), nullable=False),
|
||||
sa.Column('description', sa.String(), nullable=True),
|
||||
sa.Column('is_active', sa.Boolean(), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_point_rules_action_key'), 'point_rules', ['action_key'], unique=True, schema='data')
|
||||
op.create_index(op.f('ix_data_point_rules_id'), 'point_rules', ['id'], unique=False, schema='data')
|
||||
op.create_table('service_specialties',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('parent_id', sa.Integer(), nullable=True),
|
||||
sa.Column('name', sa.String(), nullable=False),
|
||||
sa.Column('slug', sa.String(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['parent_id'], ['data.service_specialties.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_service_specialties_slug'), 'service_specialties', ['slug'], unique=True, schema='data')
|
||||
op.create_table('service_staging',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('name', sa.String(), nullable=False),
|
||||
sa.Column('postal_code', sa.String(length=10), nullable=True),
|
||||
sa.Column('city', sa.String(length=100), nullable=True),
|
||||
sa.Column('full_address', sa.String(), nullable=True),
|
||||
sa.Column('fingerprint', sa.String(length=255), nullable=False),
|
||||
sa.Column('raw_data', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('status', sa.String(length=20), server_default=sa.text("'pending'"), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index('idx_staging_fingerprint', 'service_staging', ['fingerprint'], unique=True, schema='data')
|
||||
op.create_index(op.f('ix_data_service_staging_city'), 'service_staging', ['city'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_service_staging_id'), 'service_staging', ['id'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_service_staging_name'), 'service_staging', ['name'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_service_staging_postal_code'), 'service_staging', ['postal_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_service_staging_status'), 'service_staging', ['status'], unique=False, schema='data')
|
||||
op.create_table('subscription_tiers',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('name', sa.String(), nullable=False),
|
||||
sa.Column('rules', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('is_custom', sa.Boolean(), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_subscription_tiers_name'), 'subscription_tiers', ['name'], unique=True, schema='data')
|
||||
op.create_table('translations',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('key', sa.String(length=255), nullable=False),
|
||||
sa.Column('lang', sa.String(length=5), nullable=False),
|
||||
sa.Column('value', sa.Text(), nullable=False),
|
||||
sa.Column('is_published', sa.Boolean(), server_default=sa.text('true'), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_translations_id'), 'translations', ['id'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_translations_key'), 'translations', ['key'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_translations_lang'), 'translations', ['lang'], unique=False, schema='data')
|
||||
op.create_table('vehicle_types',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('code', sa.String(length=30), nullable=False),
|
||||
sa.Column('name', sa.String(length=50), nullable=False),
|
||||
sa.Column('icon', sa.String(length=50), nullable=True),
|
||||
sa.Column('units', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text('\'{"power": "kW", "weight": "kg"}\'::jsonb'), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_vehicle_types_code'), 'vehicle_types', ['code'], unique=True, schema='data')
|
||||
op.create_table('addresses',
|
||||
sa.Column('id', sa.UUID(), nullable=False),
|
||||
sa.Column('postal_code_id', sa.Integer(), nullable=True),
|
||||
sa.Column('street_name', sa.String(length=200), nullable=False),
|
||||
sa.Column('street_type', sa.String(length=50), nullable=False),
|
||||
sa.Column('house_number', sa.String(length=50), nullable=False),
|
||||
sa.Column('stairwell', sa.String(length=20), nullable=True),
|
||||
sa.Column('floor', sa.String(length=20), nullable=True),
|
||||
sa.Column('door', sa.String(length=20), nullable=True),
|
||||
sa.Column('parcel_id', sa.String(length=50), nullable=True),
|
||||
sa.Column('full_address_text', sa.Text(), nullable=True),
|
||||
sa.Column('latitude', sa.Float(), nullable=True),
|
||||
sa.Column('longitude', sa.Float(), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['postal_code_id'], ['data.geo_postal_codes.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('feature_definitions',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('vehicle_type_id', sa.Integer(), nullable=False),
|
||||
sa.Column('code', sa.String(length=50), nullable=False),
|
||||
sa.Column('name', sa.String(length=100), nullable=False),
|
||||
sa.Column('category', sa.String(length=50), nullable=False),
|
||||
sa.ForeignKeyConstraint(['vehicle_type_id'], ['data.vehicle_types.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_feature_definitions_category'), 'feature_definitions', ['category'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_feature_definitions_code'), 'feature_definitions', ['code'], unique=False, schema='data')
|
||||
op.create_table('geo_streets',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('postal_code_id', sa.Integer(), nullable=True),
|
||||
sa.Column('name', sa.String(length=200), nullable=False),
|
||||
sa.ForeignKeyConstraint(['postal_code_id'], ['data.geo_postal_codes.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_geo_streets_name'), 'geo_streets', ['name'], unique=False, schema='data')
|
||||
op.create_table('vehicle_model_definitions',
|
||||
sa.Column('raw_search_context', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('make', sa.String(length=50), nullable=False),
|
||||
sa.Column('technical_code', sa.String(length=50), nullable=False),
|
||||
sa.Column('marketing_name', sa.String(length=100), nullable=True),
|
||||
sa.Column('vehicle_type_id', sa.Integer(), nullable=True),
|
||||
sa.Column('year_from', sa.Integer(), nullable=True),
|
||||
sa.Column('year_to', sa.Integer(), nullable=True),
|
||||
sa.Column('status', sa.String(length=30), server_default=sa.text("'active'"), nullable=False),
|
||||
sa.Column('is_manual', sa.Boolean(), nullable=False),
|
||||
sa.Column('attempts', sa.Integer(), nullable=False),
|
||||
sa.Column('research_metadata', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('specifications', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['vehicle_type_id'], ['data.vehicle_types.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('make', 'technical_code', 'vehicle_type_id', name='uix_make_tech_type'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index('idx_vmd_lookup', 'vehicle_model_definitions', ['make', 'technical_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_make'), 'vehicle_model_definitions', ['make'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_marketing_name'), 'vehicle_model_definitions', ['marketing_name'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_status'), 'vehicle_model_definitions', ['status'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_technical_code'), 'vehicle_model_definitions', ['technical_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_year_from'), 'vehicle_model_definitions', ['year_from'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_year_to'), 'vehicle_model_definitions', ['year_to'], unique=False, schema='data')
|
||||
op.create_table('model_feature_maps',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('model_definition_id', sa.Integer(), nullable=False),
|
||||
sa.Column('feature_id', sa.Integer(), nullable=False),
|
||||
sa.Column('is_standard', sa.Boolean(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['feature_id'], ['data.feature_definitions.id'], ),
|
||||
sa.ForeignKeyConstraint(['model_definition_id'], ['data.vehicle_model_definitions.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('vehicle_catalog',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('master_definition_id', sa.Integer(), nullable=True),
|
||||
sa.Column('make', sa.String(), nullable=False),
|
||||
sa.Column('model', sa.String(), nullable=False),
|
||||
sa.Column('generation', sa.String(), nullable=True),
|
||||
sa.Column('engine_variant', sa.String(), nullable=True),
|
||||
sa.Column('year_from', sa.Integer(), nullable=True),
|
||||
sa.Column('year_to', sa.Integer(), nullable=True),
|
||||
sa.Column('vehicle_class', sa.String(), nullable=True),
|
||||
sa.Column('fuel_type', sa.String(), nullable=True),
|
||||
sa.Column('power_kw', sa.Integer(), nullable=True),
|
||||
sa.Column('engine_capacity', sa.Integer(), nullable=True),
|
||||
sa.Column('max_weight_kg', sa.Integer(), nullable=True),
|
||||
sa.Column('axle_count', sa.Integer(), nullable=True),
|
||||
sa.Column('euro_class', sa.String(length=20), nullable=True),
|
||||
sa.Column('body_type', sa.String(length=100), nullable=True),
|
||||
sa.Column('engine_code', sa.String(), nullable=True),
|
||||
sa.Column('factory_data', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.ForeignKeyConstraint(['master_definition_id'], ['data.vehicle_model_definitions.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('make', 'model', 'year_from', 'engine_variant', 'fuel_type', name='uix_vehicle_catalog_full'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_vehicle_catalog_engine_capacity'), 'vehicle_catalog', ['engine_capacity'], unique=False, schema='data')
|
||||
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_index(op.f('ix_data_vehicle_catalog_generation'), 'vehicle_catalog', ['generation'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_catalog_id'), 'vehicle_catalog', ['id'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_catalog_make'), 'vehicle_catalog', ['make'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_catalog_model'), 'vehicle_catalog', ['model'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_catalog_power_kw'), 'vehicle_catalog', ['power_kw'], unique=False, schema='data')
|
||||
op.create_table('persons',
|
||||
sa.Column('id', sa.BigInteger(), nullable=False),
|
||||
sa.Column('id_uuid', sa.UUID(), nullable=False),
|
||||
sa.Column('address_id', sa.UUID(), nullable=True),
|
||||
sa.Column('identity_hash', sa.String(length=64), nullable=True),
|
||||
sa.Column('last_name', sa.String(), nullable=False),
|
||||
sa.Column('first_name', sa.String(), nullable=False),
|
||||
sa.Column('phone', sa.String(), nullable=True),
|
||||
sa.Column('mothers_last_name', sa.String(), nullable=True),
|
||||
sa.Column('mothers_first_name', sa.String(), nullable=True),
|
||||
sa.Column('birth_place', sa.String(), nullable=True),
|
||||
sa.Column('birth_date', sa.DateTime(), nullable=True),
|
||||
sa.Column('identity_docs', sa.JSON(), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('ice_contact', sa.JSON(), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('lifetime_xp', sa.BigInteger(), server_default=sa.text('0'), nullable=False),
|
||||
sa.Column('penalty_points', sa.Integer(), server_default=sa.text('0'), nullable=False),
|
||||
sa.Column('social_reputation', sa.Numeric(precision=3, scale=2), server_default=sa.text('1.00'), nullable=False),
|
||||
sa.Column('is_sales_agent', sa.Boolean(), server_default=sa.text('false'), nullable=False),
|
||||
sa.Column('is_active', sa.Boolean(), nullable=False),
|
||||
sa.Column('is_ghost', sa.Boolean(), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.ForeignKeyConstraint(['address_id'], ['data.addresses.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('id_uuid'),
|
||||
schema='identity'
|
||||
)
|
||||
op.create_index(op.f('ix_identity_persons_id'), 'persons', ['id'], unique=False, schema='identity')
|
||||
op.create_index(op.f('ix_identity_persons_identity_hash'), 'persons', ['identity_hash'], unique=True, schema='identity')
|
||||
op.create_table('users',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('email', sa.String(), nullable=False),
|
||||
sa.Column('hashed_password', sa.String(), nullable=True),
|
||||
sa.Column('role', postgresql.ENUM('superadmin', 'admin', 'region_admin', 'country_admin', 'moderator', 'sales_agent', 'user', 'service_owner', 'fleet_manager', 'driver', name='userrole', schema='identity'), nullable=False),
|
||||
sa.Column('person_id', sa.BigInteger(), nullable=True),
|
||||
sa.Column('subscription_plan', sa.String(length=30), server_default=sa.text("'FREE'"), nullable=False),
|
||||
sa.Column('subscription_expires_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('is_vip', sa.Boolean(), server_default=sa.text('false'), nullable=False),
|
||||
sa.Column('referral_code', sa.String(length=20), nullable=True),
|
||||
sa.Column('referred_by_id', sa.Integer(), nullable=True),
|
||||
sa.Column('current_sales_agent_id', sa.Integer(), nullable=True),
|
||||
sa.Column('is_active', sa.Boolean(), nullable=False),
|
||||
sa.Column('is_deleted', sa.Boolean(), nullable=False),
|
||||
sa.Column('folder_slug', sa.String(length=12), nullable=True),
|
||||
sa.Column('preferred_language', sa.String(length=5), server_default='hu', nullable=False),
|
||||
sa.Column('region_code', sa.String(length=5), server_default='HU', nullable=False),
|
||||
sa.Column('preferred_currency', sa.String(length=3), server_default='HUF', nullable=False),
|
||||
sa.Column('scope_level', sa.String(length=30), server_default='individual', nullable=False),
|
||||
sa.Column('scope_id', sa.String(length=50), nullable=True),
|
||||
sa.Column('custom_permissions', sa.JSON(), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['current_sales_agent_id'], ['identity.users.id'], ),
|
||||
sa.ForeignKeyConstraint(['person_id'], ['identity.persons.id'], ),
|
||||
sa.ForeignKeyConstraint(['referred_by_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('referral_code'),
|
||||
schema='identity'
|
||||
)
|
||||
op.create_index(op.f('ix_identity_users_email'), 'users', ['email'], unique=True, schema='identity')
|
||||
op.create_index(op.f('ix_identity_users_folder_slug'), 'users', ['folder_slug'], unique=True, schema='identity')
|
||||
op.create_index(op.f('ix_identity_users_id'), 'users', ['id'], unique=False, schema='identity')
|
||||
op.create_table('audit_logs',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=True),
|
||||
sa.Column('severity', postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'), nullable=False),
|
||||
sa.Column('action', sa.String(length=100), nullable=False),
|
||||
sa.Column('target_type', sa.String(length=50), nullable=True),
|
||||
sa.Column('target_id', sa.String(length=50), nullable=True),
|
||||
sa.Column('old_data', sa.JSON(), nullable=True),
|
||||
sa.Column('new_data', sa.JSON(), nullable=True),
|
||||
sa.Column('ip_address', sa.String(length=45), nullable=True),
|
||||
sa.Column('user_agent', sa.Text(), nullable=True),
|
||||
sa.Column('timestamp', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_audit_logs_action'), 'audit_logs', ['action'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_audit_logs_id'), 'audit_logs', ['id'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_audit_logs_ip_address'), 'audit_logs', ['ip_address'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_audit_logs_target_id'), 'audit_logs', ['target_id'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_audit_logs_target_type'), 'audit_logs', ['target_type'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_audit_logs_timestamp'), 'audit_logs', ['timestamp'], unique=False, schema='data')
|
||||
op.create_table('organizations',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('address_id', sa.UUID(), nullable=True),
|
||||
sa.Column('is_anonymized', sa.Boolean(), server_default=sa.text('false'), nullable=False),
|
||||
sa.Column('anonymized_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('full_name', sa.String(), nullable=False),
|
||||
sa.Column('name', sa.String(), nullable=False),
|
||||
sa.Column('display_name', sa.String(length=50), nullable=True),
|
||||
sa.Column('folder_slug', sa.String(length=12), nullable=False),
|
||||
sa.Column('default_currency', sa.String(length=3), nullable=False),
|
||||
sa.Column('country_code', sa.String(length=2), nullable=False),
|
||||
sa.Column('language', sa.String(length=5), nullable=False),
|
||||
sa.Column('address_zip', sa.String(length=10), nullable=True),
|
||||
sa.Column('address_city', sa.String(length=100), nullable=True),
|
||||
sa.Column('address_street_name', sa.String(length=150), nullable=True),
|
||||
sa.Column('address_street_type', sa.String(length=50), nullable=True),
|
||||
sa.Column('address_house_number', sa.String(length=20), nullable=True),
|
||||
sa.Column('address_hrsz', sa.String(length=50), nullable=True),
|
||||
sa.Column('tax_number', sa.String(length=20), nullable=True),
|
||||
sa.Column('reg_number', sa.String(length=50), nullable=True),
|
||||
sa.Column('org_type', postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype', schema='data'), nullable=False),
|
||||
sa.Column('status', sa.String(length=30), nullable=False),
|
||||
sa.Column('is_deleted', sa.Boolean(), nullable=False),
|
||||
sa.Column('subscription_plan', sa.String(length=30), server_default=sa.text("'FREE'"), nullable=False),
|
||||
sa.Column('base_asset_limit', sa.Integer(), server_default=sa.text('1'), nullable=False),
|
||||
sa.Column('purchased_extra_slots', sa.Integer(), server_default=sa.text('0'), nullable=False),
|
||||
sa.Column('notification_settings', sa.JSON(), server_default=sa.text('\'{"notify_owner": true, "alert_days_before": [30, 15, 7, 1]}\'::jsonb'), nullable=False),
|
||||
sa.Column('external_integration_config', sa.JSON(), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('owner_id', sa.Integer(), nullable=True),
|
||||
sa.Column('is_active', sa.Boolean(), nullable=False),
|
||||
sa.Column('is_verified', sa.Boolean(), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('is_ownership_transferable', sa.Boolean(), server_default=sa.text('true'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['address_id'], ['data.addresses.id'], ),
|
||||
sa.ForeignKeyConstraint(['owner_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_organizations_folder_slug'), 'organizations', ['folder_slug'], unique=True, schema='data')
|
||||
op.create_index(op.f('ix_data_organizations_id'), 'organizations', ['id'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_organizations_subscription_plan'), 'organizations', ['subscription_plan'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_organizations_tax_number'), 'organizations', ['tax_number'], unique=True, schema='data')
|
||||
op.create_table('points_ledger',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('points', sa.Integer(), nullable=False),
|
||||
sa.Column('penalty_change', sa.Integer(), server_default=sa.text('0'), nullable=False),
|
||||
sa.Column('reason', sa.String(), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_points_ledger_id'), 'points_ledger', ['id'], unique=False, schema='data')
|
||||
op.create_table('user_badges',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('badge_id', sa.Integer(), nullable=False),
|
||||
sa.Column('earned_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['badge_id'], ['data.badges.id'], ),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_user_badges_id'), 'user_badges', ['id'], unique=False, schema='data')
|
||||
op.create_table('user_stats',
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('total_xp', sa.Integer(), nullable=False),
|
||||
sa.Column('social_points', sa.Integer(), nullable=False),
|
||||
sa.Column('current_level', sa.Integer(), nullable=False),
|
||||
sa.Column('penalty_points', sa.Integer(), server_default=sa.text('0'), nullable=False),
|
||||
sa.Column('restriction_level', sa.Integer(), server_default=sa.text('0'), nullable=False),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('user_id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('social_accounts',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('provider', sa.String(length=50), nullable=False),
|
||||
sa.Column('social_id', sa.String(length=255), nullable=False),
|
||||
sa.Column('email', sa.String(length=255), nullable=False),
|
||||
sa.Column('extra_data', sa.JSON(), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ondelete='CASCADE'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('provider', 'social_id', name='uix_social_provider_id'),
|
||||
schema='identity'
|
||||
)
|
||||
op.create_index(op.f('ix_identity_social_accounts_id'), 'social_accounts', ['id'], unique=False, schema='identity')
|
||||
op.create_index(op.f('ix_identity_social_accounts_social_id'), 'social_accounts', ['social_id'], unique=False, schema='identity')
|
||||
op.create_table('verification_tokens',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('token', sa.UUID(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('token_type', sa.String(length=20), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('expires_at', sa.DateTime(timezone=True), nullable=False),
|
||||
sa.Column('is_used', sa.Boolean(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ondelete='CASCADE'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('token'),
|
||||
schema='identity'
|
||||
)
|
||||
op.create_index(op.f('ix_identity_verification_tokens_id'), 'verification_tokens', ['id'], unique=False, schema='identity')
|
||||
op.create_table('wallets',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('earned_credits', sa.Numeric(precision=18, scale=4), server_default=sa.text('0'), nullable=False),
|
||||
sa.Column('purchased_credits', sa.Numeric(precision=18, scale=4), server_default=sa.text('0'), nullable=False),
|
||||
sa.Column('service_coins', sa.Numeric(precision=18, scale=4), server_default=sa.text('0'), nullable=False),
|
||||
sa.Column('currency', sa.String(length=3), nullable=False),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('user_id'),
|
||||
schema='identity'
|
||||
)
|
||||
op.create_index(op.f('ix_identity_wallets_id'), 'wallets', ['id'], unique=False, schema='identity')
|
||||
op.create_table('assets',
|
||||
sa.Column('id', sa.UUID(), nullable=False),
|
||||
sa.Column('vin', sa.String(length=17), nullable=False),
|
||||
sa.Column('license_plate', sa.String(length=20), nullable=True),
|
||||
sa.Column('name', sa.String(), nullable=True),
|
||||
sa.Column('year_of_manufacture', sa.Integer(), nullable=True),
|
||||
sa.Column('current_organization_id', sa.Integer(), nullable=True),
|
||||
sa.Column('catalog_id', sa.Integer(), nullable=True),
|
||||
sa.Column('is_verified', sa.Boolean(), nullable=False),
|
||||
sa.Column('verification_method', sa.String(length=20), nullable=True),
|
||||
sa.Column('verification_notes', sa.Text(), nullable=True),
|
||||
sa.Column('catalog_match_score', sa.Numeric(precision=5, scale=2), nullable=True),
|
||||
sa.Column('status', sa.String(length=20), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('registration_uuid', sa.UUID(), nullable=False),
|
||||
sa.Column('is_corporate', sa.Boolean(), server_default=sa.text('false'), nullable=False),
|
||||
sa.Column('owner_person_id', sa.BigInteger(), nullable=True),
|
||||
sa.Column('owner_org_id', sa.Integer(), nullable=True),
|
||||
sa.Column('operator_person_id', sa.BigInteger(), nullable=True),
|
||||
sa.Column('operator_org_id', sa.Integer(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['catalog_id'], ['data.vehicle_catalog.id'], ),
|
||||
sa.ForeignKeyConstraint(['current_organization_id'], ['data.organizations.id'], ),
|
||||
sa.ForeignKeyConstraint(['operator_org_id'], ['data.organizations.id'], ),
|
||||
sa.ForeignKeyConstraint(['operator_person_id'], ['identity.persons.id'], ),
|
||||
sa.ForeignKeyConstraint(['owner_org_id'], ['data.organizations.id'], ),
|
||||
sa.ForeignKeyConstraint(['owner_person_id'], ['identity.persons.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_assets_license_plate'), 'assets', ['license_plate'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_registration_uuid'), 'assets', ['registration_uuid'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_vin'), 'assets', ['vin'], unique=True, schema='data')
|
||||
op.create_table('branches',
|
||||
sa.Column('id', sa.UUID(), nullable=False),
|
||||
sa.Column('organization_id', sa.Integer(), nullable=False),
|
||||
sa.Column('address_id', sa.UUID(), nullable=True),
|
||||
sa.Column('name', sa.String(length=100), nullable=False),
|
||||
sa.Column('is_main', sa.Boolean(), nullable=False),
|
||||
sa.Column('postal_code', sa.String(length=10), nullable=True),
|
||||
sa.Column('city', sa.String(length=100), nullable=True),
|
||||
sa.Column('street_name', sa.String(length=150), nullable=True),
|
||||
sa.Column('street_type', sa.String(length=50), nullable=True),
|
||||
sa.Column('house_number', sa.String(length=20), nullable=True),
|
||||
sa.Column('stairwell', sa.String(length=20), nullable=True),
|
||||
sa.Column('floor', sa.String(length=20), nullable=True),
|
||||
sa.Column('door', sa.String(length=20), nullable=True),
|
||||
sa.Column('hrsz', sa.String(length=50), nullable=True),
|
||||
sa.Column('opening_hours', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('branch_rating', sa.Float(), nullable=False),
|
||||
sa.Column('status', sa.String(length=30), nullable=False),
|
||||
sa.Column('is_deleted', sa.Boolean(), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['address_id'], ['data.addresses.id'], ),
|
||||
sa.ForeignKeyConstraint(['organization_id'], ['data.organizations.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_branches_city'), 'branches', ['city'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_branches_postal_code'), 'branches', ['postal_code'], unique=False, schema='data')
|
||||
op.create_table('credit_logs',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('org_id', sa.Integer(), nullable=False),
|
||||
sa.Column('amount', sa.Numeric(precision=10, scale=2), nullable=False),
|
||||
sa.Column('description', sa.String(), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['org_id'], ['data.organizations.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('org_sales_assignments',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('organization_id', sa.Integer(), nullable=True),
|
||||
sa.Column('agent_user_id', sa.Integer(), nullable=True),
|
||||
sa.Column('assigned_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('is_active', sa.Boolean(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['agent_user_id'], ['identity.users.id'], ),
|
||||
sa.ForeignKeyConstraint(['organization_id'], ['data.organizations.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('org_subscriptions',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('org_id', sa.Integer(), nullable=False),
|
||||
sa.Column('tier_id', sa.Integer(), nullable=False),
|
||||
sa.Column('valid_from', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('valid_until', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('is_active', sa.Boolean(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['org_id'], ['data.organizations.id'], ),
|
||||
sa.ForeignKeyConstraint(['tier_id'], ['data.subscription_tiers.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('organization_financials',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('organization_id', sa.Integer(), nullable=False),
|
||||
sa.Column('year', sa.Integer(), nullable=False),
|
||||
sa.Column('turnover', sa.Numeric(precision=18, scale=2), nullable=True),
|
||||
sa.Column('profit', sa.Numeric(precision=18, scale=2), nullable=True),
|
||||
sa.Column('employee_count', sa.Integer(), nullable=True),
|
||||
sa.Column('source', sa.String(length=50), nullable=True),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['organization_id'], ['data.organizations.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_organization_financials_id'), 'organization_financials', ['id'], unique=False, schema='data')
|
||||
op.create_table('organization_members',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('organization_id', sa.Integer(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=True),
|
||||
sa.Column('person_id', sa.BigInteger(), nullable=True),
|
||||
sa.Column('role', postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'), nullable=False),
|
||||
sa.Column('permissions', sa.JSON(), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('is_permanent', sa.Boolean(), nullable=False),
|
||||
sa.Column('is_verified', sa.Boolean(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['organization_id'], ['data.organizations.id'], ),
|
||||
sa.ForeignKeyConstraint(['person_id'], ['identity.persons.id'], ),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_organization_members_id'), 'organization_members', ['id'], unique=False, schema='data')
|
||||
op.create_table('service_profiles',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('organization_id', sa.Integer(), nullable=True),
|
||||
sa.Column('parent_id', sa.Integer(), nullable=True),
|
||||
sa.Column('fingerprint', sa.String(length=255), nullable=False),
|
||||
sa.Column('location', geoalchemy2.types.Geometry(geometry_type='POINT', srid=4326, dimension=2, from_text='ST_GeomFromEWKT', name='geometry', nullable=False), nullable=False),
|
||||
sa.Column('status', sa.String(length=20), server_default=sa.text("'ghost'"), nullable=False),
|
||||
sa.Column('last_audit_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('google_place_id', sa.String(length=100), nullable=True),
|
||||
sa.Column('rating', sa.Float(), nullable=True),
|
||||
sa.Column('user_ratings_total', sa.Integer(), nullable=True),
|
||||
sa.Column('vibe_analysis', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('social_links', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('specialization_tags', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('trust_score', sa.Integer(), nullable=False),
|
||||
sa.Column('is_verified', sa.Boolean(), nullable=False),
|
||||
sa.Column('verification_log', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('opening_hours', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('contact_phone', sa.String(), nullable=True),
|
||||
sa.Column('contact_email', sa.String(), nullable=True),
|
||||
sa.Column('website', sa.String(), nullable=True),
|
||||
sa.Column('bio', sa.Text(), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.ForeignKeyConstraint(['organization_id'], ['data.organizations.id'], ),
|
||||
sa.ForeignKeyConstraint(['parent_id'], ['data.service_profiles.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('google_place_id'),
|
||||
sa.UniqueConstraint('organization_id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index('idx_service_fingerprint', 'service_profiles', ['fingerprint'], unique=True, schema='data')
|
||||
# op.create_index('idx_service_profiles_location', 'service_profiles', ['location'], unique=False, schema='data', postgresql_using='gist')
|
||||
op.create_index(op.f('ix_data_service_profiles_fingerprint'), 'service_profiles', ['fingerprint'], unique=False, schema='data')
|
||||
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.create_table('asset_assignments',
|
||||
sa.Column('id', sa.UUID(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('organization_id', sa.Integer(), nullable=False),
|
||||
sa.Column('branch_id', sa.UUID(), nullable=True),
|
||||
sa.Column('assigned_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('released_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.Column('status', sa.String(length=30), nullable=False),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['branch_id'], ['data.branches.id'], ),
|
||||
sa.ForeignKeyConstraint(['organization_id'], ['data.organizations.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('asset_costs',
|
||||
sa.Column('id', sa.UUID(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('organization_id', sa.Integer(), nullable=False),
|
||||
sa.Column('driver_id', sa.Integer(), nullable=True),
|
||||
sa.Column('cost_type', sa.String(length=50), nullable=False),
|
||||
sa.Column('amount_local', sa.Numeric(precision=18, scale=2), nullable=False),
|
||||
sa.Column('currency_local', sa.String(length=3), nullable=False),
|
||||
sa.Column('amount_eur', sa.Numeric(precision=18, scale=2), nullable=True),
|
||||
sa.Column('net_amount_local', sa.Numeric(precision=18, scale=2), nullable=True),
|
||||
sa.Column('vat_rate', sa.Numeric(precision=5, scale=2), nullable=True),
|
||||
sa.Column('exchange_rate_used', sa.Numeric(precision=18, scale=6), nullable=True),
|
||||
sa.Column('date', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('mileage_at_cost', sa.Integer(), nullable=True),
|
||||
sa.Column('data', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('registration_uuid', sa.UUID(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['driver_id'], ['identity.users.id'], ),
|
||||
sa.ForeignKeyConstraint(['organization_id'], ['data.organizations.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_asset_costs_registration_uuid'), 'asset_costs', ['registration_uuid'], unique=False, schema='data')
|
||||
op.create_table('asset_events',
|
||||
sa.Column('id', sa.UUID(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('event_type', sa.String(length=50), nullable=False),
|
||||
sa.Column('recorded_mileage', sa.Integer(), nullable=True),
|
||||
sa.Column('data', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('registration_uuid', sa.UUID(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_asset_events_registration_uuid'), 'asset_events', ['registration_uuid'], unique=False, schema='data')
|
||||
op.create_table('asset_financials',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('acquisition_price', sa.Numeric(precision=18, scale=2), nullable=True),
|
||||
sa.Column('acquisition_date', sa.DateTime(), nullable=True),
|
||||
sa.Column('financing_type', sa.String(), nullable=True),
|
||||
sa.Column('residual_value_estimate', sa.Numeric(precision=18, scale=2), nullable=True),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('asset_id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('asset_reviews',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('overall_rating', sa.Integer(), nullable=True),
|
||||
sa.Column('criteria_scores', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False),
|
||||
sa.Column('comment', sa.Text(), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('asset_telemetry',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('current_mileage', sa.Integer(), nullable=False),
|
||||
sa.Column('mileage_unit', sa.String(length=10), nullable=False),
|
||||
sa.Column('vqi_score', sa.Numeric(precision=5, scale=2), nullable=False),
|
||||
sa.Column('dbs_score', sa.Numeric(precision=5, scale=2), nullable=False),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
sa.UniqueConstraint('asset_id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('ratings',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('author_id', sa.Integer(), nullable=False),
|
||||
sa.Column('target_organization_id', sa.Integer(), nullable=True),
|
||||
sa.Column('target_user_id', sa.Integer(), nullable=True),
|
||||
sa.Column('target_branch_id', sa.UUID(), nullable=True),
|
||||
sa.Column('score', sa.Numeric(precision=3, scale=2), nullable=False),
|
||||
sa.Column('comment', sa.Text(), nullable=True),
|
||||
sa.Column('images', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'[]'::jsonb"), nullable=False),
|
||||
sa.Column('is_verified', sa.Boolean(), nullable=False),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.ForeignKeyConstraint(['author_id'], ['identity.users.id'], ),
|
||||
sa.ForeignKeyConstraint(['target_branch_id'], ['data.branches.id'], ),
|
||||
sa.ForeignKeyConstraint(['target_organization_id'], ['data.organizations.id'], ),
|
||||
sa.ForeignKeyConstraint(['target_user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index('idx_rating_branch', 'ratings', ['target_branch_id'], unique=False, schema='data')
|
||||
op.create_index('idx_rating_org', 'ratings', ['target_organization_id'], unique=False, schema='data')
|
||||
op.create_index('idx_rating_user', 'ratings', ['target_user_id'], unique=False, schema='data')
|
||||
op.create_table('service_expertises',
|
||||
sa.Column('service_id', sa.Integer(), nullable=False),
|
||||
sa.Column('expertise_id', sa.Integer(), nullable=False),
|
||||
sa.Column('validation_level', sa.Integer(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['expertise_id'], ['data.expertise_tags.id'], ),
|
||||
sa.ForeignKeyConstraint(['service_id'], ['data.service_profiles.id'], ),
|
||||
sa.PrimaryKeyConstraint('service_id', 'expertise_id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_table('vehicle_ownerships',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('vehicle_id', sa.UUID(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('start_date', sa.Date(), server_default=sa.text('CURRENT_DATE'), nullable=False),
|
||||
sa.Column('end_date', sa.Date(), nullable=True),
|
||||
sa.Column('notes', sa.Text(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.ForeignKeyConstraint(['vehicle_id'], ['data.assets.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_vehicle_ownerships_id'), 'vehicle_ownerships', ['id'], unique=False, schema='data')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_index(op.f('ix_data_vehicle_ownerships_id'), table_name='vehicle_ownerships', schema='data')
|
||||
op.drop_table('vehicle_ownerships', schema='data')
|
||||
op.drop_table('service_expertises', schema='data')
|
||||
op.drop_index('idx_rating_user', table_name='ratings', schema='data')
|
||||
op.drop_index('idx_rating_org', table_name='ratings', schema='data')
|
||||
op.drop_index('idx_rating_branch', table_name='ratings', schema='data')
|
||||
op.drop_table('ratings', schema='data')
|
||||
op.drop_table('asset_telemetry', schema='data')
|
||||
op.drop_table('asset_reviews', schema='data')
|
||||
op.drop_table('asset_financials', schema='data')
|
||||
op.drop_index(op.f('ix_data_asset_events_registration_uuid'), table_name='asset_events', schema='data')
|
||||
op.drop_table('asset_events', schema='data')
|
||||
op.drop_index(op.f('ix_data_asset_costs_registration_uuid'), table_name='asset_costs', schema='data')
|
||||
op.drop_table('asset_costs', schema='data')
|
||||
op.drop_table('asset_assignments', schema='data')
|
||||
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.drop_index(op.f('ix_data_service_profiles_fingerprint'), table_name='service_profiles', schema='data')
|
||||
op.drop_index('idx_service_profiles_location', table_name='service_profiles', schema='data', postgresql_using='gist')
|
||||
op.drop_index('idx_service_fingerprint', table_name='service_profiles', schema='data')
|
||||
op.drop_table('service_profiles', schema='data')
|
||||
op.drop_index(op.f('ix_data_organization_members_id'), table_name='organization_members', schema='data')
|
||||
op.drop_table('organization_members', schema='data')
|
||||
op.drop_index(op.f('ix_data_organization_financials_id'), table_name='organization_financials', schema='data')
|
||||
op.drop_table('organization_financials', schema='data')
|
||||
op.drop_table('org_subscriptions', schema='data')
|
||||
op.drop_table('org_sales_assignments', schema='data')
|
||||
op.drop_table('credit_logs', schema='data')
|
||||
op.drop_index(op.f('ix_data_branches_postal_code'), table_name='branches', schema='data')
|
||||
op.drop_index(op.f('ix_data_branches_city'), table_name='branches', schema='data')
|
||||
op.drop_table('branches', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_vin'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_registration_uuid'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_license_plate'), table_name='assets', schema='data')
|
||||
op.drop_table('assets', schema='data')
|
||||
op.drop_index(op.f('ix_identity_wallets_id'), table_name='wallets', schema='identity')
|
||||
op.drop_table('wallets', schema='identity')
|
||||
op.drop_index(op.f('ix_identity_verification_tokens_id'), table_name='verification_tokens', schema='identity')
|
||||
op.drop_table('verification_tokens', schema='identity')
|
||||
op.drop_index(op.f('ix_identity_social_accounts_social_id'), table_name='social_accounts', schema='identity')
|
||||
op.drop_index(op.f('ix_identity_social_accounts_id'), table_name='social_accounts', schema='identity')
|
||||
op.drop_table('social_accounts', schema='identity')
|
||||
op.drop_table('user_stats', schema='data')
|
||||
op.drop_index(op.f('ix_data_user_badges_id'), table_name='user_badges', schema='data')
|
||||
op.drop_table('user_badges', schema='data')
|
||||
op.drop_index(op.f('ix_data_points_ledger_id'), table_name='points_ledger', schema='data')
|
||||
op.drop_table('points_ledger', schema='data')
|
||||
op.drop_index(op.f('ix_data_organizations_tax_number'), table_name='organizations', schema='data')
|
||||
op.drop_index(op.f('ix_data_organizations_subscription_plan'), table_name='organizations', schema='data')
|
||||
op.drop_index(op.f('ix_data_organizations_id'), table_name='organizations', schema='data')
|
||||
op.drop_index(op.f('ix_data_organizations_folder_slug'), table_name='organizations', schema='data')
|
||||
op.drop_table('organizations', schema='data')
|
||||
op.drop_index(op.f('ix_data_audit_logs_timestamp'), table_name='audit_logs', schema='data')
|
||||
op.drop_index(op.f('ix_data_audit_logs_target_type'), table_name='audit_logs', schema='data')
|
||||
op.drop_index(op.f('ix_data_audit_logs_target_id'), table_name='audit_logs', schema='data')
|
||||
op.drop_index(op.f('ix_data_audit_logs_ip_address'), table_name='audit_logs', schema='data')
|
||||
op.drop_index(op.f('ix_data_audit_logs_id'), table_name='audit_logs', schema='data')
|
||||
op.drop_index(op.f('ix_data_audit_logs_action'), table_name='audit_logs', schema='data')
|
||||
op.drop_table('audit_logs', schema='data')
|
||||
op.drop_index(op.f('ix_identity_users_id'), table_name='users', schema='identity')
|
||||
op.drop_index(op.f('ix_identity_users_folder_slug'), table_name='users', schema='identity')
|
||||
op.drop_index(op.f('ix_identity_users_email'), table_name='users', schema='identity')
|
||||
op.drop_table('users', schema='identity')
|
||||
op.drop_index(op.f('ix_identity_persons_identity_hash'), table_name='persons', schema='identity')
|
||||
op.drop_index(op.f('ix_identity_persons_id'), table_name='persons', schema='identity')
|
||||
op.drop_table('persons', schema='identity')
|
||||
op.drop_index(op.f('ix_data_vehicle_catalog_power_kw'), table_name='vehicle_catalog', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_catalog_model'), table_name='vehicle_catalog', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_catalog_make'), table_name='vehicle_catalog', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_catalog_id'), table_name='vehicle_catalog', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_catalog_generation'), table_name='vehicle_catalog', schema='data')
|
||||
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.drop_index(op.f('ix_data_vehicle_catalog_engine_capacity'), table_name='vehicle_catalog', schema='data')
|
||||
op.drop_table('vehicle_catalog', schema='data')
|
||||
op.drop_table('model_feature_maps', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_year_to'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_year_from'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_technical_code'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_status'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_marketing_name'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_make'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index('idx_vmd_lookup', table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_table('vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_geo_streets_name'), table_name='geo_streets', schema='data')
|
||||
op.drop_table('geo_streets', schema='data')
|
||||
op.drop_index(op.f('ix_data_feature_definitions_code'), table_name='feature_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_feature_definitions_category'), table_name='feature_definitions', schema='data')
|
||||
op.drop_table('feature_definitions', schema='data')
|
||||
op.drop_table('addresses', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_types_code'), table_name='vehicle_types', schema='data')
|
||||
op.drop_table('vehicle_types', schema='data')
|
||||
op.drop_index(op.f('ix_data_translations_lang'), table_name='translations', schema='data')
|
||||
op.drop_index(op.f('ix_data_translations_key'), table_name='translations', schema='data')
|
||||
op.drop_index(op.f('ix_data_translations_id'), table_name='translations', schema='data')
|
||||
op.drop_table('translations', schema='data')
|
||||
op.drop_index(op.f('ix_data_subscription_tiers_name'), table_name='subscription_tiers', schema='data')
|
||||
op.drop_table('subscription_tiers', schema='data')
|
||||
op.drop_index(op.f('ix_data_service_staging_status'), table_name='service_staging', schema='data')
|
||||
op.drop_index(op.f('ix_data_service_staging_postal_code'), table_name='service_staging', schema='data')
|
||||
op.drop_index(op.f('ix_data_service_staging_name'), table_name='service_staging', schema='data')
|
||||
op.drop_index(op.f('ix_data_service_staging_id'), table_name='service_staging', schema='data')
|
||||
op.drop_index(op.f('ix_data_service_staging_city'), table_name='service_staging', schema='data')
|
||||
op.drop_index('idx_staging_fingerprint', table_name='service_staging', schema='data')
|
||||
op.drop_table('service_staging', schema='data')
|
||||
op.drop_index(op.f('ix_data_service_specialties_slug'), table_name='service_specialties', schema='data')
|
||||
op.drop_table('service_specialties', schema='data')
|
||||
op.drop_index(op.f('ix_data_point_rules_id'), table_name='point_rules', schema='data')
|
||||
op.drop_index(op.f('ix_data_point_rules_action_key'), table_name='point_rules', schema='data')
|
||||
op.drop_table('point_rules', schema='data')
|
||||
op.drop_index(op.f('ix_data_level_configs_id'), table_name='level_configs', schema='data')
|
||||
op.drop_table('level_configs', schema='data')
|
||||
op.drop_table('geo_street_types', schema='data')
|
||||
op.drop_index(op.f('ix_data_geo_postal_codes_zip_code'), table_name='geo_postal_codes', schema='data')
|
||||
op.drop_index(op.f('ix_data_geo_postal_codes_city'), table_name='geo_postal_codes', schema='data')
|
||||
op.drop_table('geo_postal_codes', schema='data')
|
||||
op.drop_index(op.f('ix_data_expertise_tags_key'), table_name='expertise_tags', schema='data')
|
||||
op.drop_table('expertise_tags', schema='data')
|
||||
op.drop_table('exchange_rates', schema='data')
|
||||
op.drop_table('discovery_parameters', schema='data')
|
||||
op.drop_index(op.f('ix_data_catalog_discovery_vehicle_class'), table_name='catalog_discovery', schema='data')
|
||||
op.drop_index(op.f('ix_data_catalog_discovery_status'), table_name='catalog_discovery', schema='data')
|
||||
op.drop_index(op.f('ix_data_catalog_discovery_model'), table_name='catalog_discovery', schema='data')
|
||||
op.drop_index(op.f('ix_data_catalog_discovery_make'), table_name='catalog_discovery', schema='data')
|
||||
op.drop_index(op.f('ix_data_catalog_discovery_id'), table_name='catalog_discovery', schema='data')
|
||||
op.drop_table('catalog_discovery', schema='data')
|
||||
op.drop_index(op.f('ix_data_badges_id'), table_name='badges', schema='data')
|
||||
op.drop_table('badges', schema='data')
|
||||
# ### end Alembic commands ###
|
||||
586
backend/migrations/versions/7e5a1b721dfb_upgrade_robot_v1_1_0_final.py
Executable file
586
backend/migrations/versions/7e5a1b721dfb_upgrade_robot_v1_1_0_final.py
Executable file
@@ -0,0 +1,586 @@
|
||||
"""Upgrade_Robot_v1_1_0_Final
|
||||
|
||||
Revision ID: 7e5a1b721dfb
|
||||
Revises: 4d69a44da00a
|
||||
Create Date: 2026-02-25 20:23:16.666560
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import postgresql
|
||||
# --- JAVÍTÁS 1: Inspector importálása a táblák ellenőrzéséhez ---
|
||||
from sqlalchemy.engine.reflection import Inspector
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '7e5a1b721dfb'
|
||||
down_revision: Union[str, Sequence[str], None] = '4d69a44da00a'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Upgrade schema."""
|
||||
# --- JAVÍTÁS 2: Adatbázis állapot lekérése ---
|
||||
conn = op.get_bind()
|
||||
inspector = Inspector.from_engine(conn)
|
||||
existing_tables = inspector.get_table_names(schema='data')
|
||||
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
|
||||
# --- JAVÍTÁS 3: Tábla létrehozások "if" feltételbe csomagolása ---
|
||||
if 'asset_inspections' not in existing_tables:
|
||||
op.create_table('asset_inspections',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('inspector_id', sa.Integer(), nullable=False),
|
||||
sa.Column('timestamp', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('checklist_results', postgresql.JSONB(astext_type=sa.Text()), nullable=False),
|
||||
sa.Column('is_safe', sa.Boolean(), nullable=False),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['inspector_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
|
||||
if 'vehicle_logbook' not in existing_tables:
|
||||
op.create_table('vehicle_logbook',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('driver_id', sa.Integer(), nullable=False),
|
||||
sa.Column('trip_type', sa.String(length=30), nullable=False),
|
||||
sa.Column('is_reimbursable', sa.Boolean(), nullable=False),
|
||||
sa.Column('start_mileage', sa.Integer(), nullable=False),
|
||||
sa.Column('end_mileage', sa.Integer(), nullable=True),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['driver_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
op.create_index(op.f('ix_data_vehicle_logbook_trip_type'), 'vehicle_logbook', ['trip_type'], unique=False, schema='data')
|
||||
|
||||
if 'vehicle_ownership_history' not in existing_tables:
|
||||
op.create_table('vehicle_ownership_history',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('asset_id', sa.UUID(), nullable=False),
|
||||
sa.Column('user_id', sa.Integer(), nullable=False),
|
||||
sa.Column('acquired_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('disposed_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.ForeignKeyConstraint(['asset_id'], ['data.assets.id'], ),
|
||||
sa.ForeignKeyConstraint(['user_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='data'
|
||||
)
|
||||
# --- JAVÍTÁS VÉGE (A többi rész érintetlenül hagyva) ---
|
||||
|
||||
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_organization_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_assignments_asset_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_assignments_branch_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'asset_assignments', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'asset_assignments', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('asset_assignments', 'assigned_at')
|
||||
op.drop_column('asset_assignments', 'released_at')
|
||||
op.drop_column('asset_assignments', 'branch_id')
|
||||
op.add_column('asset_costs', sa.Column('cost_category', sa.String(length=50), nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('amount_net', sa.Numeric(precision=18, scale=2), nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('currency', sa.String(length=3), nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('invoice_number', sa.String(length=100), nullable=True))
|
||||
op.drop_index(op.f('ix_data_asset_costs_registration_uuid'), table_name='asset_costs')
|
||||
op.create_index(op.f('ix_data_asset_costs_cost_category'), 'asset_costs', ['cost_category'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_asset_costs_invoice_number'), 'asset_costs', ['invoice_number'], unique=False, schema='data')
|
||||
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.drop_constraint(op.f('asset_costs_organization_id_fkey'), 'asset_costs', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'asset_costs', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'asset_costs', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('asset_costs', 'cost_type')
|
||||
op.drop_column('asset_costs', 'driver_id')
|
||||
op.drop_column('asset_costs', 'registration_uuid')
|
||||
op.drop_column('asset_costs', 'net_amount_local')
|
||||
op.drop_column('asset_costs', 'amount_local')
|
||||
op.drop_column('asset_costs', 'currency_local')
|
||||
op.drop_column('asset_costs', 'exchange_rate_used')
|
||||
op.drop_column('asset_costs', 'vat_rate')
|
||||
op.drop_column('asset_costs', 'mileage_at_cost')
|
||||
op.drop_column('asset_costs', 'amount_eur')
|
||||
op.drop_index(op.f('ix_data_asset_events_registration_uuid'), table_name='asset_events')
|
||||
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_column('asset_events', 'data')
|
||||
op.drop_column('asset_events', 'recorded_mileage')
|
||||
op.drop_column('asset_events', 'registration_uuid')
|
||||
op.add_column('asset_financials', sa.Column('purchase_price_net', sa.Numeric(precision=18, scale=2), nullable=False))
|
||||
op.add_column('asset_financials', sa.Column('purchase_price_gross', sa.Numeric(precision=18, scale=2), nullable=False))
|
||||
op.add_column('asset_financials', sa.Column('vat_rate', sa.Numeric(precision=5, scale=2), nullable=False))
|
||||
op.add_column('asset_financials', sa.Column('activation_date', sa.DateTime(), nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('accounting_details', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False))
|
||||
op.alter_column('asset_financials', 'financing_type',
|
||||
existing_type=sa.VARCHAR(),
|
||||
nullable=False)
|
||||
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.drop_column('asset_financials', 'acquisition_price')
|
||||
op.drop_column('asset_financials', 'residual_value_estimate')
|
||||
op.drop_column('asset_financials', 'acquisition_date')
|
||||
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', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'asset_reviews', 'assets', ['asset_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('asset_reviews', 'criteria_scores')
|
||||
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.drop_column('asset_telemetry', 'vqi_score')
|
||||
op.drop_column('asset_telemetry', 'dbs_score')
|
||||
op.drop_column('asset_telemetry', 'mileage_unit')
|
||||
op.add_column('assets', sa.Column('first_registration_date', sa.DateTime(timezone=True), nullable=True))
|
||||
op.add_column('assets', sa.Column('current_mileage', sa.Integer(), nullable=False))
|
||||
op.add_column('assets', sa.Column('condition_score', sa.Integer(), nullable=False))
|
||||
op.add_column('assets', sa.Column('is_for_sale', sa.Boolean(), nullable=False))
|
||||
op.add_column('assets', sa.Column('price', sa.Numeric(precision=15, scale=2), nullable=True))
|
||||
op.add_column('assets', sa.Column('currency', sa.String(length=3), nullable=False))
|
||||
op.add_column('assets', sa.Column('individual_equipment', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), nullable=False))
|
||||
op.drop_index(op.f('ix_data_assets_registration_uuid'), table_name='assets')
|
||||
op.create_index(op.f('ix_data_assets_current_mileage'), 'assets', ['current_mileage'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_is_for_sale'), 'assets', ['is_for_sale'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_assets_year_of_manufacture'), 'assets', ['year_of_manufacture'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('assets_owner_org_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_catalog_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_current_organization_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_owner_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_operator_org_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_operator_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['owner_org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
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.create_foreign_key(None, 'assets', 'persons', ['operator_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'assets', 'persons', ['owner_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['operator_org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('assets', 'is_verified')
|
||||
op.drop_column('assets', 'registration_uuid')
|
||||
op.drop_column('assets', 'verification_notes')
|
||||
op.drop_column('assets', 'verification_method')
|
||||
op.drop_column('assets', 'catalog_match_score')
|
||||
op.drop_column('assets', 'is_corporate')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
existing_nullable=False)
|
||||
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='identity')
|
||||
op.drop_constraint(op.f('branches_address_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.drop_constraint(op.f('branches_organization_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'branches', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'branches', 'addresses', ['address_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('_make_model_class_uc'), 'catalog_discovery', type_='unique')
|
||||
op.drop_index(op.f('ix_data_catalog_discovery_vehicle_class'), table_name='catalog_discovery')
|
||||
op.create_unique_constraint('_make_model_uc', 'catalog_discovery', ['make', 'model'], schema='data')
|
||||
op.drop_column('catalog_discovery', 'last_attempt')
|
||||
op.drop_column('catalog_discovery', 'vehicle_class')
|
||||
op.drop_column('catalog_discovery', 'created_at')
|
||||
op.drop_column('catalog_discovery', 'priority_score')
|
||||
op.drop_column('catalog_discovery', 'source')
|
||||
op.drop_column('catalog_discovery', 'attempts')
|
||||
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('exchange_rates_target_currency_key'), 'exchange_rates', type_='unique')
|
||||
op.drop_column('exchange_rates', 'target_currency')
|
||||
op.drop_column('exchange_rates', 'base_currency')
|
||||
op.drop_constraint(op.f('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_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('model_feature_maps_feature_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.drop_constraint(op.f('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'feature_definitions', ['feature_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'organizations', ['organization_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_financials_organization_id_fkey'), 'organization_financials', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organization_financials', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(op.f('organization_members_person_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organization_members_user_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organization_members_organization_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organization_members', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'organization_members', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'organization_members', 'persons', ['person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
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'),
|
||||
existing_nullable=False)
|
||||
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', 'users', ['owner_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'organizations', '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='identity')
|
||||
op.drop_constraint(op.f('ratings_target_user_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_organization_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_author_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_branch_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['target_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'ratings', 'organizations', ['target_organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['author_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'ratings', 'branches', ['target_branch_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', 'expertise_tags', ['expertise_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'service_expertises', 'service_profiles', ['service_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_index(op.f('idx_service_profiles_location'), table_name='service_profiles', postgresql_using='gist')
|
||||
op.drop_constraint(op.f('service_profiles_organization_id_fkey'), 'service_profiles', type_='foreignkey')
|
||||
op.drop_constraint(op.f('service_profiles_parent_id_fkey'), 'service_profiles', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'service_profiles', 'service_profiles', ['parent_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
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('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='identity')
|
||||
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='identity')
|
||||
op.drop_index(op.f('ix_data_vehicle_catalog_engine_variant'), table_name='vehicle_catalog')
|
||||
op.drop_constraint(op.f('uix_vehicle_catalog_full'), 'vehicle_catalog', type_='unique')
|
||||
op.create_unique_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', ['make', 'model', 'year_from', 'fuel_type'], schema='data')
|
||||
op.drop_constraint(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_column('vehicle_catalog', 'vehicle_class')
|
||||
op.drop_column('vehicle_catalog', 'axle_count')
|
||||
op.drop_column('vehicle_catalog', 'engine_code')
|
||||
op.drop_column('vehicle_catalog', 'euro_class')
|
||||
op.drop_column('vehicle_catalog', 'body_type')
|
||||
op.drop_column('vehicle_catalog', 'max_weight_kg')
|
||||
op.drop_column('vehicle_catalog', 'engine_variant')
|
||||
op.alter_column('vehicle_model_definitions', 'make',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name',
|
||||
existing_type=sa.VARCHAR(length=100),
|
||||
type_=sa.String(length=255),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name_aliases',
|
||||
existing_type=postgresql.JSONB(astext_type=sa.Text()),
|
||||
nullable=False,
|
||||
existing_server_default=sa.text("'[]'::jsonb"))
|
||||
op.alter_column('vehicle_model_definitions', 'technical_code',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'body_type',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'engine_capacity',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'power_kw',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'status',
|
||||
existing_type=sa.VARCHAR(length=30),
|
||||
type_=sa.String(length=50),
|
||||
existing_nullable=False,
|
||||
existing_server_default=sa.text("'active'::character varying"))
|
||||
op.alter_column('vehicle_model_definitions', 'source',
|
||||
existing_type=sa.VARCHAR(length=50),
|
||||
type_=sa.String(length=100),
|
||||
existing_nullable=True)
|
||||
op.drop_index(op.f('idx_vmd_engine_code'), table_name='vehicle_model_definitions')
|
||||
op.drop_index(op.f('idx_vmd_lookup'), table_name='vehicle_model_definitions')
|
||||
op.drop_index(op.f('idx_vmd_normalized_name'), table_name='vehicle_model_definitions')
|
||||
op.drop_index(op.f('ix_vehicle_model_marketing_name'), table_name='vehicle_model_definitions')
|
||||
op.drop_constraint(op.f('uix_make_tech_type'), 'vehicle_model_definitions', type_='unique')
|
||||
op.create_index('idx_vmd_engine_bridge', 'vehicle_model_definitions', ['make', 'engine_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_engine_capacity'), 'vehicle_model_definitions', ['engine_capacity'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_engine_code'), 'vehicle_model_definitions', ['engine_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_fuel_type'), 'vehicle_model_definitions', ['fuel_type'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_normalized_name'), 'vehicle_model_definitions', ['normalized_name'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_power_kw'), 'vehicle_model_definitions', ['power_kw'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_variant_code'), 'vehicle_model_definitions', ['variant_code'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_vehicle_class'), 'vehicle_model_definitions', ['vehicle_class'], unique=False, schema='data')
|
||||
op.create_index(op.f('ix_data_vehicle_model_definitions_version_code'), 'vehicle_model_definitions', ['version_code'], unique=False, schema='data')
|
||||
op.drop_constraint(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('persons_address_id_fkey'), 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity', referent_schema='data')
|
||||
|
||||
# --- JAVÍTÁS 4: Alchemist robot oszlopainak biztonságos hozzáadása ---
|
||||
vmd_cols = [c['name'] for c in inspector.get_columns('vehicle_model_definitions', schema='data')]
|
||||
if 'attempts' not in vmd_cols:
|
||||
op.add_column('vehicle_model_definitions', sa.Column('attempts', sa.Integer(), server_default=sa.text('0'), nullable=False), schema='data')
|
||||
if 'last_error' not in vmd_cols:
|
||||
op.add_column('vehicle_model_definitions', sa.Column('last_error', sa.Text(), nullable=True), schema='data')
|
||||
if 'updated_at' not in vmd_cols:
|
||||
op.add_column('vehicle_model_definitions', sa.Column('updated_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=True), schema='data')
|
||||
# --- JAVÍTÁS VÉGE ---
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_constraint(None, 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('persons_address_id_fkey'), 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity')
|
||||
op.drop_constraint(None, 'vehicle_model_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'])
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_version_code'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_vehicle_class'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_variant_code'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_power_kw'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_normalized_name'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_fuel_type'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_engine_code'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_model_definitions_engine_capacity'), table_name='vehicle_model_definitions', schema='data')
|
||||
op.drop_index('idx_vmd_engine_bridge', table_name='vehicle_model_definitions', schema='data')
|
||||
op.create_unique_constraint(op.f('uix_make_tech_type'), 'vehicle_model_definitions', ['make', 'technical_code', 'vehicle_type_id'], postgresql_nulls_not_distinct=False)
|
||||
op.create_index(op.f('ix_vehicle_model_marketing_name'), 'vehicle_model_definitions', ['marketing_name'], unique=False)
|
||||
op.create_index(op.f('idx_vmd_normalized_name'), 'vehicle_model_definitions', ['normalized_name'], unique=False)
|
||||
op.create_index(op.f('idx_vmd_lookup'), 'vehicle_model_definitions', ['make', 'technical_code'], unique=False)
|
||||
op.create_index(op.f('idx_vmd_engine_code'), 'vehicle_model_definitions', ['engine_code'], unique=False)
|
||||
op.alter_column('vehicle_model_definitions', 'source',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'status',
|
||||
existing_type=sa.String(length=50),
|
||||
type_=sa.VARCHAR(length=30),
|
||||
existing_nullable=False,
|
||||
existing_server_default=sa.text("'active'::character varying"))
|
||||
op.alter_column('vehicle_model_definitions', 'power_kw',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'engine_capacity',
|
||||
existing_type=sa.INTEGER(),
|
||||
nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'body_type',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=True)
|
||||
op.alter_column('vehicle_model_definitions', 'technical_code',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name_aliases',
|
||||
existing_type=postgresql.JSONB(astext_type=sa.Text()),
|
||||
nullable=True,
|
||||
existing_server_default=sa.text("'[]'::jsonb"))
|
||||
op.alter_column('vehicle_model_definitions', 'marketing_name',
|
||||
existing_type=sa.String(length=255),
|
||||
type_=sa.VARCHAR(length=100),
|
||||
existing_nullable=False)
|
||||
op.alter_column('vehicle_model_definitions', 'make',
|
||||
existing_type=sa.String(length=100),
|
||||
type_=sa.VARCHAR(length=50),
|
||||
existing_nullable=False)
|
||||
op.add_column('vehicle_catalog', sa.Column('engine_variant', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('max_weight_kg', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('body_type', sa.VARCHAR(length=100), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('euro_class', sa.VARCHAR(length=20), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('engine_code', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('axle_count', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('vehicle_catalog', sa.Column('vehicle_class', sa.VARCHAR(), autoincrement=False, nullable=True))
|
||||
op.drop_constraint(None, 'vehicle_catalog', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_id'], ['id'])
|
||||
op.drop_constraint('uix_vehicle_catalog_full', 'vehicle_catalog', schema='data', type_='unique')
|
||||
op.create_unique_constraint(op.f('uix_vehicle_catalog_full'), 'vehicle_catalog', ['make', 'model', 'year_from', 'engine_variant', 'fuel_type'], postgresql_nulls_not_distinct=False)
|
||||
op.create_index(op.f('ix_data_vehicle_catalog_engine_variant'), 'vehicle_catalog', ['engine_variant'], unique=False)
|
||||
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'], referent_schema='identity')
|
||||
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'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('user_badges_badge_id_fkey'), 'user_badges', 'badges', ['badge_id'], ['id'])
|
||||
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.drop_constraint(None, 'service_profiles', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('service_profiles_parent_id_fkey'), 'service_profiles', 'service_profiles', ['parent_id'], ['id'])
|
||||
op.create_foreign_key(op.f('service_profiles_organization_id_fkey'), 'service_profiles', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_index(op.f('idx_service_profiles_location'), 'service_profiles', ['location'], unique=False, postgresql_using='gist')
|
||||
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.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('ratings_target_branch_id_fkey'), 'ratings', 'branches', ['target_branch_id'], ['id'])
|
||||
op.create_foreign_key(op.f('ratings_author_id_fkey'), 'ratings', 'users', ['author_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('ratings_target_organization_id_fkey'), 'ratings', 'organizations', ['target_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('ratings_target_user_id_fkey'), 'ratings', 'users', ['target_user_id'], ['id'], referent_schema='identity')
|
||||
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'], referent_schema='identity')
|
||||
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'], referent_schema='identity')
|
||||
op.alter_column('organizations', 'org_type',
|
||||
existing_type=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype', schema='data'),
|
||||
type_=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'organization_members', schema='data', type_='foreignkey')
|
||||
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_organization_id_fkey'), 'organization_members', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('organization_members_user_id_fkey'), 'organization_members', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('organization_members_person_id_fkey'), 'organization_members', 'persons', ['person_id'], ['id'], referent_schema='identity')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'organization_financials', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('organization_financials_organization_id_fkey'), 'organization_financials', '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, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], referent_schema='identity')
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_id'], ['id'])
|
||||
op.create_foreign_key(op.f('model_feature_maps_feature_id_fkey'), 'model_feature_maps', 'feature_definitions', ['feature_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_constraint(None, 'feature_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'])
|
||||
op.add_column('exchange_rates', sa.Column('base_currency', sa.VARCHAR(length=3), autoincrement=False, nullable=False))
|
||||
op.add_column('exchange_rates', sa.Column('target_currency', sa.VARCHAR(length=3), autoincrement=False, nullable=True))
|
||||
op.create_unique_constraint(op.f('exchange_rates_target_currency_key'), 'exchange_rates', ['target_currency'], postgresql_nulls_not_distinct=False)
|
||||
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.add_column('catalog_discovery', sa.Column('attempts', sa.INTEGER(), autoincrement=False, nullable=False))
|
||||
op.add_column('catalog_discovery', sa.Column('source', sa.VARCHAR(length=50), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('priority_score', sa.INTEGER(), server_default=sa.text('0'), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('created_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False))
|
||||
op.add_column('catalog_discovery', sa.Column('vehicle_class', sa.VARCHAR(length=50), autoincrement=False, nullable=True))
|
||||
op.add_column('catalog_discovery', sa.Column('last_attempt', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
|
||||
op.drop_constraint('_make_model_uc', 'catalog_discovery', schema='data', type_='unique')
|
||||
op.create_index(op.f('ix_data_catalog_discovery_vehicle_class'), 'catalog_discovery', ['vehicle_class'], unique=False)
|
||||
op.create_unique_constraint(op.f('_make_model_class_uc'), 'catalog_discovery', ['make', 'model', 'vehicle_class'], postgresql_nulls_not_distinct=False)
|
||||
op.drop_constraint(None, 'branches', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'branches', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('branches_organization_id_fkey'), 'branches', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('branches_address_id_fkey'), 'branches', 'addresses', ['address_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'], referent_schema='identity')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
existing_nullable=False)
|
||||
op.add_column('assets', sa.Column('is_corporate', sa.BOOLEAN(), server_default=sa.text('false'), autoincrement=False, nullable=False))
|
||||
op.add_column('assets', sa.Column('catalog_match_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('verification_method', sa.VARCHAR(length=20), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('verification_notes', sa.TEXT(), autoincrement=False, nullable=True))
|
||||
op.add_column('assets', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=False))
|
||||
op.add_column('assets', sa.Column('is_verified', sa.BOOLEAN(), autoincrement=False, nullable=False))
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
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_operator_person_id_fkey'), 'assets', 'persons', ['operator_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_operator_org_id_fkey'), 'assets', 'organizations', ['operator_org_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_owner_person_id_fkey'), 'assets', 'persons', ['owner_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_current_organization_id_fkey'), 'assets', 'organizations', ['current_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_catalog_id_fkey'), 'assets', 'vehicle_catalog', ['catalog_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_owner_org_id_fkey'), 'assets', 'organizations', ['owner_org_id'], ['id'])
|
||||
op.drop_index(op.f('ix_data_assets_year_of_manufacture'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_is_for_sale'), table_name='assets', schema='data')
|
||||
op.drop_index(op.f('ix_data_assets_current_mileage'), table_name='assets', schema='data')
|
||||
op.create_index(op.f('ix_data_assets_registration_uuid'), 'assets', ['registration_uuid'], unique=False)
|
||||
op.drop_column('assets', 'individual_equipment')
|
||||
op.drop_column('assets', 'currency')
|
||||
op.drop_column('assets', 'price')
|
||||
op.drop_column('assets', 'is_for_sale')
|
||||
op.drop_column('assets', 'condition_score')
|
||||
op.drop_column('assets', 'current_mileage')
|
||||
op.drop_column('assets', 'first_registration_date')
|
||||
op.add_column('asset_telemetry', sa.Column('mileage_unit', sa.VARCHAR(length=10), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_telemetry', sa.Column('dbs_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_telemetry', sa.Column('vqi_score', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=False))
|
||||
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.add_column('asset_reviews', sa.Column('criteria_scores', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), autoincrement=False, nullable=False))
|
||||
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'], referent_schema='identity')
|
||||
op.add_column('asset_financials', sa.Column('acquisition_date', postgresql.TIMESTAMP(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('residual_value_estimate', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_financials', sa.Column('acquisition_price', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
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.alter_column('asset_financials', 'financing_type',
|
||||
existing_type=sa.VARCHAR(),
|
||||
nullable=True)
|
||||
op.drop_column('asset_financials', 'accounting_details')
|
||||
op.drop_column('asset_financials', 'activation_date')
|
||||
op.drop_column('asset_financials', 'vat_rate')
|
||||
op.drop_column('asset_financials', 'purchase_price_gross')
|
||||
op.drop_column('asset_financials', 'purchase_price_net')
|
||||
op.add_column('asset_events', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_events', sa.Column('recorded_mileage', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_events', sa.Column('data', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'{}'::jsonb"), autoincrement=False, nullable=False))
|
||||
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.create_index(op.f('ix_data_asset_events_registration_uuid'), 'asset_events', ['registration_uuid'], unique=False)
|
||||
op.add_column('asset_costs', sa.Column('amount_eur', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('mileage_at_cost', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('vat_rate', sa.NUMERIC(precision=5, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('exchange_rate_used', sa.NUMERIC(precision=18, scale=6), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('currency_local', sa.VARCHAR(length=3), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('amount_local', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=False))
|
||||
op.add_column('asset_costs', sa.Column('net_amount_local', sa.NUMERIC(precision=18, scale=2), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('registration_uuid', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('driver_id', sa.INTEGER(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_costs', sa.Column('cost_type', sa.VARCHAR(length=50), autoincrement=False, nullable=False))
|
||||
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_organization_id_fkey'), 'asset_costs', 'organizations', ['organization_id'], ['id'])
|
||||
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'], referent_schema='identity')
|
||||
op.drop_index(op.f('ix_data_asset_costs_invoice_number'), table_name='asset_costs', schema='data')
|
||||
op.drop_index(op.f('ix_data_asset_costs_cost_category'), table_name='asset_costs', schema='data')
|
||||
op.create_index(op.f('ix_data_asset_costs_registration_uuid'), 'asset_costs', ['registration_uuid'], unique=False)
|
||||
op.drop_column('asset_costs', 'invoice_number')
|
||||
op.drop_column('asset_costs', 'currency')
|
||||
op.drop_column('asset_costs', 'amount_net')
|
||||
op.drop_column('asset_costs', 'cost_category')
|
||||
op.add_column('asset_assignments', sa.Column('branch_id', sa.UUID(), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_assignments', sa.Column('released_at', postgresql.TIMESTAMP(timezone=True), autoincrement=False, nullable=True))
|
||||
op.add_column('asset_assignments', sa.Column('assigned_at', postgresql.TIMESTAMP(timezone=True), server_default=sa.text('now()'), autoincrement=False, nullable=False))
|
||||
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_branch_id_fkey'), 'asset_assignments', 'branches', ['branch_id'], ['id'])
|
||||
op.create_foreign_key(op.f('asset_assignments_asset_id_fkey'), 'asset_assignments', 'assets', ['asset_id'], ['id'])
|
||||
op.create_foreign_key(op.f('asset_assignments_organization_id_fkey'), 'asset_assignments', 'organizations', ['organization_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'])
|
||||
op.drop_table('vehicle_ownership_history', schema='data')
|
||||
op.drop_index(op.f('ix_data_vehicle_logbook_trip_type'), table_name='vehicle_logbook', schema='data')
|
||||
op.drop_table('vehicle_logbook', schema='data')
|
||||
op.drop_table('asset_inspections', schema='data')
|
||||
|
||||
# --- JAVÍTÁS 5: Robot oszlopok törlése a downgrade végén ---
|
||||
op.drop_column('vehicle_model_definitions', 'attempts', schema='data')
|
||||
op.drop_column('vehicle_model_definitions', 'last_error', schema='data')
|
||||
op.drop_column('vehicle_model_definitions', 'updated_at', schema='data')
|
||||
# ### end Alembic commands ###
|
||||
28
backend/migrations/versions/92fe3b877b24_add_rdw_mega_columns.py
Executable file
28
backend/migrations/versions/92fe3b877b24_add_rdw_mega_columns.py
Executable file
@@ -0,0 +1,28 @@
|
||||
"""add_rdw_mega_columns
|
||||
|
||||
Revision ID: 92fe3b877b24
|
||||
Revises: 0473a3146058
|
||||
Create Date: 2026-03-01 03:07:11.918540
|
||||
|
||||
"""
|
||||
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 = '92fe3b877b24'
|
||||
down_revision: Union[str, Sequence[str], None] = '0473a3146058'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Upgrade schema."""
|
||||
pass
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
pass
|
||||
57
backend/migrations/versions/e5ad17906e7f_gamification_schema_fix_v4.py
Executable file
57
backend/migrations/versions/e5ad17906e7f_gamification_schema_fix_v4.py
Executable file
@@ -0,0 +1,57 @@
|
||||
"""gamification_schema_fix_v4
|
||||
|
||||
Revision ID: e5ad17906e7f
|
||||
Revises: 429ffa7dd5e1
|
||||
Create Date: 2026-02-27 06:17:18.106421
|
||||
|
||||
"""
|
||||
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 = 'e5ad17906e7f'
|
||||
down_revision: Union[str, Sequence[str], None] = '429ffa7dd5e1'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""ExpertiseTag és ServiceExpertise bővítése - Kézi kényszerítés."""
|
||||
|
||||
# 1. ExpertiseTag bővítése (data séma)
|
||||
op.add_column('expertise_tags', sa.Column('name_en', sa.String(length=100), nullable=True), schema='data')
|
||||
op.add_column('expertise_tags', sa.Column('is_official', sa.Boolean(), server_default=sa.text('true'), nullable=False), schema='data')
|
||||
op.add_column('expertise_tags', sa.Column('suggested_by_id', sa.BigInteger(), nullable=True), schema='data')
|
||||
op.add_column('expertise_tags', sa.Column('discovery_points', sa.Integer(), server_default=sa.text('10'), nullable=False), schema='data')
|
||||
op.add_column('expertise_tags', sa.Column('search_keywords', postgresql.JSONB(astext_type=sa.Text()), server_default=sa.text("'[]'::jsonb"), nullable=False), schema='data')
|
||||
op.add_column('expertise_tags', sa.Column('usage_count', sa.Integer(), server_default=sa.text('0'), nullable=False), schema='data')
|
||||
op.add_column('expertise_tags', sa.Column('icon', sa.String(length=50), nullable=True), schema='data')
|
||||
op.add_column('expertise_tags', sa.Column('description', sa.Text(), nullable=True), schema='data')
|
||||
op.add_column('expertise_tags', sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), schema='data')
|
||||
op.add_column('expertise_tags', sa.Column('updated_at', sa.DateTime(timezone=True), nullable=True), schema='data')
|
||||
|
||||
# Foreign Key az identity sémába
|
||||
op.create_foreign_key('fk_expertise_tags_suggested_by', 'expertise_tags', 'persons', ['suggested_by_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
|
||||
# 2. ServiceExpertise bővítése (ha a tábla már létezik, csak az új mezők kellenek)
|
||||
# Ha az 'id' mező hiányzik, ezt is hozzáadjuk (sorrend miatt fontos lehet)
|
||||
try:
|
||||
op.add_column('service_expertises', sa.Column('confidence_level', sa.Integer(), server_default=sa.text('0'), nullable=False), schema='data')
|
||||
op.add_column('service_expertises', sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False), schema='data')
|
||||
except Exception:
|
||||
pass # Ha már ott lennének, ne álljon meg a folyamat
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Visszaállítás."""
|
||||
op.drop_constraint('fk_expertise_tags_suggested_by', 'expertise_tags', schema='data', type_='foreignkey')
|
||||
columns_to_drop = [
|
||||
'name_en', 'is_official', 'suggested_by_id', 'discovery_points',
|
||||
'search_keywords', 'usage_count', 'icon', 'description',
|
||||
'created_at', 'updated_at'
|
||||
]
|
||||
for col in columns_to_drop:
|
||||
op.drop_column('expertise_tags', col, schema='data')
|
||||
pass
|
||||
@@ -0,0 +1,302 @@
|
||||
"""Add_missing_system_and_catalog_tables
|
||||
|
||||
Revision ID: f7505332b1c8
|
||||
Revises: 78f5b29d0714
|
||||
Create Date: 2026-02-24 00:44:31.612591
|
||||
|
||||
"""
|
||||
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 = 'f7505332b1c8'
|
||||
down_revision: Union[str, Sequence[str], None] = '78f5b29d0714'
|
||||
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.create_table('pending_actions',
|
||||
sa.Column('id', sa.Integer(), nullable=False),
|
||||
sa.Column('requester_id', sa.Integer(), nullable=False),
|
||||
sa.Column('approver_id', sa.Integer(), nullable=True),
|
||||
sa.Column('status', sa.Enum('pending', 'approved', 'rejected', 'expired', name='actionstatus', schema='system'), nullable=False),
|
||||
sa.Column('action_type', sa.String(length=50), nullable=False),
|
||||
sa.Column('payload', postgresql.JSONB(astext_type=sa.Text()), nullable=False),
|
||||
sa.Column('reason', sa.String(length=255), nullable=True),
|
||||
sa.Column('created_at', sa.DateTime(timezone=True), server_default=sa.text('now()'), nullable=False),
|
||||
sa.Column('expires_at', sa.DateTime(timezone=True), server_default=sa.text("now() + interval '24 hours'"), nullable=False),
|
||||
sa.Column('processed_at', sa.DateTime(timezone=True), nullable=True),
|
||||
sa.ForeignKeyConstraint(['approver_id'], ['identity.users.id'], ),
|
||||
sa.ForeignKeyConstraint(['requester_id'], ['identity.users.id'], ),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
schema='system'
|
||||
)
|
||||
op.create_index(op.f('ix_system_pending_actions_id'), 'pending_actions', ['id'], unique=False, schema='system')
|
||||
# op.drop_table('spatial_ref_sys', schema='public')
|
||||
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_organization_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_assignments_branch_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_assignments_asset_id_fkey'), 'asset_assignments', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'asset_assignments', 'branches', ['branch_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
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.drop_constraint(op.f('asset_costs_asset_id_fkey'), 'asset_costs', type_='foreignkey')
|
||||
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.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='identity')
|
||||
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.drop_constraint(op.f('asset_reviews_asset_id_fkey'), 'asset_reviews', type_='foreignkey')
|
||||
op.drop_constraint(op.f('asset_reviews_user_id_fkey'), 'asset_reviews', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'asset_reviews', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'asset_reviews', 'assets', ['asset_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.drop_constraint(op.f('assets_catalog_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_operator_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_owner_org_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_current_organization_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_owner_person_id_fkey'), 'assets', type_='foreignkey')
|
||||
op.drop_constraint(op.f('assets_operator_org_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', 'persons', ['owner_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'assets', 'persons', ['operator_person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'assets', 'organizations', ['owner_org_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.create_foreign_key(None, 'assets', 'organizations', ['operator_org_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
existing_nullable=False)
|
||||
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='identity')
|
||||
op.drop_constraint(op.f('branches_address_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.drop_constraint(op.f('branches_organization_id_fkey'), 'branches', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'branches', 'addresses', ['address_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'branches', 'organizations', ['organization_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('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_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('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.drop_constraint(op.f('model_feature_maps_feature_id_fkey'), 'model_feature_maps', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'feature_definitions', ['feature_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.drop_constraint(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
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_financials_organization_id_fkey'), 'organization_financials', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organization_financials', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(op.f('organization_members_person_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organization_members_user_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organization_members_organization_id_fkey'), 'organization_members', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organization_members', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'organization_members', 'organizations', ['organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'organization_members', 'persons', ['person_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
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'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(op.f('organizations_address_id_fkey'), 'organizations', type_='foreignkey')
|
||||
op.drop_constraint(op.f('organizations_owner_id_fkey'), 'organizations', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'organizations', 'users', ['owner_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'organizations', '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='identity')
|
||||
op.drop_constraint(op.f('ratings_target_branch_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_author_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_organization_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.drop_constraint(op.f('ratings_target_user_id_fkey'), 'ratings', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['author_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'ratings', 'users', ['target_user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.create_foreign_key(None, 'ratings', 'organizations', ['target_organization_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'ratings', 'branches', ['target_branch_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', 'expertise_tags', ['expertise_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'service_expertises', 'service_profiles', ['service_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_index(op.f('idx_service_profiles_location'), table_name='service_profiles', postgresql_using='gist')
|
||||
op.drop_constraint(op.f('service_profiles_parent_id_fkey'), 'service_profiles', type_='foreignkey')
|
||||
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.create_foreign_key(None, 'service_profiles', 'service_profiles', ['parent_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('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='identity')
|
||||
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='identity')
|
||||
op.drop_constraint(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.drop_constraint(op.f('vehicle_ownerships_vehicle_id_fkey'), 'vehicle_ownerships', type_='foreignkey')
|
||||
op.drop_constraint(op.f('vehicle_ownerships_user_id_fkey'), 'vehicle_ownerships', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'vehicle_ownerships', 'assets', ['vehicle_id'], ['id'], source_schema='data', referent_schema='data')
|
||||
op.create_foreign_key(None, 'vehicle_ownerships', 'users', ['user_id'], ['id'], source_schema='data', referent_schema='identity')
|
||||
op.drop_constraint(op.f('persons_address_id_fkey'), 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(None, 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity', referent_schema='data')
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_constraint(None, 'persons', schema='identity', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('persons_address_id_fkey'), 'persons', 'addresses', ['address_id'], ['id'], source_schema='identity')
|
||||
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_user_id_fkey'), 'vehicle_ownerships', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('vehicle_ownerships_vehicle_id_fkey'), 'vehicle_ownerships', 'assets', ['vehicle_id'], ['id'])
|
||||
op.drop_constraint(None, 'vehicle_model_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_model_definitions_vehicle_type_id_fkey'), 'vehicle_model_definitions', 'vehicle_types', ['vehicle_type_id'], ['id'])
|
||||
op.drop_constraint(None, 'vehicle_catalog', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('vehicle_catalog_master_definition_id_fkey'), 'vehicle_catalog', 'vehicle_model_definitions', ['master_definition_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'], referent_schema='identity')
|
||||
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'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('user_badges_badge_id_fkey'), 'user_badges', 'badges', ['badge_id'], ['id'])
|
||||
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.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.create_foreign_key(op.f('service_profiles_parent_id_fkey'), 'service_profiles', 'service_profiles', ['parent_id'], ['id'])
|
||||
op.create_index(op.f('idx_service_profiles_location'), 'service_profiles', ['location'], unique=False, postgresql_using='gist')
|
||||
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.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'ratings', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('ratings_target_user_id_fkey'), 'ratings', 'users', ['target_user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('ratings_target_organization_id_fkey'), 'ratings', 'organizations', ['target_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('ratings_author_id_fkey'), 'ratings', 'users', ['author_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('ratings_target_branch_id_fkey'), 'ratings', 'branches', ['target_branch_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'], referent_schema='identity')
|
||||
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_owner_id_fkey'), 'organizations', 'users', ['owner_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('organizations_address_id_fkey'), 'organizations', 'addresses', ['address_id'], ['id'])
|
||||
op.alter_column('organizations', 'org_type',
|
||||
existing_type=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype', schema='data'),
|
||||
type_=postgresql.ENUM('individual', 'service', 'service_provider', 'fleet_owner', 'club', 'business', name='orgtype'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'organization_members', schema='data', type_='foreignkey')
|
||||
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_organization_id_fkey'), 'organization_members', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('organization_members_user_id_fkey'), 'organization_members', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('organization_members_person_id_fkey'), 'organization_members', 'persons', ['person_id'], ['id'], referent_schema='identity')
|
||||
op.alter_column('organization_members', 'role',
|
||||
existing_type=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole', schema='data'),
|
||||
type_=postgresql.ENUM('OWNER', 'ADMIN', 'FLEET_MANAGER', 'DRIVER', 'MECHANIC', 'RECEPTIONIST', name='orguserrole'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'organization_financials', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('organization_financials_organization_id_fkey'), 'organization_financials', '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, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'org_sales_assignments', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('org_sales_assignments_organization_id_fkey'), 'org_sales_assignments', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('org_sales_assignments_agent_user_id_fkey'), 'org_sales_assignments', 'users', ['agent_user_id'], ['id'], referent_schema='identity')
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'model_feature_maps', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('model_feature_maps_feature_id_fkey'), 'model_feature_maps', 'feature_definitions', ['feature_id'], ['id'])
|
||||
op.create_foreign_key(op.f('model_feature_maps_model_definition_id_fkey'), 'model_feature_maps', 'vehicle_model_definitions', ['model_definition_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_constraint(None, 'feature_definitions', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('feature_definitions_vehicle_type_id_fkey'), 'feature_definitions', 'vehicle_types', ['vehicle_type_id'], ['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, 'branches', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'branches', schema='data', type_='foreignkey')
|
||||
op.create_foreign_key(op.f('branches_organization_id_fkey'), 'branches', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('branches_address_id_fkey'), 'branches', 'addresses', ['address_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'], referent_schema='identity')
|
||||
op.alter_column('audit_logs', 'severity',
|
||||
existing_type=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity', schema='data'),
|
||||
type_=postgresql.ENUM('info', 'warning', 'critical', 'emergency', name='log_severity'),
|
||||
existing_nullable=False)
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
op.drop_constraint(None, 'assets', schema='data', type_='foreignkey')
|
||||
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_operator_org_id_fkey'), 'assets', 'organizations', ['operator_org_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_owner_person_id_fkey'), 'assets', 'persons', ['owner_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_current_organization_id_fkey'), 'assets', 'organizations', ['current_organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_owner_org_id_fkey'), 'assets', 'organizations', ['owner_org_id'], ['id'])
|
||||
op.create_foreign_key(op.f('assets_operator_person_id_fkey'), 'assets', 'persons', ['operator_person_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('assets_catalog_id_fkey'), 'assets', 'vehicle_catalog', ['catalog_id'], ['id'])
|
||||
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_user_id_fkey'), 'asset_reviews', 'users', ['user_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('asset_reviews_asset_id_fkey'), 'asset_reviews', 'assets', ['asset_id'], ['id'])
|
||||
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.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_driver_id_fkey'), 'asset_costs', 'users', ['driver_id'], ['id'], referent_schema='identity')
|
||||
op.create_foreign_key(op.f('asset_costs_organization_id_fkey'), 'asset_costs', 'organizations', ['organization_id'], ['id'])
|
||||
op.create_foreign_key(op.f('asset_costs_asset_id_fkey'), 'asset_costs', 'assets', ['asset_id'], ['id'])
|
||||
op.drop_constraint(None, 'asset_assignments', schema='data', type_='foreignkey')
|
||||
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_asset_id_fkey'), 'asset_assignments', 'assets', ['asset_id'], ['id'])
|
||||
op.create_foreign_key(op.f('asset_assignments_branch_id_fkey'), 'asset_assignments', 'branches', ['branch_id'], ['id'])
|
||||
op.create_foreign_key(op.f('asset_assignments_organization_id_fkey'), 'asset_assignments', 'organizations', ['organization_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'])
|
||||
# op.create_table('spatial_ref_sys',
|
||||
#sa.Column('srid', sa.INTEGER(), autoincrement=False, nullable=False),
|
||||
#sa.Column('auth_name', sa.VARCHAR(length=256), autoincrement=False, nullable=True),
|
||||
#sa.Column('auth_srid', sa.INTEGER(), autoincrement=False, nullable=True),
|
||||
#sa.Column('srtext', sa.VARCHAR(length=2048), autoincrement=False, nullable=True),
|
||||
#sa.Column('proj4text', sa.VARCHAR(length=2048), autoincrement=False, nullable=True),
|
||||
#sa.CheckConstraint('srid > 0 AND srid <= 998999', name=op.f('spatial_ref_sys_srid_check')),
|
||||
#sa.PrimaryKeyConstraint('srid', name=op.f('spatial_ref_sys_pkey')),
|
||||
#schema='public'
|
||||
#)
|
||||
op.drop_index(op.f('ix_system_pending_actions_id'), table_name='pending_actions', schema='system')
|
||||
op.drop_table('pending_actions', schema='system')
|
||||
# ### end Alembic commands ###
|
||||
0
backend/migrations/versions/full_schema_backup.sql
Executable file
0
backend/migrations/versions/full_schema_backup.sql
Executable file
Reference in New Issue
Block a user