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 = [], [], []
|
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():
|
for name, kebab in gitea_extensions.items():
|
||||||
composer_name = f'{GITEA_ORG}/{kebab}'
|
composer_name = f'{GITEA_ORG}/{kebab}'
|
||||||
if name not in db_names:
|
if name not in db_names:
|
||||||
query("INSERT INTO extensions (name, composer_name, is_active) VALUES (%s, %s, true)",
|
query("INSERT INTO extensions (name, composer_name, is_active) VALUES (%s, %s, true)",
|
||||||
(name, composer_name), fetch=None)
|
(name, composer_name), fetch=None)
|
||||||
added.append(name)
|
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",
|
query("UPDATE extensions SET is_active = true, updated_at = NOW() WHERE name = %s",
|
||||||
(name,), fetch=None)
|
(name,), fetch=None)
|
||||||
reactivated.append(name)
|
reactivated.append(name)
|
||||||
|
|||||||
Reference in New Issue
Block a user