Fix migration for PostgreSQL

This commit is contained in:
Oliver Traber 2025-03-13 23:36:21 +00:00
parent 50972c209e
commit 44e6f85da1
Signed by: Bluemedia
GPG key ID: C0674B105057136C

View file

@ -9,6 +9,7 @@ from typing import Sequence, Union
from alembic import op from alembic import op
import sqlalchemy as sa import sqlalchemy as sa
from sqlalchemy.dialects import postgresql
# revision identifiers, used by Alembic. # revision identifiers, used by Alembic.
@ -31,16 +32,23 @@ def upgrade() -> None:
) )
op.create_index(op.f('ix_sessions_refresh_token'), 'sessions', ['refresh_token'], unique=True) op.create_index(op.f('ix_sessions_refresh_token'), 'sessions', ['refresh_token'], unique=True)
op.create_index(op.f('ix_sessions_user_id'), 'sessions', ['user_id'], unique=False) op.create_index(op.f('ix_sessions_user_id'), 'sessions', ['user_id'], unique=False)
op.add_column('users', sa.Column('email', sa.String(), nullable=True)) op.add_column('users', sa.Column('email', sa.String(), nullable=True))
op.add_column('users', sa.Column('password', sa.String(), nullable=True)) op.add_column('users', sa.Column('password', sa.String(), nullable=True))
op.add_column('users', sa.Column('role', sa.Enum('MEMBER', 'ADMINISTRATOR', name='role'), nullable=True))
role_enum = postgresql.ENUM('MEMBER', 'ADMINISTRATOR', name='role')
role_enum.create(op.get_bind(), checkfirst=False)
op.add_column('users', sa.Column('role', type_=role_enum, nullable=True))
op.execute('UPDATE users SET email = id || \'@example.com\'') op.execute('UPDATE users SET email = id || \'@example.com\'')
op.execute('UPDATE users SET password = \'invalid\'') op.execute('UPDATE users SET password = \'invalid\'')
op.execute('UPDATE users SET role = \'MEMBER\'') op.execute('UPDATE users SET role = \'MEMBER\'')
with op.batch_alter_table('users', schema=None) as batch_op: with op.batch_alter_table('users', schema=None) as batch_op:
batch_op.alter_column('email', nullable=False) batch_op.alter_column('email', nullable=False)
batch_op.alter_column('password', nullable=False) batch_op.alter_column('password', nullable=False)
batch_op.alter_column('role', nullable=False) batch_op.alter_column('role', nullable=False)
op.drop_index('ix_users_friendly_name', table_name='users') op.drop_index('ix_users_friendly_name', table_name='users')
op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True) op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True)
# ### end Alembic commands ### # ### end Alembic commands ###