From 5c49b6ad838166090e4ff747b1bd166fef2b9828 Mon Sep 17 00:00:00 2001 From: Florian Date: Mon, 20 Oct 2025 12:44:27 +0200 Subject: [PATCH] Bugfix: Explicitly cast returned versions as string for comparisons --- src/dockerhub_api.py | 2 +- src/github_api.py | 2 +- src/main.py | 22 ++++++++++++---------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/dockerhub_api.py b/src/dockerhub_api.py index ab80ca4..fbf04be 100644 --- a/src/dockerhub_api.py +++ b/src/dockerhub_api.py @@ -57,7 +57,7 @@ def find_package_version_with_tag(repo: str, tag: str) -> str: tag_id = data.get("id") if tag_id: logger.info(f"[DockerHub] Found tag '{tag}' for repo '{repo}', ID: {tag_id}") - return tag_id + return str(tag_id) else: logger.debug(f"[DockerHub] Tag '{tag}' not found for repo '{repo}'") return None diff --git a/src/github_api.py b/src/github_api.py index 03c7f85..027a32f 100644 --- a/src/github_api.py +++ b/src/github_api.py @@ -38,7 +38,7 @@ def find_package_version_with_tag(org: str, package: str, target_tag: str) -> st tags = version.get("metadata", {}).get("container", {}).get("tags", []) if target_tag in tags: logger.info(f"[GitHub] Found tag '{target_tag}' for {package} on page {page}, version ID: {version['id']}") - return version["id"] + return str(version["id"]) page += 1 logger.debug(f"[GitHub] Tag '{target_tag}' not found on page {page-1}, moving to page {page}") diff --git a/src/main.py b/src/main.py index aa8a5a5..544cd71 100644 --- a/src/main.py +++ b/src/main.py @@ -67,18 +67,19 @@ def handle_suwayomi( try: logger.info("[App] Suwayomi handler invoked") - latest_online_version = find_package_version_with_tag_github("Suwayomi", "tachidesk", "stable") - logger.debug(f"[App] Fetched latest Suwayomi version from GitHub: {latest_online_version}") + online_version = find_package_version_with_tag_github("Suwayomi", "tachidesk", "stable") + logger.debug(f"[App] Fetched latest Suwayomi version from GitHub: {online_version}") cursor = db.cursor() cursor.execute("SELECT latest_version FROM docker_repositories WHERE app='suwayomi'") local_state = cursor.fetchone() - logger.debug(f"[App] Local Suwayomi version from DB: {local_state}") + local_version = str(local_state[0]) if local_state and local_state[0] is not None else None + logger.debug(f"[App] Comparing versions: local='{local_version}' vs online='{online_version}'") - if local_state and latest_online_version != local_state[0]: + if local_version != online_version: logger.debug("[App] Version mismatch detected. Updating database.") cursor.execute ("UPDATE docker_repositories SET latest_version=%s WHERE app='suwayomi'", - (latest_online_version,)) + (online_version,)) db.commit() logger.info("[App] New Suwayomi version recorded in database") send_notification("New Suwayomi version has been found") @@ -101,18 +102,19 @@ def handle_pihole( ): try: logger.info("[App] Pi-hole handler invoked") - latest_online_version = find_package_version_with_tag_dockerhub("pihole/pihole", "latest") - logger.debug(f"Fetched latest Pi-hole version from Docker Hub: {latest_online_version}") + online_version = find_package_version_with_tag_dockerhub("pihole/pihole", "latest") + logger.debug(f"Fetched latest Pi-hole version from Docker Hub: {online_version}") cursor = db.cursor() cursor.execute("SELECT latest_version FROM docker_repositories WHERE app='pihole'") local_state = cursor.fetchone() - logger.debug(f"[App] Local Pi-hole version from DB: {local_state}") + local_version = str(local_state[0]) if local_state and local_state[0] is not None else None + logger.debug(f"[App] Comparing versions: local='{local_version}' vs online='{online_version}'") - if local_state and latest_online_version != local_state[0]: + if local_version != online_version: logger.debug("[App] Version mismatch detected. Updating database.") cursor.execute ("UPDATE docker_repositories SET latest_version=%s WHERE app='pihole'", - (latest_online_version,)) + (online_version,)) db.commit() logger.info("[App] New Pi-hole version recorded in database") send_notification("New Pi-hole version has been found")