diff --git a/surfsense_backend/alembic/versions/5_remove_title_char_limit.py b/surfsense_backend/alembic/versions/5_remove_title_char_limit.py index 2e4cd56d1..afdbaa803 100644 --- a/surfsense_backend/alembic/versions/5_remove_title_char_limit.py +++ b/surfsense_backend/alembic/versions/5_remove_title_char_limit.py @@ -18,59 +18,77 @@ branch_labels: str | Sequence[str] | None = None depends_on: str | Sequence[str] | None = None -def upgrade() -> None: - # Alter Chat table - op.alter_column( - "chats", - "title", - existing_type=sa.String(200), - type_=sa.String(), - existing_nullable=False, +def table_exists(table_name: str) -> bool: + """Check if a table exists in the database.""" + conn = op.get_bind() + result = conn.execute( + sa.text( + "SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_name = :table_name)" + ), + {"table_name": table_name}, ) + return result.scalar() + + +def upgrade() -> None: + # Alter Chat table (may not exist on fresh databases, removed in migration 49) + if table_exists("chats"): + op.alter_column( + "chats", + "title", + existing_type=sa.String(200), + type_=sa.String(), + existing_nullable=False, + ) # Alter Document table - op.alter_column( - "documents", - "title", - existing_type=sa.String(200), - type_=sa.String(), - existing_nullable=False, - ) + if table_exists("documents"): + op.alter_column( + "documents", + "title", + existing_type=sa.String(200), + type_=sa.String(), + existing_nullable=False, + ) # Alter Podcast table - op.alter_column( - "podcasts", - "title", - existing_type=sa.String(200), - type_=sa.String(), - existing_nullable=False, - ) + if table_exists("podcasts"): + op.alter_column( + "podcasts", + "title", + existing_type=sa.String(200), + type_=sa.String(), + existing_nullable=False, + ) def downgrade() -> None: # Revert Chat table - op.alter_column( - "chats", - "title", - existing_type=sa.String(), - type_=sa.String(200), - existing_nullable=False, - ) + if table_exists("chats"): + op.alter_column( + "chats", + "title", + existing_type=sa.String(), + type_=sa.String(200), + existing_nullable=False, + ) # Revert Document table - op.alter_column( - "documents", - "title", - existing_type=sa.String(), - type_=sa.String(200), - existing_nullable=False, - ) + if table_exists("documents"): + op.alter_column( + "documents", + "title", + existing_type=sa.String(), + type_=sa.String(200), + existing_nullable=False, + ) # Revert Podcast table - op.alter_column( - "podcasts", - "title", - existing_type=sa.String(), - type_=sa.String(200), - existing_nullable=False, - ) + if table_exists("podcasts"): + op.alter_column( + "podcasts", + "title", + existing_type=sa.String(), + type_=sa.String(200), + existing_nullable=False, + )