diff --git a/app_server.py b/app_server.py index cdeef00..f0a04ca 100644 --- a/app_server.py +++ b/app_server.py @@ -140,13 +140,18 @@ def sync_extension_registry(): added, reactivated, deactivated = [], [], [] + # Extensions deactivated via /release-deleted (zero versions) must stay deactivated even if the repo still exists. + versions_count = {r['name']: r['cnt'] for r in query( + "SELECT e.name, COUNT(ev.id) AS cnt FROM extensions e LEFT JOIN extension_versions ev ON ev.extension_id = e.id GROUP BY e.name" + )} + for name, kebab in gitea_extensions.items(): composer_name = f'{GITEA_ORG}/{kebab}' if name not in db_names: query("INSERT INTO extensions (name, composer_name, is_active) VALUES (%s, %s, true)", (name, composer_name), fetch=None) added.append(name) - elif name not in db_active: + elif name not in db_active and versions_count.get(name, 0) > 0: query("UPDATE extensions SET is_active = true, updated_at = NOW() WHERE name = %s", (name,), fetch=None) reactivated.append(name)