"""Add user authentication Revision ID: c7f72154c90b Revises: 097d427dfa07 Create Date: 2025-03-13 14:57:05.805469+00:00 """ from typing import Sequence, Union from alembic import op import sqlalchemy as sa # revision identifiers, used by Alembic. revision: str = 'c7f72154c90b' down_revision: Union[str, None] = '097d427dfa07' branch_labels: Union[str, Sequence[str], None] = None depends_on: Union[str, Sequence[str], None] = None def upgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### op.create_table('sessions', sa.Column('id', sa.Uuid(), nullable=False), sa.Column('name', sa.String(), nullable=True), sa.Column('refresh_token', sa.String(), nullable=False), sa.Column('last_used', sa.DateTime(timezone=True), nullable=True), sa.Column('user_id', sa.Uuid(), nullable=False), sa.ForeignKeyConstraint(['user_id'], ['users.id'], ), sa.PrimaryKeyConstraint('id') ) 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.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('role', sa.Enum('MEMBER', 'ADMINISTRATOR', name='role'), nullable=True)) op.execute('UPDATE users SET email = id || \'@example.com\'') op.execute('UPDATE users SET password = \'invalid\'') op.execute('UPDATE users SET role = \'MEMBER\'') with op.batch_alter_table('users', schema=None) as batch_op: batch_op.alter_column('email', nullable=False) batch_op.alter_column('password', nullable=False) batch_op.alter_column('role', nullable=False) op.drop_index('ix_users_friendly_name', table_name='users') op.create_index(op.f('ix_users_email'), 'users', ['email'], unique=True) # ### end Alembic commands ### def downgrade() -> None: # ### commands auto generated by Alembic - please adjust! ### op.drop_index(op.f('ix_users_email'), table_name='users') op.create_index('ix_users_friendly_name', 'users', ['friendly_name'], unique=1) op.drop_column('users', 'role') op.drop_column('users', 'password') op.drop_column('users', 'email') op.drop_index(op.f('ix_sessions_user_id'), table_name='sessions') op.drop_index(op.f('ix_sessions_refresh_token'), table_name='sessions') op.drop_table('sessions') # ### end Alembic commands ###