fixes: debugs for 422 and delete option
Local Docker Build (Dev) / build-dev (push) Successful in 4s

This commit is contained in:
2025-10-20 08:42:53 -04:00
parent 3c4e47b08e
commit 741a283df0
5 changed files with 298 additions and 1 deletions
+94
View File
@@ -1072,6 +1072,88 @@ async def debug_tmdb_lookup(imdb_id: str, dependencies: dict):
return {"error": str(e), "imdb_id": imdb_id, "traceback": str(e)}
# ---------------------------
# Database Cleanup Endpoints
# ---------------------------
async def delete_episode(imdb_id: str, season: int, episode: int, dependencies: dict):
"""Delete a specific episode from the database"""
db = dependencies["db"]
try:
deleted = db.delete_episode(imdb_id, season, episode)
if deleted:
return {
"success": True,
"message": f"Deleted episode S{season:02d}E{episode:02d} from series {imdb_id}",
"imdb_id": imdb_id,
"season": season,
"episode": episode
}
else:
return {
"success": False,
"message": f"Episode S{season:02d}E{episode:02d} not found in series {imdb_id}",
"imdb_id": imdb_id,
"season": season,
"episode": episode
}
except Exception as e:
return {
"success": False,
"error": str(e),
"imdb_id": imdb_id,
"season": season,
"episode": episode
}
async def delete_series_episodes(imdb_id: str, dependencies: dict):
"""Delete all episodes for a series from the database"""
db = dependencies["db"]
try:
deleted_count = db.delete_series_episodes(imdb_id)
return {
"success": True,
"message": f"Deleted {deleted_count} episodes from series {imdb_id}",
"imdb_id": imdb_id,
"deleted_count": deleted_count
}
except Exception as e:
return {
"success": False,
"error": str(e),
"imdb_id": imdb_id
}
async def cleanup_orphaned_episodes(dependencies: dict):
"""Find and delete episodes that don't have corresponding video files"""
db = dependencies["db"]
try:
deleted_episodes = db.delete_orphaned_episodes()
return {
"success": True,
"message": f"Cleaned up {len(deleted_episodes)} orphaned episodes",
"deleted_count": len(deleted_episodes),
"deleted_episodes": deleted_episodes
}
except Exception as e:
return {
"success": False,
"error": str(e),
"message": "Failed to cleanup orphaned episodes"
}
# ---------------------------
# Route Registration
# ---------------------------
@@ -1122,6 +1204,18 @@ def register_routes(app, dependencies: dict):
async def _debug_movie_history(imdb_id: str):
return await debug_movie_history(imdb_id, dependencies)
@app.delete("/database/episode/{imdb_id}/{season}/{episode}")
async def _delete_episode(imdb_id: str, season: int, episode: int):
return await delete_episode(imdb_id, season, episode, dependencies)
@app.delete("/database/series/{imdb_id}/episodes")
async def _delete_series_episodes(imdb_id: str):
return await delete_series_episodes(imdb_id, dependencies)
@app.post("/database/cleanup/orphaned-episodes")
async def _cleanup_orphaned_episodes():
return await cleanup_orphaned_episodes(dependencies)
@app.post("/manual/scan")
async def _manual_scan(background_tasks: BackgroundTasks, path: Optional[str] = None, scan_type: str = "both", scan_mode: str = "smart"):
return await manual_scan(background_tasks, path, scan_type, scan_mode, dependencies)
+13
View File
@@ -149,6 +149,19 @@ async def get_tv_series_list(dependencies: dict,
"""Get paginated list of TV series with episode counts"""
db = dependencies["db"]
# Debug logging for 422 troubleshooting
try:
print(f"DEBUG: Series list params - skip:{skip}, limit:{limit}, search:'{search}', imdb_search:'{imdb_search}', date_filter:'{date_filter}', source_filter:'{source_filter}'")
# Validate date_filter values
if date_filter and date_filter not in ['complete', 'incomplete', 'none']:
print(f"ERROR: Invalid date_filter value: '{date_filter}'")
raise HTTPException(status_code=422, detail=f"Invalid date_filter: must be 'complete', 'incomplete', or 'none', got '{date_filter}'")
except Exception as e:
print(f"ERROR: Parameter validation failed: {e}")
raise
with db.get_connection() as conn:
cursor = conn.cursor()