|
"""Update chat table |
|
|
|
Revision ID: 242a2047eae0 |
|
Revises: 6a39f3d8e55c |
|
Create Date: 2024-10-09 21:02:35.241684 |
|
|
|
""" |
|
|
|
from alembic import op |
|
import sqlalchemy as sa |
|
from sqlalchemy.sql import table, select, update |
|
|
|
import json |
|
|
|
revision = "242a2047eae0" |
|
down_revision = "6a39f3d8e55c" |
|
branch_labels = None |
|
depends_on = None |
|
|
|
|
|
def upgrade(): |
|
|
|
op.alter_column("chat", "chat", new_column_name="old_chat", existing_type=sa.Text) |
|
|
|
|
|
op.add_column("chat", sa.Column("chat", sa.JSON(), nullable=True)) |
|
|
|
|
|
chat_table = table( |
|
"chat", |
|
sa.Column("id", sa.String, primary_key=True), |
|
sa.Column("old_chat", sa.Text), |
|
sa.Column("chat", sa.JSON()), |
|
) |
|
|
|
|
|
connection = op.get_bind() |
|
results = connection.execute(select(chat_table.c.id, chat_table.c.old_chat)) |
|
for row in results: |
|
try: |
|
|
|
json_data = json.loads(row.old_chat) |
|
except json.JSONDecodeError: |
|
json_data = None |
|
|
|
connection.execute( |
|
sa.update(chat_table) |
|
.where(chat_table.c.id == row.id) |
|
.values(chat=json_data) |
|
) |
|
|
|
|
|
op.drop_column("chat", "old_chat") |
|
|
|
|
|
def downgrade(): |
|
|
|
op.add_column("chat", sa.Column("old_chat", sa.Text(), nullable=True)) |
|
|
|
|
|
chat_table = table( |
|
"chat", |
|
sa.Column("id", sa.String, primary_key=True), |
|
sa.Column("chat", sa.JSON()), |
|
sa.Column("old_chat", sa.Text()), |
|
) |
|
|
|
connection = op.get_bind() |
|
results = connection.execute(select(chat_table.c.id, chat_table.c.chat)) |
|
for row in results: |
|
text_data = json.dumps(row.chat) if row.chat is not None else None |
|
connection.execute( |
|
sa.update(chat_table) |
|
.where(chat_table.c.id == row.id) |
|
.values(old_chat=text_data) |
|
) |
|
|
|
|
|
op.drop_column("chat", "chat") |
|
|
|
|
|
op.alter_column("chat", "old_chat", new_column_name="chat", existing_type=sa.Text) |
|
|