From 75bc5a7d7006912a14b8a282e56843b363b17dcc Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Wed, 14 May 2025 00:46:33 +0200 Subject: [PATCH] Stop trying to use the non-working DI of fastapi --- scanner/scanner/database.py | 1 + scanner/scanner/fsscan.py | 2 ++ scanner/scanner/requests.py | 4 ++-- scanner/scanner/routers/routes.py | 12 ++++++++---- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/scanner/scanner/database.py b/scanner/scanner/database.py index ba6566b6..0760775d 100644 --- a/scanner/scanner/database.py +++ b/scanner/scanner/database.py @@ -23,6 +23,7 @@ async def init_pool(): global pool pool = p yield + pool = None # type: ignore @asynccontextmanager diff --git a/scanner/scanner/fsscan.py b/scanner/scanner/fsscan.py index 3d52ae39..47634366 100644 --- a/scanner/scanner/fsscan.py +++ b/scanner/scanner/fsscan.py @@ -1,3 +1,4 @@ +from contextlib import asynccontextmanager import os import re from logging import getLogger @@ -16,6 +17,7 @@ from .requests import Request, RequestCreator logger = getLogger(__name__) +@asynccontextmanager async def create_scanner(): async with get_db() as db: yield FsScanner(KyooClient(), RequestCreator(db)) diff --git a/scanner/scanner/requests.py b/scanner/scanner/requests.py index 63b35320..e6c91a77 100644 --- a/scanner/scanner/requests.py +++ b/scanner/scanner/requests.py @@ -36,12 +36,12 @@ class RequestCreator: await self._database.executemany( """ insert into scanner.requests(kind, title, year, external_id, videos) - values (%(kind)s, %(title) s, %(year)s, %(external_id)s, %(videos)s) + values ($1, $2, $3, $4, $5) on conflict (kind, title, year) do update set videos = videos || excluded.videos """, - TypeAdapter(list[Request]).dump_python(requests), + [[x.kind, x.title, x.year, x.external_id, x.videos] for x in requests], ) _ = await self._database.execute("notify scanner.requests") diff --git a/scanner/scanner/routers/routes.py b/scanner/scanner/routers/routes.py index def3bc1c..90808df5 100644 --- a/scanner/scanner/routers/routes.py +++ b/scanner/scanner/routers/routes.py @@ -1,8 +1,8 @@ from typing import Annotated -from fastapi import APIRouter, BackgroundTasks, Depends, Security +from fastapi import APIRouter, BackgroundTasks, Security -from ..fsscan import FsScanner, create_scanner +from ..fsscan import create_scanner from ..jwt import validate_bearer router = APIRouter() @@ -15,10 +15,14 @@ router = APIRouter() ) async def trigger_scan( tasks: BackgroundTasks, - scanner: Annotated[FsScanner, Depends(create_scanner)], _: Annotated[None, Security(validate_bearer, scopes=["scanner.trigger"])], ): """ Trigger a full scan of the filesystem, trying to find new videos & deleting old ones. """ - tasks.add_task(scanner.scan) + + async def run(): + async with create_scanner() as scanner: + await scanner.scan() + + tasks.add_task(run)