fix: don't reactivate extensions with zero versions in sync-registry
After /release-deleted deactivates an extension (when the last release is removed from Gitea), running /sync-registry would reactivate it because the repo still exists. Now sync-registry skips reactivation when an extension has zero rows in extension_versions — those were intentionally retired and must stay deactivated. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+6
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user