"""Add question ownership and sharing Revision ID: 9a119272b516 Revises: d2113a61fa42 Create Date: 2026-04-03 09:32:53.890510 """ from alembic import op import sqlalchemy as sa from sqlalchemy.dialects import sqlite # revision identifiers, used by Alembic. revision = '9a119272b516' down_revision = 'd2113a61fa42' branch_labels = None depends_on = None def upgrade(): # ### commands auto generated by Alembic - please adjust! ### op.create_table('question_shares', sa.Column('id', sa.Integer(), nullable=False), sa.Column('question_id', sa.Integer(), nullable=False), sa.Column('shared_with_user_id', sa.Integer(), nullable=False), sa.Column('shared_by_user_id', sa.Integer(), nullable=False), sa.Column('created_at', sa.DateTime(), nullable=True), sa.ForeignKeyConstraint(['question_id'], ['questions.id'], ), sa.ForeignKeyConstraint(['shared_by_user_id'], ['users.id'], ), sa.ForeignKeyConstraint(['shared_with_user_id'], ['users.id'], ), sa.PrimaryKeyConstraint('id'), sa.UniqueConstraint('question_id', 'shared_with_user_id', name='unique_question_share') ) # Split into separate batch operations to avoid SQLite circular dependency # with the existing current_turn_team_id foreign key with op.batch_alter_table('games', schema=None) as batch_op: batch_op.add_column(sa.Column('completed_at', sa.DateTime(), nullable=True)) batch_op.add_column(sa.Column('winners', sa.JSON(), nullable=True)) with op.batch_alter_table('games', schema=None) as batch_op: batch_op.drop_column('turn_order') batch_op.drop_column('is_steal_mode') with op.batch_alter_table('questions', schema=None) as batch_op: batch_op.add_column(sa.Column('created_by', sa.Integer(), nullable=True)) batch_op.create_foreign_key('fk_questions_created_by', 'users', ['created_by'], ['id']) # ### end Alembic commands ### def downgrade(): # ### commands auto generated by Alembic - please adjust! ### with op.batch_alter_table('questions', schema=None) as batch_op: batch_op.drop_constraint('fk_questions_created_by', type_='foreignkey') batch_op.drop_column('created_by') with op.batch_alter_table('games', schema=None) as batch_op: batch_op.add_column(sa.Column('is_steal_mode', sa.BOOLEAN(), nullable=True)) batch_op.add_column(sa.Column('turn_order', sqlite.JSON(), nullable=True)) batch_op.drop_column('winners') batch_op.drop_column('completed_at') op.drop_table('question_shares') # ### end Alembic commands ###