From 46fa6b3b75ee172f94e16c19a222deec2ae7e67f Mon Sep 17 00:00:00 2001 From: sbcrumb Date: Sat, 18 Oct 2025 14:21:57 -0400 Subject: [PATCH] db: fixes --- VERSION | 2 +- api/web_routes.py | 70 ++++++++++++++++++++++++++++++++--------------- 2 files changed, 49 insertions(+), 23 deletions(-) diff --git a/VERSION b/VERSION index 005119b..8e8299d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.4.1 +2.4.2 diff --git a/api/web_routes.py b/api/web_routes.py index dc9b773..01a256e 100644 --- a/api/web_routes.py +++ b/api/web_routes.py @@ -58,13 +58,22 @@ async def get_movies_list(dependencies: dict, total_count = db._get_first_value(cursor.fetchone()) # Get paginated results - query = f""" - SELECT imdb_id, path, released, dateadded, source, has_video_file, last_updated - FROM movies - WHERE {where_clause} - ORDER BY last_updated DESC - LIMIT ? OFFSET ? - """ + if db.db_type == "postgresql": + query = f""" + SELECT imdb_id, path, released, dateadded, source, has_video_file, last_updated + FROM movies + WHERE {where_clause} + ORDER BY last_updated DESC + LIMIT %s OFFSET %s + """ + else: + query = f""" + SELECT imdb_id, path, released, dateadded, source, has_video_file, last_updated + FROM movies + WHERE {where_clause} + ORDER BY last_updated DESC + LIMIT ? OFFSET ? + """ cursor.execute(query, params + [limit, skip]) movies = [] @@ -154,21 +163,38 @@ async def get_tv_series_list(dependencies: dict, # Get series with episode statistics having_part = f" HAVING {having_clause}" if having_clause else "" - query = f""" - SELECT - s.imdb_id, - s.path, - s.last_updated, - COUNT(e.episode) as total_episodes, - COUNT(CASE WHEN e.dateadded IS NOT NULL AND e.dateadded != '' THEN 1 END) as episodes_with_dates, - COUNT(CASE WHEN e.has_video_file = 1 THEN 1 END) as episodes_with_video - FROM series s - LEFT JOIN episodes e ON s.imdb_id = e.imdb_id - WHERE {where_clause} - GROUP BY s.imdb_id, s.path, s.last_updated{having_part} - ORDER BY s.last_updated DESC - LIMIT ? OFFSET ? - """ + if db.db_type == "postgresql": + query = f""" + SELECT + s.imdb_id, + s.path, + s.last_updated, + COUNT(e.episode) as total_episodes, + COUNT(CASE WHEN e.dateadded IS NOT NULL THEN 1 END) as episodes_with_dates, + COUNT(CASE WHEN e.has_video_file = TRUE THEN 1 END) as episodes_with_video + FROM series s + LEFT JOIN episodes e ON s.imdb_id = e.imdb_id + WHERE {where_clause} + GROUP BY s.imdb_id, s.path, s.last_updated{having_part} + ORDER BY s.last_updated DESC + LIMIT %s OFFSET %s + """ + else: + query = f""" + SELECT + s.imdb_id, + s.path, + s.last_updated, + COUNT(e.episode) as total_episodes, + COUNT(CASE WHEN e.dateadded IS NOT NULL AND e.dateadded != '' THEN 1 END) as episodes_with_dates, + COUNT(CASE WHEN e.has_video_file = 1 THEN 1 END) as episodes_with_video + FROM series s + LEFT JOIN episodes e ON s.imdb_id = e.imdb_id + WHERE {where_clause} + GROUP BY s.imdb_id, s.path, s.last_updated{having_part} + ORDER BY s.last_updated DESC + LIMIT ? OFFSET ? + """ cursor.execute(query, params + [limit, skip]) series = []