update with the ability to add IMDB to skipped
Local Docker Build (Dev) / build-dev (push) Successful in 35s
Local Docker Build (Dev) / build-dev (push) Successful in 35s
This commit is contained in:
@@ -437,6 +437,81 @@ class NFOGuardDatabase:
|
||||
""", (imdb_id, media_type, event_type, datetime.utcnow().isoformat(),
|
||||
json.dumps(details) if details else None))
|
||||
|
||||
def migrate_movie_imdb_id(self, old_imdb_id: str, new_imdb_id: str) -> bool:
|
||||
"""Migrate a movie from placeholder IMDb ID to real IMDb ID"""
|
||||
with self.get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Check if old record exists
|
||||
cursor.execute("SELECT * FROM movies WHERE imdb_id = %s", (old_imdb_id,))
|
||||
old_record = cursor.fetchone()
|
||||
if not old_record:
|
||||
return False
|
||||
|
||||
old_data = dict(old_record)
|
||||
|
||||
# Check if new IMDb ID already exists
|
||||
cursor.execute("SELECT * FROM movies WHERE imdb_id = %s", (new_imdb_id,))
|
||||
if cursor.fetchone():
|
||||
# New IMDb ID already exists, just delete the old one
|
||||
cursor.execute("DELETE FROM movies WHERE imdb_id = %s", (old_imdb_id,))
|
||||
return True
|
||||
|
||||
# Create new record with correct IMDb ID
|
||||
cursor.execute("""
|
||||
INSERT INTO movies (imdb_id, title, year, path, released, dateadded, source,
|
||||
has_video_file, last_updated, skipped, skip_reason)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
""", (new_imdb_id, old_data.get('title'), old_data.get('year'),
|
||||
old_data.get('path'), old_data.get('released'), old_data.get('dateadded'),
|
||||
old_data.get('source'), old_data.get('has_video_file'),
|
||||
datetime.utcnow(), False, None)) # Clear skipped status
|
||||
|
||||
# Delete old placeholder record
|
||||
cursor.execute("DELETE FROM movies WHERE imdb_id = %s", (old_imdb_id,))
|
||||
return True
|
||||
|
||||
def migrate_series_imdb_id(self, old_imdb_id: str, new_imdb_id: str) -> bool:
|
||||
"""Migrate a series and all its episodes from placeholder IMDb ID to real IMDb ID"""
|
||||
with self.get_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Check if old series exists
|
||||
cursor.execute("SELECT * FROM series WHERE imdb_id = %s", (old_imdb_id,))
|
||||
old_series = cursor.fetchone()
|
||||
if not old_series:
|
||||
return False
|
||||
|
||||
old_series_data = dict(old_series)
|
||||
|
||||
# Check if new series IMDb ID already exists
|
||||
cursor.execute("SELECT * FROM series WHERE imdb_id = %s", (new_imdb_id,))
|
||||
if cursor.fetchone():
|
||||
# New series already exists, migrate episodes and delete old series
|
||||
cursor.execute("""
|
||||
UPDATE episodes SET imdb_id = %s WHERE imdb_id = %s
|
||||
""", (new_imdb_id, old_imdb_id))
|
||||
cursor.execute("DELETE FROM series WHERE imdb_id = %s", (old_imdb_id,))
|
||||
return True
|
||||
|
||||
# Create new series record
|
||||
cursor.execute("""
|
||||
INSERT INTO series (imdb_id, path, last_updated, metadata)
|
||||
VALUES (%s, %s, %s, %s)
|
||||
""", (new_imdb_id, old_series_data.get('path'),
|
||||
datetime.utcnow(), old_series_data.get('metadata')))
|
||||
|
||||
# Migrate all episodes to new series IMDb ID and clear skipped status
|
||||
cursor.execute("""
|
||||
UPDATE episodes
|
||||
SET imdb_id = %s, skipped = FALSE, skip_reason = NULL
|
||||
WHERE imdb_id = %s
|
||||
""", (new_imdb_id, old_imdb_id))
|
||||
|
||||
# Delete old placeholder series
|
||||
cursor.execute("DELETE FROM series WHERE imdb_id = %s", (old_imdb_id,))
|
||||
return True
|
||||
|
||||
def get_stats(self) -> Dict[str, Any]:
|
||||
"""Get database statistics"""
|
||||
with self.get_connection() as conn:
|
||||
|
||||
Reference in New Issue
Block a user