fixes: debugs for 422 and delete option
Local Docker Build (Dev) / build-dev (push) Successful in 4s
Local Docker Build (Dev) / build-dev (push) Successful in 4s
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user