update with the ability to add IMDB to skipped
Local Docker Build (Dev) / build-dev (push) Successful in 35s

This commit is contained in:
2025-11-04 08:48:22 -05:00
parent d501c4364c
commit 2f0537ef1d
5 changed files with 262 additions and 7 deletions
+75
View File
@@ -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: