MCPcopy Create free account
hub / github.com/effect-app/libs / statement

Function statement

packages/infra/src/Store/SQL/query.ts:211–333  ·  view source on GitHub ↗
(x: FilterR, relation?: string)

Source from the content-addressed store, hash-verified

209 }
210
211 const statement = (x: FilterR, relation?: string): string => {
212 const resolvedPath = x.path === idKey ? "id" : x.path
213 const k = fieldExpr(resolvedPath, relation)
214
215 switch (x.op) {
216 case "in": {
217 const vals = x.value as unknown as readonly unknown[]
218 const hasNull = vals.some((v) => v == null)
219 const nonNullVals = vals.filter((v) => v != null)
220 const parts: string[] = []
221 if (nonNullVals.length > 0) {
222 const placeholders = nonNullVals.map((v) => addParam(v))
223 parts.push(`${k} IN (${placeholders.join(", ")})`)
224 }
225 if (hasNull) parts.push(`${k} IS NULL`)
226 return parts.length > 1 ? `(${parts.join(" OR ")})` : parts[0] ?? "1=0"
227 }
228 case "notIn": {
229 const vals = x.value as unknown as readonly unknown[]
230 const hasNull = vals.some((v) => v == null)
231 const nonNullVals = vals.filter((v) => v != null)
232 const parts: string[] = []
233 if (nonNullVals.length > 0) {
234 const placeholders = nonNullVals.map((v) => addParam(v))
235 parts.push(`${k} NOT IN (${placeholders.join(", ")})`)
236 }
237 if (hasNull) parts.push(`${k} IS NOT NULL`)
238 return parts.length > 1 ? `(${parts.join(" AND ")})` : parts[0] ?? "1=1"
239 }
240
241 case "includes": {
242 const arrPath = dottedToJsonPath(resolvedPath)
243 const v = addParam(x.value)
244 return dialect.jsonArrayContains(arrPath, v)
245 }
246 case "notIncludes": {
247 const arrPath = dottedToJsonPath(resolvedPath)
248 const v = addParam(x.value)
249 return dialect.jsonArrayNotContains(arrPath, v)
250 }
251
252 case "includes-any": {
253 const arrPath = dottedToJsonPath(resolvedPath)
254 const vals = x.value as unknown as readonly unknown[]
255 const placeholders = vals.map((v) => addParam(dialect.serializeJsonValue(v)))
256 return dialect.jsonArrayContainsAny(arrPath, placeholders)
257 }
258 case "notIncludes-any": {
259 const arrPath = dottedToJsonPath(resolvedPath)
260 const vals = x.value as unknown as readonly unknown[]
261 const placeholders = vals.map((v) => addParam(dialect.serializeJsonValue(v)))
262 return dialect.jsonArrayNotContainsAny(arrPath, placeholders)
263 }
264
265 case "includes-all": {
266 const arrPath = dottedToJsonPath(resolvedPath)
267 const vals = x.value as unknown as readonly unknown[]
268 const placeholders = vals.map((v) => addParam(dialect.serializeJsonValue(v)))

Callers 2

printFunction · 0.70
codeFilter3__Function · 0.50

Calls 9

assertUnreachableFunction · 0.90
fieldExprFunction · 0.85
addParamFunction · 0.85
dottedToJsonPathFunction · 0.85
someMethod · 0.80
filterMethod · 0.80
pushMethod · 0.80
joinMethod · 0.80
mapMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…