refactor: integrate predicate filtering into queryEntities flow

Remove separate queryEntitiesByPredicate method and integrate
predicate-based filtering into the existing queryEntities path.
POST /entities/by-query now uses the same queryEntities call with
proper permission enforcement via applyEntityFilterToQuery.

Aligns with the locations query pattern from PR #32846.

Signed-off-by: benjdlambert <ben@blam.sh>
This commit is contained in:
benjdlambert
2026-02-17 10:10:53 +01:00
parent 51e23eb73e
commit 02b33b0650
46 changed files with 364 additions and 1437 deletions
+3 -8
View File
@@ -3,13 +3,8 @@
'@backstage/plugin-catalog-backend': minor
---
New POST /entities/by-query endpoint
Added predicate-based entity filtering via POST /entities/by-query endpoint.
- Supports predicate-based entity filtering using advanced query operators ($all, $any, $in, $not, $exists)
- Enables complex nested queries for more powerful entity searches
- Provides cursor-based pagination for efficient result traversal
Supports `$all`, `$any`, `$not`, `$exists`, and `$in` operators for expressive entity queries. Integrated into the existing `queryEntities` flow with full cursor-based pagination, permission enforcement, and `totalItems` support.
Updated Catalog Client
- Enhanced queryEntities() method to automatically route requests to POST endpoint when query predicate is provided
- Validates mutual exclusivity between filter (legacy) and query (predicate-based) parameters
The catalog client's `queryEntities()` method automatically routes to the POST endpoint when a `query` predicate is provided.