This commit is contained in:
Timothy Jaeryang Baek committed 2026-05-14 13:46:54 +09:00
1 parent 1004dad274
commit db2b3d7fd8
3 files changed
+46 -31

No files matched your search

@@ -20,31 +20,36 @@ depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None: def upgrade() -> None:
op.create_table( conn = op.get_bind()
'channel_file', inspector = sa.inspect(conn)
sa.Column('id', sa.Text(), primary_key=True), existing_tables = set(inspector.get_table_names())
sa.Column('user_id', sa.Text(), nullable=False),
sa.Column( if 'channel_file' not in existing_tables:
'channel_id', op.create_table(
sa.Text(), 'channel_file',
sa.ForeignKey('channel.id', ondelete='CASCADE'), sa.Column('id', sa.Text(), primary_key=True),
nullable=False, sa.Column('user_id', sa.Text(), nullable=False),
), sa.Column(
sa.Column( 'channel_id',
'file_id', sa.Text(),
sa.Text(), sa.ForeignKey('channel.id', ondelete='CASCADE'),
sa.ForeignKey('file.id', ondelete='CASCADE'), nullable=False,
nullable=False, ),
), sa.Column(
sa.Column('created_at', sa.BigInteger(), nullable=False), 'file_id',
sa.Column('updated_at', sa.BigInteger(), nullable=False), sa.Text(),
# indexes sa.ForeignKey('file.id', ondelete='CASCADE'),
sa.Index('ix_channel_file_channel_id', 'channel_id'), nullable=False,
sa.Index('ix_channel_file_file_id', 'file_id'), ),
sa.Index('ix_channel_file_user_id', 'user_id'), sa.Column('created_at', sa.BigInteger(), nullable=False),
# unique constraints sa.Column('updated_at', sa.BigInteger(), nullable=False),
sa.UniqueConstraint('channel_id', 'file_id', name='uq_channel_file_channel_file'), # prevent duplicate entries # indexes
) sa.Index('ix_channel_file_channel_id', 'channel_id'),
sa.Index('ix_channel_file_file_id', 'file_id'),
sa.Index('ix_channel_file_user_id', 'user_id'),
# unique constraints
sa.UniqueConstraint('channel_id', 'file_id', name='uq_channel_file_channel_file'), # prevent duplicate entries
)
def downgrade() -> None: def downgrade() -> None:
@@ -16,10 +16,15 @@ depends_on = None
def upgrade(): def upgrade():
op.add_column( conn = op.get_bind()
'file', inspector = sa.inspect(conn)
sa.Column('access_control', sa.JSON(), nullable=True), file_cols = {c['name'] for c in inspector.get_columns('file')}
)
if 'access_control' not in file_cols:
op.add_column(
'file',
sa.Column('access_control', sa.JSON(), nullable=True),
)
def downgrade(): def downgrade():
@@ -56,6 +56,13 @@ def _flush_batch(conn, table, batch):
def upgrade() -> None: def upgrade() -> None:
conn = op.get_bind()
inspector = sa.inspect(conn)
existing_tables = set(inspector.get_table_names())
if 'chat_message' in existing_tables:
return # Already created — skip everything
# Step 1: Create table # Step 1: Create table
op.create_table( op.create_table(
'chat_message', 'chat_message',
@@ -85,8 +92,6 @@ def upgrade() -> None:
op.create_index('chat_message_user_created_idx', 'chat_message', ['user_id', 'created_at']) op.create_index('chat_message_user_created_idx', 'chat_message', ['user_id', 'created_at'])
# Step 2: Backfill from existing chats # Step 2: Backfill from existing chats
conn = op.get_bind()
chat_table = sa.table( chat_table = sa.table(
'chat', 'chat',
sa.column('id', sa.Text()), sa.column('id', sa.Text()),