Refactor trigger_rescan to use anime_service
- Use anime_service.rescan() instead of direct trigger_rescan import - Change Optional[Any] to Optional[Dict[str, Any]] in ConfigUpdate for better type hints - Add ValidationError handling in ConfigUpdate.apply_to - Update tests to match new implementation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -11,6 +11,7 @@ from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from src.server.models.config import SchedulerConfig
|
||||
from src.server.services.config_service import ConfigServiceError, get_config_service
|
||||
from src.server.services.scheduler.scheduler_service import get_scheduler_service
|
||||
from src.server.services.anime_service import get_anime_service
|
||||
from src.server.utils.dependencies import require_auth
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -141,9 +142,10 @@ async def trigger_rescan(auth: dict = Depends(require_auth)) -> Dict[str, str]:
|
||||
"Manual rescan triggered by %s", auth.get("username", "unknown")
|
||||
)
|
||||
|
||||
from src.server.api.anime import trigger_rescan as do_rescan # noqa: PLC0415
|
||||
anime_service = get_anime_service(series_app)
|
||||
await anime_service.rescan()
|
||||
|
||||
return await do_rescan()
|
||||
return {"message": "Rescan started successfully"}
|
||||
|
||||
except HTTPException:
|
||||
raise
|
||||
|
||||
@@ -246,12 +246,12 @@ class AppConfig(BaseModel):
|
||||
class ConfigUpdate(BaseModel):
|
||||
name: Optional[str] = None
|
||||
data_dir: Optional[str] = None
|
||||
scheduler: Optional[Any] = None
|
||||
logging: Optional[Any] = None
|
||||
backup: Optional[Any] = None
|
||||
nfo: Optional[Any] = None
|
||||
scheduler: Optional[Dict[str, Any]] = None
|
||||
logging: Optional[Dict[str, Any]] = None
|
||||
backup: Optional[Dict[str, Any]] = None
|
||||
nfo: Optional[Dict[str, Any]] = None
|
||||
scan_key_overrides: Optional[Dict[str, str]] = None
|
||||
other: Optional[Any] = None
|
||||
other: Optional[Dict[str, Any]] = None
|
||||
|
||||
def apply_to(self, current: AppConfig) -> AppConfig:
|
||||
"""Return a new AppConfig with updates applied to the current config.
|
||||
@@ -271,7 +271,10 @@ class ConfigUpdate(BaseModel):
|
||||
except json.JSONDecodeError:
|
||||
scheduler_data = ast.literal_eval(scheduler_data)
|
||||
if isinstance(scheduler_data, dict):
|
||||
scheduler_data = SchedulerConfig(**scheduler_data)
|
||||
try:
|
||||
scheduler_data = SchedulerConfig(**scheduler_data)
|
||||
except ValidationError:
|
||||
raise
|
||||
data["scheduler"] = scheduler_data.model_dump()
|
||||
if self.logging is not None:
|
||||
logging_data = self.logging
|
||||
|
||||
Reference in New Issue
Block a user