From 58edede71653ad9d19c284653444d80ac9cac6d8 Mon Sep 17 00:00:00 2001 From: benjdlambert Date: Tue, 17 Feb 2026 10:45:55 +0100 Subject: [PATCH] chore: refactor a little bit Signed-off-by: benjdlambert --- .../openapi/generated/apis/Api.client.ts | 2 +- .../catalog-backend/src/schema/openapi.yaml | 21 +------------------ .../src/schema/openapi/generated/router.ts | 3 +-- .../request/applyEntityFilterToQuery.test.ts | 3 ++- .../request/applyEntityFilterToQuery.ts | 1 + 5 files changed, 6 insertions(+), 24 deletions(-) diff --git a/packages/catalog-client/src/schema/openapi/generated/apis/Api.client.ts b/packages/catalog-client/src/schema/openapi/generated/apis/Api.client.ts index 5a5eb2ec5d..086f3695d4 100644 --- a/packages/catalog-client/src/schema/openapi/generated/apis/Api.client.ts +++ b/packages/catalog-client/src/schema/openapi/generated/apis/Api.client.ts @@ -457,7 +457,7 @@ export class DefaultApiClient { } /** - * Query entities using predicate-based filters. This endpoint provides an alternative filtering method with a more expressive filter syntax supporting logical operators ($all, $any, $not) and value operators ($exists, $in). Example query: ```json { \"query\": { \"$all\": [ {\"kind\": \"component\"}, {\"$any\": [ {\"spec.type\": \"service\"}, {\"spec.type\": \"website\"} ]}, {\"$not\": {\"spec.lifecycle\": \"experimental\"}} ] } } ``` + * Query entities using predicate-based filters. * @param queryEntitiesByPredicateRequest - */ public async queryEntitiesByPredicate( diff --git a/plugins/catalog-backend/src/schema/openapi.yaml b/plugins/catalog-backend/src/schema/openapi.yaml index f6b80ca062..f44ac026e4 100644 --- a/plugins/catalog-backend/src/schema/openapi.yaml +++ b/plugins/catalog-backend/src/schema/openapi.yaml @@ -1099,26 +1099,7 @@ paths: operationId: QueryEntitiesByPredicate tags: - Entity - description: | - Query entities using predicate-based filters. This endpoint provides an - alternative filtering method with a more expressive filter syntax supporting - logical operators ($all, $any, $not) and value operators ($exists, $in). - - Example query: - ```json - { - "query": { - "$all": [ - {"kind": "component"}, - {"$any": [ - {"spec.type": "service"}, - {"spec.type": "website"} - ]}, - {"$not": {"spec.lifecycle": "experimental"}} - ] - } - } - ``` + description: Query entities using predicate-based filters. responses: '200': description: Ok diff --git a/plugins/catalog-backend/src/schema/openapi/generated/router.ts b/plugins/catalog-backend/src/schema/openapi/generated/router.ts index afac4ce5f8..86ddeddf61 100644 --- a/plugins/catalog-backend/src/schema/openapi/generated/router.ts +++ b/plugins/catalog-backend/src/schema/openapi/generated/router.ts @@ -1231,8 +1231,7 @@ export const spec = { post: { operationId: 'QueryEntitiesByPredicate', tags: ['Entity'], - description: - 'Query entities using predicate-based filters. This endpoint provides an\nalternative filtering method with a more expressive filter syntax supporting\nlogical operators ($all, $any, $not) and value operators ($exists, $in).\n\nExample query:\n```json\n{\n "query": {\n "$all": [\n {"kind": "component"},\n {"$any": [\n {"spec.type": "service"},\n {"spec.type": "website"}\n ]},\n {"$not": {"spec.lifecycle": "experimental"}}\n ]\n }\n}\n```\n', + description: 'Query entities using predicate-based filters.', responses: { '200': { description: 'Ok', diff --git a/plugins/catalog-backend/src/service/request/applyEntityFilterToQuery.test.ts b/plugins/catalog-backend/src/service/request/applyEntityFilterToQuery.test.ts index 8d3db17934..ea64f5b400 100644 --- a/plugins/catalog-backend/src/service/request/applyEntityFilterToQuery.test.ts +++ b/plugins/catalog-backend/src/service/request/applyEntityFilterToQuery.test.ts @@ -108,7 +108,7 @@ describe.each(databases.eachSupportedId())( } // #endregion - describe.each(strategies)('with strategy %p', _strategy => { + describe.each(strategies)('with strategy %p', strategy => { async function query(filter: EntityFilter): Promise { const q = knex('final_entities').whereNotNull( @@ -119,6 +119,7 @@ describe.each(databases.eachSupportedId())( targetQuery: q, onEntityIdField: 'final_entities.entity_id', knex, + strategy, }); return await q.then(rows => rows diff --git a/plugins/catalog-backend/src/service/request/applyEntityFilterToQuery.ts b/plugins/catalog-backend/src/service/request/applyEntityFilterToQuery.ts index 7cbe4f5f58..49356cd0ff 100644 --- a/plugins/catalog-backend/src/service/request/applyEntityFilterToQuery.ts +++ b/plugins/catalog-backend/src/service/request/applyEntityFilterToQuery.ts @@ -125,6 +125,7 @@ export function applyEntityFilterToQuery(options: { targetQuery: Knex.QueryBuilder; onEntityIdField: string; knex: Knex; + strategy?: 'in' | 'join'; }): Knex.QueryBuilder { const { filter, query, targetQuery, onEntityIdField, knex } = options;