Skip to content

Commit 1952fb3

Browse files
committed
fixed problematic migration file
1 parent 88b2b5d commit 1952fb3

File tree

1 file changed

+75
-37
lines changed

1 file changed

+75
-37
lines changed

backend/python/migrations/versions/ba76119b3e4c_update_user_system.py

Lines changed: 75 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,47 +19,85 @@
1919

2020
def upgrade() -> None:
2121
# ### commands auto generated by Alembic - please adjust! ###
22-
op.create_table('system_settings',
23-
sa.Column('created_at', sa.DateTime(), nullable=True),
24-
sa.Column('updated_at', sa.DateTime(), nullable=True),
25-
sa.Column('default_cap', sa.Integer(), nullable=True),
26-
sa.Column('route_start_time', sa.Time(), nullable=True),
27-
sa.Column('warehouse_location', sqlmodel.sql.sqltypes.AutoString(), nullable=True),
28-
sa.Column('warehouse_longitude', sa.Float(), nullable=True),
29-
sa.Column('warehouse_latitude', sa.Float(), nullable=True),
30-
sa.Column('system_settings_id', sa.Uuid(), nullable=False),
31-
sa.PrimaryKeyConstraint('system_settings_id')
32-
)
33-
op.create_table('users',
34-
sa.Column('created_at', sa.DateTime(), nullable=True),
35-
sa.Column('updated_at', sa.DateTime(), nullable=True),
36-
sa.Column('name', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False),
37-
sa.Column('email', sqlmodel.sql.sqltypes.AutoString(length=254), nullable=False),
38-
sa.Column('user_id', sa.Uuid(), nullable=False),
39-
sa.Column('auth_id', sqlmodel.sql.sqltypes.AutoString(), nullable=False),
40-
sa.Column('role', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False),
41-
sa.PrimaryKeyConstraint('user_id')
42-
)
43-
op.create_index(op.f('ix_users_auth_id'), 'users', ['auth_id'], unique=True)
44-
op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True)
45-
op.create_index(op.f('ix_users_user_id'), 'users', ['user_id'], unique=False)
46-
op.add_column('admin_info', sa.Column('receive_email_notifications', sa.Boolean(), nullable=False))
47-
op.add_column('admin_info', sa.Column('user_id', sa.Uuid(), nullable=False))
22+
# Check if table exists before creating
23+
from sqlalchemy import inspect
24+
bind = op.get_bind()
25+
inspector = inspect(bind)
26+
existing_tables = inspector.get_table_names()
27+
28+
if 'system_settings' not in existing_tables:
29+
op.create_table('system_settings',
30+
sa.Column('created_at', sa.DateTime(), nullable=True),
31+
sa.Column('updated_at', sa.DateTime(), nullable=True),
32+
sa.Column('default_cap', sa.Integer(), nullable=True),
33+
sa.Column('route_start_time', sa.Time(), nullable=True),
34+
sa.Column('warehouse_location', sqlmodel.sql.sqltypes.AutoString(), nullable=True),
35+
sa.Column('warehouse_longitude', sa.Float(), nullable=True),
36+
sa.Column('warehouse_latitude', sa.Float(), nullable=True),
37+
sa.Column('system_settings_id', sa.Uuid(), nullable=False),
38+
sa.PrimaryKeyConstraint('system_settings_id')
39+
)
40+
41+
if 'users' not in existing_tables:
42+
op.create_table('users',
43+
sa.Column('created_at', sa.DateTime(), nullable=True),
44+
sa.Column('updated_at', sa.DateTime(), nullable=True),
45+
sa.Column('name', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False),
46+
sa.Column('email', sqlmodel.sql.sqltypes.AutoString(length=254), nullable=False),
47+
sa.Column('user_id', sa.Uuid(), nullable=False),
48+
sa.Column('auth_id', sqlmodel.sql.sqltypes.AutoString(), nullable=False),
49+
sa.Column('role', sqlmodel.sql.sqltypes.AutoString(length=255), nullable=False),
50+
sa.PrimaryKeyConstraint('user_id')
51+
)
52+
op.create_index(op.f('ix_users_auth_id'), 'users', ['auth_id'], unique=True)
53+
op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True)
54+
op.create_index(op.f('ix_users_user_id'), 'users', ['user_id'], unique=False)
55+
56+
# Check existing columns in admin_info
57+
admin_info_columns = [col['name'] for col in inspector.get_columns('admin_info')]
58+
59+
if 'receive_email_notifications' not in admin_info_columns:
60+
op.add_column('admin_info', sa.Column('receive_email_notifications', sa.Boolean(), nullable=False))
61+
if 'user_id' not in admin_info_columns:
62+
op.add_column('admin_info', sa.Column('user_id', sa.Uuid(), nullable=False))
4863
op.create_unique_constraint(None, 'admin_info', ['user_id'])
4964
op.create_foreign_key(None, 'admin_info', 'users', ['user_id'], ['user_id'])
50-
op.drop_column('admin_info', 'admin_name')
51-
op.drop_column('admin_info', 'default_cap')
52-
op.drop_column('admin_info', 'route_start_time')
53-
op.drop_column('admin_info', 'warehouse_location')
54-
op.drop_column('admin_info', 'admin_email')
55-
op.add_column('drivers', sa.Column('user_id', sa.Uuid(), nullable=False))
56-
op.drop_index(op.f('ix_drivers_auth_id'), table_name='drivers')
57-
op.drop_index(op.f('ix_drivers_email'), table_name='drivers')
65+
66+
# Drop columns only if they exist
67+
if 'admin_name' in admin_info_columns:
68+
op.drop_column('admin_info', 'admin_name')
69+
if 'default_cap' in admin_info_columns:
70+
op.drop_column('admin_info', 'default_cap')
71+
if 'route_start_time' in admin_info_columns:
72+
op.drop_column('admin_info', 'route_start_time')
73+
if 'warehouse_location' in admin_info_columns:
74+
op.drop_column('admin_info', 'warehouse_location')
75+
if 'admin_email' in admin_info_columns:
76+
op.drop_column('admin_info', 'admin_email')
77+
78+
# Check existing columns in drivers
79+
drivers_columns = [col['name'] for col in inspector.get_columns('drivers')]
80+
81+
if 'user_id' not in drivers_columns:
82+
op.add_column('drivers', sa.Column('user_id', sa.Uuid(), nullable=False))
83+
84+
# Drop indexes only if they exist
85+
existing_indexes = [idx['name'] for idx in inspector.get_indexes('drivers')]
86+
if 'ix_drivers_auth_id' in existing_indexes:
87+
op.drop_index(op.f('ix_drivers_auth_id'), table_name='drivers')
88+
if 'ix_drivers_email' in existing_indexes:
89+
op.drop_index(op.f('ix_drivers_email'), table_name='drivers')
90+
5891
op.create_unique_constraint(None, 'drivers', ['user_id'])
5992
op.create_foreign_key(None, 'drivers', 'users', ['user_id'], ['user_id'])
60-
op.drop_column('drivers', 'name')
61-
op.drop_column('drivers', 'email')
62-
op.drop_column('drivers', 'auth_id')
93+
94+
# Drop columns only if they exist
95+
if 'name' in drivers_columns:
96+
op.drop_column('drivers', 'name')
97+
if 'email' in drivers_columns:
98+
op.drop_column('drivers', 'email')
99+
if 'auth_id' in drivers_columns:
100+
op.drop_column('drivers', 'auth_id')
63101
# ### end Alembic commands ###
64102

65103

0 commit comments

Comments
 (0)