diff --git a/src/server/api/anime.py b/src/server/api/anime.py index 1ae6e62..38c5c01 100644 --- a/src/server/api/anime.py +++ b/src/server/api/anime.py @@ -868,6 +868,25 @@ async def add_series( if hasattr(series_app, "list") and hasattr(series_app.list, "keyDict"): if key in series_app.list.keyDict: series_app.list.keyDict[key].episodeDict = missing_episodes + + # Save missing episodes to database + if db is not None and missing_episodes: + from src.server.database.service import EpisodeService + + for season, episode_numbers in missing_episodes.items(): + for episode_number in episode_numbers: + await EpisodeService.create( + db=db, + series_id=db_id, + season=season, + episode_number=episode_number, + ) + + logger.info( + "Saved %d missing episodes to database for %s", + sum(len(eps) for eps in missing_episodes.values()), + key + ) else: # Scanner not available - this shouldn't happen in normal operation logger.warning( diff --git a/src/server/fastapi_app.py b/src/server/fastapi_app.py index 808ce48..bc9aed5 100644 --- a/src/server/fastapi_app.py +++ b/src/server/fastapi_app.py @@ -145,6 +145,12 @@ async def lifespan(_application: FastAPI): "Data file sync complete. Added %d series.", sync_count ) + # Load series from database into SeriesApp's in-memory cache + from src.server.utils.dependencies import get_anime_service + anime_service = get_anime_service() + await anime_service._load_series_from_db() + logger.info("Series loaded from database into memory") + # Now initialize download service (will use data from database) from src.server.utils.dependencies import get_download_service download_service = get_download_service()