You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bazarr/migrations/versions/195144da1f7e_.py

107 lines
3.7 KiB

"""empty message
Revision ID: 195144da1f7e
Revises: 95cd4cf40d7a
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'
down_revision = '95cd4cf40d7a'
branch_labels = None
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):
columns = insp.get_columns(table_name)
return any(c["name"] == column_name for c in columns)
def upgrade():
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()]
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')
if 'table_custom_score_profiles' in tables:
op.drop_table('table_custom_score_profiles')
def downgrade():
pass