From 1cbb1b5d66137ab4953248b4aca36ce3a7054ffd Mon Sep 17 00:00:00 2001 From: "DESKTOP-RTLN3BA\\$punk" Date: Sun, 21 Dec 2025 23:31:11 -0800 Subject: [PATCH] refactor: remove chat-related fields and legacy podcast generation function --- .../50_remove_podcast_chat_columns.py | 48 +++++++++++++++++++ surfsense_backend/app/db.py | 4 -- surfsense_backend/app/schemas/podcasts.py | 2 - .../app/tasks/celery_tasks/podcast_tasks.py | 5 +- surfsense_backend/app/tasks/podcast_tasks.py | 11 +---- 5 files changed, 50 insertions(+), 20 deletions(-) create mode 100644 surfsense_backend/alembic/versions/50_remove_podcast_chat_columns.py diff --git a/surfsense_backend/alembic/versions/50_remove_podcast_chat_columns.py b/surfsense_backend/alembic/versions/50_remove_podcast_chat_columns.py new file mode 100644 index 000000000..c0c9e741b --- /dev/null +++ b/surfsense_backend/alembic/versions/50_remove_podcast_chat_columns.py @@ -0,0 +1,48 @@ +"""50_remove_podcast_chat_columns + +Revision ID: 50 +Revises: 49 +Create Date: 2025-12-21 + +Removes chat_id and chat_state_version columns from podcasts table. +These columns were used for the old chat system podcast linking which +has been replaced by the new-chat content-based podcast generation. +""" + +from collections.abc import Sequence + +import sqlalchemy as sa +from sqlalchemy import inspect + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "50" +down_revision: str | None = "49" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None + + +def upgrade() -> None: + """Upgrade schema - Remove chat_id and chat_state_version from podcasts.""" + conn = op.get_bind() + inspector = inspect(conn) + columns = [col["name"] for col in inspector.get_columns("podcasts")] + + if "chat_id" in columns: + op.drop_column("podcasts", "chat_id") + + if "chat_state_version" in columns: + op.drop_column("podcasts", "chat_state_version") + + +def downgrade() -> None: + """Downgrade schema - Re-add chat_id and chat_state_version to podcasts.""" + op.add_column( + "podcasts", + sa.Column("chat_id", sa.Integer(), nullable=True), + ) + op.add_column( + "podcasts", + sa.Column("chat_state_version", sa.String(100), nullable=True), + ) diff --git a/surfsense_backend/app/db.py b/surfsense_backend/app/db.py index b563cd594..815115640 100644 --- a/surfsense_backend/app/db.py +++ b/surfsense_backend/app/db.py @@ -436,10 +436,6 @@ class Podcast(BaseModel, TimestampMixin): ) search_space = relationship("SearchSpace", back_populates="podcasts") - # Optional: link to chat thread (null for content-based podcasts from new-chat) - chat_id = Column(Integer, nullable=True) - chat_state_version = Column(String(100), nullable=True) - class SearchSpace(BaseModel, TimestampMixin): __tablename__ = "searchspaces" diff --git a/surfsense_backend/app/schemas/podcasts.py b/surfsense_backend/app/schemas/podcasts.py index bcf50a710..72c915d88 100644 --- a/surfsense_backend/app/schemas/podcasts.py +++ b/surfsense_backend/app/schemas/podcasts.py @@ -13,8 +13,6 @@ class PodcastBase(BaseModel): podcast_transcript: list[dict[str, Any]] | None = None file_location: str | None = None search_space_id: int - chat_id: int | None = None - chat_state_version: str | None = None class PodcastCreate(PodcastBase): diff --git a/surfsense_backend/app/tasks/celery_tasks/podcast_tasks.py b/surfsense_backend/app/tasks/celery_tasks/podcast_tasks.py index 7f67ba599..40fe21f0d 100644 --- a/surfsense_backend/app/tasks/celery_tasks/podcast_tasks.py +++ b/surfsense_backend/app/tasks/celery_tasks/podcast_tasks.py @@ -72,8 +72,7 @@ def generate_content_podcast_task( """ Celery task to generate podcast from source content (for new-chat). - Unlike generate_chat_podcast which requires a chat_id, this task - generates a podcast directly from provided content. + This task generates a podcast directly from provided content. Args: source_content: The text content to convert into a podcast @@ -164,8 +163,6 @@ async def _generate_content_podcast( podcast_transcript=serializable_transcript, file_location=file_path, search_space_id=search_space_id, - chat_id=None, # No chat_id for new-chat podcasts - chat_state_version=None, ) session.add(podcast) await session.commit() diff --git a/surfsense_backend/app/tasks/podcast_tasks.py b/surfsense_backend/app/tasks/podcast_tasks.py index 21cd0d947..b3b01eb93 100644 --- a/surfsense_backend/app/tasks/podcast_tasks.py +++ b/surfsense_backend/app/tasks/podcast_tasks.py @@ -7,19 +7,10 @@ if called. Use generate_content_podcast_task in celery_tasks/podcast_tasks.py for new-chat podcast generation instead. """ -from sqlalchemy.ext.asyncio import AsyncSession - from app.db import Podcast # noqa: F401 - imported for backwards compatibility -async def generate_chat_podcast( - session: AsyncSession, - chat_id: int, - search_space_id: int, - user_id: int, - podcast_title: str | None = None, - user_prompt: str | None = None, -): +async def generate_chat_podcast(*args, **kwargs): """ Legacy function for generating podcasts from old chat system.