From 99306adc3cec612e49d51c3004a351f89d7d14f8 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 23 Feb 2025 14:37:45 +0100 Subject: [PATCH] catalog-react: remove $nin predicate Signed-off-by: Patrik Oldsberg --- .../predicates/createEntityPredicateSchema.test.ts | 1 - .../alpha/predicates/createEntityPredicateSchema.ts | 1 - .../alpha/predicates/evaluateEntityPredicate.test.ts | 10 +++++++++- .../src/alpha/predicates/evaluateEntityPredicate.ts | 3 --- plugins/catalog-react/src/alpha/predicates/types.ts | 1 - 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/plugins/catalog-react/src/alpha/predicates/createEntityPredicateSchema.test.ts b/plugins/catalog-react/src/alpha/predicates/createEntityPredicateSchema.test.ts index 2a96df97bb..20824a5c2d 100644 --- a/plugins/catalog-react/src/alpha/predicates/createEntityPredicateSchema.test.ts +++ b/plugins/catalog-react/src/alpha/predicates/createEntityPredicateSchema.test.ts @@ -54,7 +54,6 @@ describe('createEntityPredicateSchema', () => { ], }, { kind: 'component', 'spec.type': { $in: ['service'] } }, - { kind: 'component', 'spec.type': { $nin: ['service'] } }, { 'spec.owner': { $exists: true } }, { 'spec.owner': { $exists: false } }, { 'spec.type': { $eq: 'service' } }, diff --git a/plugins/catalog-react/src/alpha/predicates/createEntityPredicateSchema.ts b/plugins/catalog-react/src/alpha/predicates/createEntityPredicateSchema.ts index 1d3bdfacb9..9b7efeb274 100644 --- a/plugins/catalog-react/src/alpha/predicates/createEntityPredicateSchema.ts +++ b/plugins/catalog-react/src/alpha/predicates/createEntityPredicateSchema.ts @@ -28,7 +28,6 @@ export function createEntityPredicateSchema(z: typeof zImpl) { z.object({ $eq: z.union([primitiveSchema, z.array(primitiveSchema)]) }), z.object({ $ne: z.union([primitiveSchema, z.array(primitiveSchema)]) }), z.object({ $in: z.array(primitiveSchema) }), - z.object({ $nin: z.array(primitiveSchema) }), z.object({ $all: z.array(primitiveSchema) }), z.object({ $elemMatch: z.lazy(() => z.record(filterValueSchema)) }), ]) as ZodType; diff --git a/plugins/catalog-react/src/alpha/predicates/evaluateEntityPredicate.test.ts b/plugins/catalog-react/src/alpha/predicates/evaluateEntityPredicate.test.ts index 1c3165c4fa..4d19a6234d 100644 --- a/plugins/catalog-react/src/alpha/predicates/evaluateEntityPredicate.test.ts +++ b/plugins/catalog-react/src/alpha/predicates/evaluateEntityPredicate.test.ts @@ -192,7 +192,15 @@ describe('evaluateEntityPredicate', () => { }, ], ['s', { kind: 'component', 'spec.type': { $in: ['service'] } }], - ['w', { kind: 'component', 'spec.type': { $nin: ['service'] } }], + [ + 'w', + { + $and: [ + { kind: 'component' }, + { $not: { 'spec.type': { $in: ['service'] } } }, + ], + }, + ], ['s,w,a', { 'spec.owner': { $exists: true } }], ['g', { 'spec.owner': { $exists: false } }], ['s', { 'spec.type': { $eq: 'service' } }], diff --git a/plugins/catalog-react/src/alpha/predicates/evaluateEntityPredicate.ts b/plugins/catalog-react/src/alpha/predicates/evaluateEntityPredicate.ts index ebdd9e5df9..722442a8e1 100644 --- a/plugins/catalog-react/src/alpha/predicates/evaluateEntityPredicate.ts +++ b/plugins/catalog-react/src/alpha/predicates/evaluateEntityPredicate.ts @@ -95,9 +95,6 @@ function evaluatePredicateValue( if ('$in' in filter) { return filter.$in.includes(value as EntityPredicatePrimitive); } - if ('$nin' in filter) { - return !filter.$nin.includes(value as EntityPredicatePrimitive); - } if ('$exists' in filter) { if (filter.$exists === true) { return value !== undefined; diff --git a/plugins/catalog-react/src/alpha/predicates/types.ts b/plugins/catalog-react/src/alpha/predicates/types.ts index 3a0b01aa2b..7c6e805e17 100644 --- a/plugins/catalog-react/src/alpha/predicates/types.ts +++ b/plugins/catalog-react/src/alpha/predicates/types.ts @@ -35,7 +35,6 @@ export type EntityPredicateValue = | { $eq: EntityPredicatePrimitive } | { $ne: EntityPredicatePrimitive } | { $in: EntityPredicatePrimitive[] } - | { $nin: EntityPredicatePrimitive[] } | { $all: EntityPredicatePrimitive[] } | { $elemMatch: EntityPredicateExpression };