MCPcopy Index your code
hub / github.com/simstudioai/sim / buildLogicalClause

Function buildLogicalClause

apps/sim/lib/table/sql.ts:435–453  ·  view source on GitHub ↗

* Builds SQL clauses from nested filters and joins them with the specified operator. * * @example * // OR operator * buildLogicalClause( * [{ status: 'active' }, { status: 'pending' }], * 'user_table_rows', * 'OR' * ) * // Returns: (data @> '{"status":"active"}'::jsonb OR data @> '{"s

(
  subFilters: Filter[],
  tableName: string,
  operator: 'OR' | 'AND',
  columnTypeMap: ColumnTypeMap
)

Source from the content-addressed store, hash-verified

433 * // Returns: ((data->>'age')::numeric >= 18 AND data @> '{"verified":true}'::jsonb)
434 */
435function buildLogicalClause(
436 subFilters: Filter[],
437 tableName: string,
438 operator: 'OR' | 'AND',
439 columnTypeMap: ColumnTypeMap
440): SQL | undefined {
441 const clauses: SQL[] = []
442 for (const subFilter of subFilters) {
443 const clause = buildFilterClauseInternal(subFilter, tableName, columnTypeMap)
444 if (clause) {
445 clauses.push(clause)
446 }
447 }
448
449 if (clauses.length === 0) return undefined
450 if (clauses.length === 1) return clauses[0]
451
452 return sql`(${sql.join(clauses, sql.raw(` ${operator} `))})`
453}
454
455/** Builds JSONB containment clause: `data @> '{"field": value}'::jsonb` (uses GIN index) */
456function buildContainmentClause(tableName: string, field: string, value: JsonValue): SQL {

Callers 1

Calls 3

joinMethod · 0.80
pushMethod · 0.45

Tested by

no test coverage detected