MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / buildWhere

Function buildWhere

packages/core/fumadb/src/adapters/mongodb/query.ts:28–166  ·  view source on GitHub ↗
(condition: Condition)

Source from the content-addressed store, hash-verified

26} from "../../schema";
27
28function buildWhere(condition: Condition): Filter<Document> {
29 function doc(name: string, op: Operator, value: unknown): Filter<Document> {
30 switch (op) {
31 case "=":
32 case "is":
33 if (value == null) return { [name]: { $exists: false } };
34
35 return { [name]: value };
36 case "!=":
37 case "is not":
38 if (value == null) return { [name]: { $exists: true } };
39
40 return { [name]: { $ne: value } };
41 case ">":
42 return { [name]: { $gt: value } };
43 case ">=":
44 return { [name]: { $gte: value } };
45 case "<":
46 return { [name]: { $lt: value } };
47 case "<=":
48 return { [name]: { $lte: value } };
49 case "in":
50 return { [name]: { $in: value } };
51 case "not in":
52 return { [name]: { $nin: value } };
53 case "starts with":
54 return { [name]: { $regex: `^${value}`, $options: "i" } };
55 case "not starts with":
56 return { [name]: { $not: { $regex: `^${value}`, $options: "i" } } };
57 case "contains":
58 return { [name]: { $regex: value, $options: "i" } };
59 case "not contains":
60 return { [name]: { $not: { $regex: value, $options: "i" } } };
61 case "ends with":
62 return { [name]: { $regex: `${value}$`, $options: "i" } };
63 case "not ends with":
64 return { [name]: { $not: { $regex: `${value}$`, $options: "i" } } };
65 default:
66 throw new Error(`Unsupported operator: ${op}`);
67 }
68 }
69
70 function expr(exp1: string, op: Operator, exp2: string): Filter<Document> {
71 switch (op) {
72 case "=":
73 case "is":
74 return { $eq: [exp1, exp2] };
75 case "!=":
76 case "is not":
77 return { $ne: [exp1, exp2] };
78 case ">":
79 return { $gt: [exp1, exp2] };
80 case ">=":
81 return { $gte: [exp1, exp2] };
82 case "<":
83 return { $lt: [exp1, exp2] };
84 case "<=":
85 return { $lte: [exp1, exp2] };

Callers 4

buildFindPipelineFunction · 0.70
countFunction · 0.70
updateManyFunction · 0.70
deleteManyFunction · 0.70

Calls 3

exprFunction · 0.85
docFunction · 0.85
serializeFunction · 0.70

Tested by

no test coverage detected