diff --git a/server/migrations/versions/9920ecfe2735_.py b/server/migrations/versions/9920ecfe2735_.py new file mode 100644 index 00000000..da718af0 --- /dev/null +++ b/server/migrations/versions/9920ecfe2735_.py @@ -0,0 +1,81 @@ +"""empty message + +Revision ID: 9920ecfe2735 +Revises: 99365b0cd87b +Create Date: 2023-11-02 18:55:17.019498 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa +import json +from sqlalchemy.sql import table, column +from sqlalchemy import select + + +# revision identifiers, used by Alembic. +revision: str = "9920ecfe2735" +down_revision: Union[str, None] = "99365b0cd87b" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + # bind the engine + bind = op.get_bind() + + # Reflect the table + transcript = table("transcript", column("id", sa.String), column("topics", sa.JSON)) + + # Select all rows from the transcript table + results = bind.execute(select([transcript.c.id, transcript.c.topics])) + + for row in results: + transcript_id = row["id"] + topics_json = row["topics"] + + # Process each topic in the topics JSON array + updated_topics = [] + for topic in topics_json: + if "transcript" in topic: + # Rename key 'transcript' to 'text' + topic["text"] = topic.pop("transcript") + updated_topics.append(topic) + + # Update the transcript table + bind.execute( + transcript.update() + .where(transcript.c.id == transcript_id) + .values(topics=updated_topics) + ) + + +def downgrade() -> None: + # bind the engine + bind = op.get_bind() + + # Reflect the table + transcript = table("transcript", column("id", sa.String), column("topics", sa.JSON)) + + # Select all rows from the transcript table + results = bind.execute(select([transcript.c.id, transcript.c.topics])) + + for row in results: + transcript_id = row["id"] + topics_json = row["topics"] + + # Process each topic in the topics JSON array + updated_topics = [] + for topic in topics_json: + if "text" in topic: + # Rename key 'text' back to 'transcript' + topic["transcript"] = topic.pop("text") + updated_topics.append(topic) + + # Update the transcript table + bind.execute( + transcript.update() + .where(transcript.c.id == transcript_id) + .values(topics=updated_topics) + )