MCPcopy Create free account
hub / github.com/TanStack/db / isComparisonSubset

Function isComparisonSubset

packages/db/src/query/predicate-utils.ts:1271–1340  ·  view source on GitHub ↗
(
  subsetFunc: Func,
  subsetValue: any,
  supersetFunc: Func,
  supersetValue: any,
)

Source from the content-addressed store, hash-verified

1269}
1270
1271function isComparisonSubset(
1272 subsetFunc: Func,
1273 subsetValue: any,
1274 supersetFunc: Func,
1275 supersetValue: any,
1276): boolean {
1277 const subOp = subsetFunc.name
1278 const superOp = supersetFunc.name
1279
1280 // Handle same operator
1281 if (subOp === superOp) {
1282 if (subOp === `eq`) {
1283 // field = X is subset of field = X only
1284 // Fast path: primitives can use strict equality
1285 if (isPrimitive(subsetValue) && isPrimitive(supersetValue)) {
1286 return subsetValue === supersetValue
1287 }
1288 return areValuesEqual(subsetValue, supersetValue)
1289 } else if (subOp === `gt`) {
1290 // field > 20 is subset of field > 10 if 20 > 10
1291 return subsetValue >= supersetValue
1292 } else if (subOp === `gte`) {
1293 // field >= 20 is subset of field >= 10 if 20 >= 10
1294 return subsetValue >= supersetValue
1295 } else if (subOp === `lt`) {
1296 // field < 10 is subset of field < 20 if 10 <= 20
1297 return subsetValue <= supersetValue
1298 } else if (subOp === `lte`) {
1299 // field <= 10 is subset of field <= 20 if 10 <= 20
1300 return subsetValue <= supersetValue
1301 }
1302 }
1303
1304 // Handle different operators on same field
1305 // eq vs gt/gte: field = 15 is subset of field > 10 if 15 > 10
1306 if (subOp === `eq` && superOp === `gt`) {
1307 return subsetValue > supersetValue
1308 }
1309 if (subOp === `eq` && superOp === `gte`) {
1310 return subsetValue >= supersetValue
1311 }
1312 if (subOp === `eq` && superOp === `lt`) {
1313 return subsetValue < supersetValue
1314 }
1315 if (subOp === `eq` && superOp === `lte`) {
1316 return subsetValue <= supersetValue
1317 }
1318
1319 // gt/gte vs gte/gt
1320 if (subOp === `gt` && superOp === `gte`) {
1321 // field > 10 is subset of field >= 10 if 10 >= 10 (always true for same value)
1322 return subsetValue >= supersetValue
1323 }
1324 if (subOp === `gte` && superOp === `gt`) {
1325 // field >= 11 is subset of field > 10 if 11 > 10
1326 return subsetValue > supersetValue
1327 }
1328

Callers 1

isWhereSubsetInternalFunction · 0.85

Calls 2

isPrimitiveFunction · 0.85
areValuesEqualFunction · 0.70

Tested by

no test coverage detected