diff --git a/backend/endpoints/sockets/scan.py b/backend/endpoints/sockets/scan.py index 919434f6c..ae5a23cb7 100644 --- a/backend/endpoints/sockets/scan.py +++ b/backend/endpoints/sockets/scan.py @@ -63,7 +63,7 @@ async def scan_platforms( log.info(f"Found {len(platform_list)} platforms in file system ") for platform_slug in platform_list: - platform = db_platform_handler.get_platform_by_slug(platform_slug) + platform = db_platform_handler.get_platform_by_fs_slug(platform_slug) scanned_platform = scan_platform(platform_slug, fs_platforms) if platform: @@ -135,7 +135,7 @@ async def scan_handler(_sid: str, options: dict): log.info(emoji.emojize(":magnifying_glass_tilted_right: Scanning ")) - platform_slugs = options.get("platforms", []) + platform_ids = options.get("platforms", []) complete_rescan = options.get("completeRescan", False) rescan_unidentified = options.get("rescanUnidentified", False) selected_roms = options.get("roms", []) @@ -143,7 +143,7 @@ async def scan_handler(_sid: str, options: dict): # Run in worker if redis is available return high_prio_queue.enqueue( scan_platforms, - platform_slugs, + platform_ids, complete_rescan, rescan_unidentified, selected_roms, diff --git a/backend/handler/db_handler/db_platforms_handler.py b/backend/handler/db_handler/db_platforms_handler.py index f60d1f117..1222132e3 100644 --- a/backend/handler/db_handler/db_platforms_handler.py +++ b/backend/handler/db_handler/db_platforms_handler.py @@ -24,7 +24,7 @@ class DBPlatformsHandler(DBHandler): ) @begin_session - def get_platform_by_slug(self, fs_slug: str, session: Session = None): + def get_platform_by_fs_slug(self, fs_slug: str, session: Session = None): return session.scalars( select(Platform).filter_by(fs_slug=fs_slug).limit(1) ).first() diff --git a/backend/handler/scan_handler.py b/backend/handler/scan_handler.py index 51e9828da..aa7d2e838 100644 --- a/backend/handler/scan_handler.py +++ b/backend/handler/scan_handler.py @@ -21,7 +21,7 @@ SWAPPED_PLATFORM_BINDINGS = dict((v, k) for k, v in cm.config.PLATFORMS_BINDING. def _get_main_platform_igdb_id(platform: Platform): if platform.fs_slug in cm.config.PLATFORMS_VERSIONS.keys(): main_platform_slug = cm.config.PLATFORMS_VERSIONS[platform.fs_slug] - main_platform = db_platform_handler.get_platform_by_slug(main_platform_slug) + main_platform = db_platform_handler.get_platform_by_fs_slug(main_platform_slug) if main_platform: main_platform_igdb_id = main_platform.igdb_id else: diff --git a/backend/handler/tests/test_db_handler.py b/backend/handler/tests/test_db_handler.py index f459f9bf7..712847d8d 100644 --- a/backend/handler/tests/test_db_handler.py +++ b/backend/handler/tests/test_db_handler.py @@ -17,7 +17,7 @@ def test_platforms(): platforms = db_platform_handler.get_platforms() assert len(platforms) == 1 - platform = db_platform_handler.get_platform_by_slug(platform.slug) + platform = db_platform_handler.get_platform_by_fs_slug(platform.fs_slug) assert platform.name == "test_platform" db_platform_handler.purge_platforms([]) diff --git a/backend/watcher.py b/backend/watcher.py index 6ef42a7d3..a0ce1d605 100644 --- a/backend/watcher.py +++ b/backend/watcher.py @@ -7,6 +7,7 @@ from config import ( RESCAN_ON_FILESYSTEM_CHANGE_DELAY, ) from endpoints.sockets.scan import scan_platforms +from handler import db_platform_handler from logger.logger import log from tasks.tasks import tasks_scheduler from config.config_manager import config_manager as cm @@ -41,7 +42,8 @@ class EventHandler(FileSystemEventHandler): return event_src = event.src_path.split(path)[-1] - platform_slug = event_src.split("/")[1] + fs_slug = event_src.split("/")[1] + db_platform = db_platform_handler.get_platform_by_fs_slug(fs_slug) log.info(f"Filesystem event: {event.event_type} {event_src}") @@ -52,8 +54,8 @@ class EventHandler(FileSystemEventHandler): log.info("Full rescan already scheduled") return - if platform_slug in job.args[0]: - log.info(f"Scan already scheduled for {platform_slug}") + if db_platform and db_platform.id in job.args[0]: + log.info(f"Scan already scheduled for {fs_slug}") return time_delta = timedelta(minutes=RESCAN_ON_FILESYSTEM_CHANGE_DELAY) @@ -63,11 +65,11 @@ class EventHandler(FileSystemEventHandler): if event.is_directory and event_src.count("/") == 1: log.info(f"Platform directory changed, {rescan_in_msg}") tasks_scheduler.enqueue_in(time_delta, scan_platforms, []) - else: + elif db_platform: # Otherwise trigger a rescan for the specific platform - log.info(f"Change detected in {platform_slug} folder, {rescan_in_msg}") + log.info(f"Change detected in {fs_slug} folder, {rescan_in_msg}") return tasks_scheduler.enqueue_in( - time_delta, scan_platforms, [platform_slug] + time_delta, scan_platforms, [db_platform.id] )