fix: filter inactive extensions from dashboard API responses

/api/extensions and customer extension list now only return
is_active extensions, preventing deleted extensions from showing
in the dashboard and causing deploy errors with null versions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-06 07:11:32 +00:00
parent d2a2d28b01
commit 1e5f220c97
+2 -2
View File
@@ -788,7 +788,7 @@ class APIHandler(BaseHTTPRequestHandler):
self._respond(200, query("""
SELECT e.*, (SELECT COUNT(*) FROM extension_versions ev WHERE ev.extension_id = e.id) as version_count,
(SELECT COUNT(*) FROM customer_extensions ce WHERE ce.extension_id = e.id AND ce.license_status = 'active') as customer_count
FROM extensions e ORDER BY e.name"""))
FROM extensions e WHERE e.is_active ORDER BY e.name"""))
def _get_extension_versions(self, ext_id):
self._respond(200, query("SELECT * FROM extension_versions WHERE extension_id = %s ORDER BY released_at DESC", (ext_id,)))
@@ -808,7 +808,7 @@ class APIHandler(BaseHTTPRequestHandler):
self._respond(404, {'error': 'Not found'}); return
customer['extensions'] = query("""
SELECT e.id, e.name, e.composer_name, e.latest_version, ce.installed_version, ce.license_status, ce.auto_update, ce.installed_at
FROM customer_extensions ce JOIN extensions e ON ce.extension_id = e.id WHERE ce.customer_id = %s ORDER BY e.name""", (cid,))
FROM customer_extensions ce JOIN extensions e ON ce.extension_id = e.id WHERE ce.customer_id = %s AND e.is_active ORDER BY e.name""", (cid,))
customer['dependencies'] = DEPENDENCIES
customer['install_order'] = _compute_install_order()
self._respond(200, customer)