function minusWherePredicates(fromPredicate, subtractPredicate):
| BasicExpression<boolean>
| null;
function minusWherePredicates(fromPredicate, subtractPredicate):
| BasicExpression<boolean>
| null;
Defined in: packages/db/src/query/predicate-utils.ts:338
Compute the difference between two where predicates: fromPredicate AND NOT(subtractPredicate). Returns the simplified predicate, or null if the difference cannot be simplified (in which case the caller should fetch the full fromPredicate).
The predicate to subtract from
BasicExpression<boolean> | undefined
The predicate to subtract
BasicExpression<boolean> | undefined
| BasicExpression<boolean> | null
The simplified difference, or null if cannot be simplified
// Range difference
minusWherePredicates(
gt(ref('age'), val(10)), // age > 10
gt(ref('age'), val(20)) // age > 20
) // → age > 10 AND age <= 20
// Range difference
minusWherePredicates(
gt(ref('age'), val(10)), // age > 10
gt(ref('age'), val(20)) // age > 20
) // → age > 10 AND age <= 20
// Set difference
minusWherePredicates(
inOp(ref('status'), ['A', 'B', 'C', 'D']), // status IN ['A','B','C','D']
inOp(ref('status'), ['B', 'C']) // status IN ['B','C']
) // → status IN ['A', 'D']
// Set difference
minusWherePredicates(
inOp(ref('status'), ['A', 'B', 'C', 'D']), // status IN ['A','B','C','D']
inOp(ref('status'), ['B', 'C']) // status IN ['B','C']
) // → status IN ['A', 'D']
// Common conditions
minusWherePredicates(
and(gt(ref('age'), val(10)), eq(ref('status'), val('active'))), // age > 10 AND status = 'active'
and(gt(ref('age'), val(20)), eq(ref('status'), val('active'))) // age > 20 AND status = 'active'
) // → age > 10 AND age <= 20 AND status = 'active'
// Common conditions
minusWherePredicates(
and(gt(ref('age'), val(10)), eq(ref('status'), val('active'))), // age > 10 AND status = 'active'
and(gt(ref('age'), val(20)), eq(ref('status'), val('active'))) // age > 20 AND status = 'active'
) // → age > 10 AND age <= 20 AND status = 'active'
// Complete overlap - empty result
minusWherePredicates(
gt(ref('age'), val(20)), // age > 20
gt(ref('age'), val(10)) // age > 10
) // → {type: 'val', value: false} (empty set)
// Complete overlap - empty result
minusWherePredicates(
gt(ref('age'), val(20)), // age > 20
gt(ref('age'), val(10)) // age > 10
) // → {type: 'val', value: false} (empty set)
Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.
Your weekly dose of JavaScript news. Delivered every Monday to over 100,000 devs, for free.
