From 38e0ba0484ff8353d9b9bd10029ced199d704c7d Mon Sep 17 00:00:00 2001 From: Lukas Date: Sat, 13 Dec 2025 10:00:40 +0100 Subject: [PATCH] feat: sync series from data files after setup/directory update - Call sync_series_from_data_files after initial setup completes - Call sync_series_from_data_files when anime directory is updated - Return synced_series count in directory update response --- src/server/api/auth.py | 23 +++++++++++++++++++++++ src/server/api/config.py | 25 ++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/src/server/api/auth.py b/src/server/api/auth.py index 7e3a135..7fa0df5 100644 --- a/src/server/api/auth.py +++ b/src/server/api/auth.py @@ -66,6 +66,29 @@ async def setup_auth(req: SetupRequest): # Save the config with the password hash and anime directory config_service.save_config(config, create_backup=False) + # Sync series from data files to database if anime directory is set + if anime_directory: + try: + from src.server.services.anime_service import ( + sync_series_from_data_files, + ) + import structlog + logger = structlog.get_logger(__name__) + sync_count = await sync_series_from_data_files( + anime_directory, logger + ) + logger.info( + "Setup complete: synced series from data files", + count=sync_count + ) + except Exception as e: + # Log but don't fail setup if sync fails + import structlog + structlog.get_logger(__name__).warning( + "Failed to sync series after setup", + error=str(e) + ) + return {"status": "ok"} except ValueError as e: diff --git a/src/server/api/config.py b/src/server/api/config.py index 740c193..214ce4e 100644 --- a/src/server/api/config.py +++ b/src/server/api/config.py @@ -239,8 +239,31 @@ async def update_directory( config_service.save_config(app_config) + # Sync series from data files to database + sync_count = 0 + try: + from src.server.services.anime_service import ( + sync_series_from_data_files, + ) + import structlog + logger = structlog.get_logger(__name__) + sync_count = await sync_series_from_data_files(directory, logger) + logger.info( + "Directory updated: synced series from data files", + directory=directory, + count=sync_count + ) + except Exception as e: + # Log but don't fail the directory update if sync fails + import structlog + structlog.get_logger(__name__).warning( + "Failed to sync series after directory update", + error=str(e) + ) + response: Dict[str, Any] = { - "message": "Anime directory updated successfully" + "message": "Anime directory updated successfully", + "synced_series": sync_count } return response