summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authormorpheus65535 <[email protected]>2023-07-31 22:54:33 -0400
committermorpheus65535 <[email protected]>2023-07-31 22:54:33 -0400
commite0e5daea1de2ac8b6cbd0aa53ba284de70d5297c (patch)
tree6d45014cda34070fefc074f3928b04e9aaff8cc9
parent164dc95f237702a3972813c68f49a5c3ff34d2b8 (diff)
downloadbazarr-e0e5daea1de2ac8b6cbd0aa53ba284de70d5297c.tar.gz
bazarr-e0e5daea1de2ac8b6cbd0aa53ba284de70d5297c.zip
Fixed removal of rowid column while preventing the lost of history or blacklist data.v1.2.5-beta.8
-rw-r--r--migrations/versions/195144da1f7e_.py69
1 files changed, 65 insertions, 4 deletions
diff --git a/migrations/versions/195144da1f7e_.py b/migrations/versions/195144da1f7e_.py
index 0dbcde1bd..f4151b9ff 100644
--- a/migrations/versions/195144da1f7e_.py
+++ b/migrations/versions/195144da1f7e_.py
@@ -8,6 +8,8 @@ Create Date: 2023-07-27 13:14:08.825037
from alembic import op
import sqlalchemy as sa
+from app.database import TableHistory, TableHistoryMovie, TableBlacklist, TableBlacklistMovie, select
+
# revision identifiers, used by Alembic.
revision = '195144da1f7e'
@@ -18,6 +20,7 @@ depends_on = None
bind = op.get_context().bind
insp = sa.inspect(bind)
tables = insp.get_table_names()
+sqlite = bind.engine.name == 'sqlite'
def column_exists(table_name, column_name):
@@ -26,13 +29,71 @@ def column_exists(table_name, column_name):
def upgrade():
- with op.batch_alter_table('table_episodes') as batch_op:
- if column_exists('table_episodes', 'rowid'):
+ if column_exists('table_episodes', 'rowid'):
+ if sqlite:
+ table_history_data = [{
+ "id": x.id,
+ "action": x.action,
+ "description": x.description,
+ "language": x.language,
+ "provider": x.provider,
+ "score": x.score,
+ "sonarrEpisodeId": x.sonarrEpisodeId,
+ "sonarrSeriesId": x.sonarrSeriesId,
+ "subs_id": x.subs_id,
+ "subtitles_path": x.subtitles_path,
+ "timestamp": x.timestamp,
+ "video_path": x.video_path,
+ "matched": x.matched,
+ "not_matched": x.not_matched,
+ } for x in bind.execute(select(TableHistory)).all()]
+
+ table_blacklist_data = [{
+ "id": x.id,
+ "language": x.language,
+ "provider": x.provider,
+ "sonarr_episode_id": x.sonarr_episode_id,
+ "sonarr_series_id": x.sonarr_series_id,
+ "subs_id": x.subs_id,
+ "timestamp": x.timestamp,
+ } for x in bind.execute(select(TableBlacklist)).all()]
+ with op.batch_alter_table('table_episodes') as batch_op:
batch_op.drop_column(column_name='rowid')
+ if sqlite:
+ op.bulk_insert(TableHistory.__table__, rows=table_history_data)
+ op.bulk_insert(TableBlacklist.__table__, rows=table_blacklist_data)
+
+ if column_exists('table_movies', 'rowid'):
+ if sqlite:
+ table_history_movie_data = [{
+ "id": x.id,
+ "action": x.action,
+ "description": x.description,
+ "language": x.language,
+ "provider": x.provider,
+ "radarrId": x.radarrId,
+ "score": x.score,
+ "subs_id": x.subs_id,
+ "subtitles_path": x.subtitles_path,
+ "timestamp": x.timestamp,
+ "video_path": x.video_path,
+ "matched": x.matched,
+ "not_matched": x.not_matched,
+ } for x in bind.execute(select(TableHistoryMovie)).all()]
- with op.batch_alter_table('table_movies') as batch_op:
- if column_exists('table_movies', 'rowid'):
+ table_blacklist_movie_data = [{
+ "id": x.id,
+ "language": x.language,
+ "provider": x.provider,
+ "radarr_id": x.radarr_id,
+ "subs_id": x.subs_id,
+ "timestamp": x.timestamp,
+ } for x in bind.execute(select(TableBlacklistMovie)).all()]
+ with op.batch_alter_table('table_movies') as batch_op:
batch_op.drop_column(column_name='rowid')
+ if sqlite:
+ op.bulk_insert(TableHistoryMovie.__table__, rows=table_history_movie_data)
+ op.bulk_insert(TableBlacklistMovie.__table__, rows=table_blacklist_movie_data)
if 'table_custom_score_profile_conditions' in tables:
op.drop_table('table_custom_score_profile_conditions')