@effect-app/infra 2.30.1 → 2.30.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/_cjs/Store/Cosmos/query.cjs +24 -19
- package/_cjs/Store/Cosmos/query.cjs.map +1 -1
- package/dist/Store/Cosmos/query.d.ts +1 -1
- package/dist/Store/Cosmos/query.d.ts.map +1 -1
- package/dist/Store/Cosmos/query.js +24 -22
- package/package.json +1 -1
- package/src/Store/Cosmos/query.ts +26 -22
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,7 @@ exports.logQuery = logQuery;
|
|
|
8
8
|
var _effectApp = require("effect-app");
|
|
9
9
|
var _utils = require("effect-app/utils");
|
|
10
10
|
var _logger = require("../../logger.cjs");
|
|
11
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
12
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
12
13
|
|
|
13
14
|
function logQuery(q) {
|
|
@@ -19,10 +20,8 @@ function logQuery(q) {
|
|
|
19
20
|
}, {}), undefined, 2)
|
|
20
21
|
}));
|
|
21
22
|
}
|
|
22
|
-
const arrayContains = v => v.map(_ => JSON.stringify(_)).join(", ");
|
|
23
|
-
const vAsArr = v => v;
|
|
24
23
|
function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, defaultValues, select, order, skip, limit) {
|
|
25
|
-
const statement = (x, i) => {
|
|
24
|
+
const statement = (x, i, values) => {
|
|
26
25
|
if (x.path === idKey) {
|
|
27
26
|
x = {
|
|
28
27
|
...x,
|
|
@@ -33,23 +32,24 @@ function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, defaultVa
|
|
|
33
32
|
// would have to map id, but shouldnt allow id in defaultValues anyway..
|
|
34
33
|
k = x.path in defaultValues ? `(${k} ?? ${JSON.stringify(defaultValues[x.path])})` : k;
|
|
35
34
|
const v = "@v" + i;
|
|
35
|
+
const realValue = values[i];
|
|
36
36
|
switch (x.op) {
|
|
37
37
|
case "in":
|
|
38
38
|
return `ARRAY_CONTAINS(${v}, ${k})`;
|
|
39
39
|
case "notIn":
|
|
40
40
|
return `(NOT ARRAY_CONTAINS(${v}, ${k}))`;
|
|
41
41
|
case "includes":
|
|
42
|
-
return `ARRAY_CONTAINS(${k}, ${
|
|
42
|
+
return `ARRAY_CONTAINS(${k}, ${v})`;
|
|
43
43
|
case "notIncludes":
|
|
44
|
-
return `(NOT ARRAY_CONTAINS(${k}, ${
|
|
44
|
+
return `(NOT ARRAY_CONTAINS(${k}, ${v}))`;
|
|
45
45
|
case "includes-any":
|
|
46
|
-
return `ARRAY_CONTAINS_ANY(${k}, ${
|
|
46
|
+
return `ARRAY_CONTAINS_ANY(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")})`;
|
|
47
47
|
case "notIncludes-any":
|
|
48
|
-
return `(NOT ARRAY_CONTAINS_ANY(${k}, ${
|
|
48
|
+
return `(NOT ARRAY_CONTAINS_ANY(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")}))`;
|
|
49
49
|
case "includes-all":
|
|
50
|
-
return `ARRAY_CONTAINS_ALL(${k}, ${
|
|
50
|
+
return `ARRAY_CONTAINS_ALL(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")})`;
|
|
51
51
|
case "notIncludes-all":
|
|
52
|
-
return `(NOT ARRAY_CONTAINS_ALL(${k}, ${
|
|
52
|
+
return `(NOT ARRAY_CONTAINS_ALL(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")}))`;
|
|
53
53
|
case "contains":
|
|
54
54
|
return `CONTAINS(${k}, ${v}, true)`;
|
|
55
55
|
case "startsWith":
|
|
@@ -84,7 +84,7 @@ function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, defaultVa
|
|
|
84
84
|
}
|
|
85
85
|
};
|
|
86
86
|
let i = 0;
|
|
87
|
-
const print = state => {
|
|
87
|
+
const print = (state, values) => {
|
|
88
88
|
let s = "";
|
|
89
89
|
let l = 0;
|
|
90
90
|
const printN = n => {
|
|
@@ -93,32 +93,32 @@ function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, defaultVa
|
|
|
93
93
|
for (const e of state) {
|
|
94
94
|
switch (e.t) {
|
|
95
95
|
case "where":
|
|
96
|
-
s += statement(e, i
|
|
96
|
+
s += statement(e, i++, values);
|
|
97
97
|
break;
|
|
98
98
|
case "or":
|
|
99
|
-
s += ` OR ${statement(e, i
|
|
99
|
+
s += ` OR ${statement(e, i++, values)}`;
|
|
100
100
|
break;
|
|
101
101
|
case "and":
|
|
102
|
-
s += ` AND ${statement(e, i
|
|
102
|
+
s += ` AND ${statement(e, i++, values)}`;
|
|
103
103
|
break;
|
|
104
104
|
case "or-scope":
|
|
105
105
|
{
|
|
106
106
|
++l;
|
|
107
|
-
s += ` OR (\n${printN(l + 1)}${print(e.result)}\n${printN(l)})`;
|
|
107
|
+
s += ` OR (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`;
|
|
108
108
|
--l;
|
|
109
109
|
break;
|
|
110
110
|
}
|
|
111
111
|
case "and-scope":
|
|
112
112
|
{
|
|
113
113
|
++l;
|
|
114
|
-
s += ` AND (\n${printN(l + 1)}${print(e.result)}\n${printN(l)})`;
|
|
114
|
+
s += ` AND (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`;
|
|
115
115
|
--l;
|
|
116
116
|
break;
|
|
117
117
|
}
|
|
118
118
|
case "where-scope":
|
|
119
119
|
{
|
|
120
120
|
// ;++l
|
|
121
|
-
s += `(\n${printN(l + 1)}${print(e.result)}\n)`;
|
|
121
|
+
s += `(\n${printN(l + 1)}${print(e.result, values)}\n)`;
|
|
122
122
|
// ;--l
|
|
123
123
|
break;
|
|
124
124
|
}
|
|
@@ -150,16 +150,21 @@ function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, defaultVa
|
|
|
150
150
|
|
|
151
151
|
${(0, _effectApp.pipe)(values.filter(_ => _.path.includes(".-1.")).map(_ => _.path.split(".-1.")[0]).map(_ => `JOIN ${_} IN f.${_}`), _effectApp.Array.dedupeWith(_effectApp.Equivalence.string)).join("\n")}
|
|
152
152
|
|
|
153
|
-
WHERE f.id != @id ${filter.length ? `AND (${print(filter)})` : ""}
|
|
153
|
+
WHERE f.id != @id ${filter.length ? `AND (${print(filter, values.map(_ => _.value))})` : ""}
|
|
154
154
|
${order ? `ORDER BY ${order.map(_ => `f.${_.key} ${_.direction}`).join(", ")}` : ""}
|
|
155
155
|
${skip !== undefined || limit !== undefined ? `OFFSET ${skip ?? 0} LIMIT ${limit ?? 999999}` : ""}`,
|
|
156
156
|
parameters: [{
|
|
157
157
|
name: "@id",
|
|
158
158
|
value: importedMarkerId
|
|
159
|
-
}, ...values.
|
|
159
|
+
}, ...values.flatMap((x, i) => [{
|
|
160
160
|
name: `@v${i}`,
|
|
161
161
|
value: x.value
|
|
162
|
-
}
|
|
162
|
+
}]
|
|
163
|
+
// TODO: only for arrays that are used with _ANY or _ALL
|
|
164
|
+
.concat(_effectApp.Array.isArray(x.value) ? x.value.map((_, i2) => ({
|
|
165
|
+
name: `@v${i}__${i2}`,
|
|
166
|
+
value: _
|
|
167
|
+
})) : []))]
|
|
163
168
|
};
|
|
164
169
|
}
|
|
165
170
|
//# sourceMappingURL=query.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.cjs","names":["_effectApp","require","_utils","_logger","logQuery","q","InfraLogger","logDebug","pipe","Effect","annotateLogs","query","parameters","JSON","stringify","reduce","acc","v","name","value","undefined","
|
|
1
|
+
{"version":3,"file":"query.cjs","names":["_effectApp","require","_utils","_logger","logQuery","q","InfraLogger","logDebug","pipe","Effect","annotateLogs","query","parameters","JSON","stringify","reduce","acc","v","name","value","undefined","buildWhereCosmosQuery3","idKey","filter","importedMarkerId","defaultValues","select","order","skip","limit","statement","x","i","values","path","k","includes","split","realValue","op","map","_","join","assertUnreachable","print","state","s","l","printN","n","Array","range","e","t","result","getValues","flatMap","dedupeWith","Equivalence","string","length","key","direction","concat","isArray","i2"],"sources":["../../../src/Store/Cosmos/query.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/Store/Cosmos/query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/Store/Cosmos/query.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,MAAM,EAAqB,MAAM,YAAY,CAAA;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAGvD,OAAO,KAAK,EAAW,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAEpD,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,eAAe,GAAG,SAAS,eAAe,EAAE,CAAA;KACpD,EAAE,CAAA;CACJ,qCAcA;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,SAAS,YAAY,EAAE,EAC/B,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,MAAM,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC,EACtC,KAAK,CAAC,EAAE,qBAAqB,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,CAAC,EACzE,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM;;;;eA4Kc,GAAG;;EAOhC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
2
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
2
3
|
import { Array, Effect, Equivalence, pipe } from "effect-app";
|
|
3
4
|
import { assertUnreachable } from "effect-app/utils";
|
|
@@ -13,10 +14,8 @@ export function logQuery(q) {
|
|
|
13
14
|
}, {}), undefined, 2)
|
|
14
15
|
}));
|
|
15
16
|
}
|
|
16
|
-
const arrayContains = (v) => v.map((_) => JSON.stringify(_)).join(", ");
|
|
17
|
-
const vAsArr = (v) => v;
|
|
18
17
|
export function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, defaultValues, select, order, skip, limit) {
|
|
19
|
-
const statement = (x, i) => {
|
|
18
|
+
const statement = (x, i, values) => {
|
|
20
19
|
if (x.path === idKey) {
|
|
21
20
|
x = { ...x, path: "id" };
|
|
22
21
|
}
|
|
@@ -26,23 +25,24 @@ export function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, de
|
|
|
26
25
|
// would have to map id, but shouldnt allow id in defaultValues anyway..
|
|
27
26
|
k = x.path in defaultValues ? `(${k} ?? ${JSON.stringify(defaultValues[x.path])})` : k;
|
|
28
27
|
const v = "@v" + i;
|
|
28
|
+
const realValue = values[i];
|
|
29
29
|
switch (x.op) {
|
|
30
30
|
case "in":
|
|
31
31
|
return `ARRAY_CONTAINS(${v}, ${k})`;
|
|
32
32
|
case "notIn":
|
|
33
33
|
return `(NOT ARRAY_CONTAINS(${v}, ${k}))`;
|
|
34
34
|
case "includes":
|
|
35
|
-
return `ARRAY_CONTAINS(${k}, ${
|
|
35
|
+
return `ARRAY_CONTAINS(${k}, ${v})`;
|
|
36
36
|
case "notIncludes":
|
|
37
|
-
return `(NOT ARRAY_CONTAINS(${k}, ${
|
|
37
|
+
return `(NOT ARRAY_CONTAINS(${k}, ${v}))`;
|
|
38
38
|
case "includes-any":
|
|
39
|
-
return `ARRAY_CONTAINS_ANY(${k}, ${
|
|
39
|
+
return `ARRAY_CONTAINS_ANY(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")})`;
|
|
40
40
|
case "notIncludes-any":
|
|
41
|
-
return `(NOT ARRAY_CONTAINS_ANY(${k}, ${
|
|
41
|
+
return `(NOT ARRAY_CONTAINS_ANY(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")}))`;
|
|
42
42
|
case "includes-all":
|
|
43
|
-
return `ARRAY_CONTAINS_ALL(${k}, ${
|
|
43
|
+
return `ARRAY_CONTAINS_ALL(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")})`;
|
|
44
44
|
case "notIncludes-all":
|
|
45
|
-
return `(NOT ARRAY_CONTAINS_ALL(${k}, ${
|
|
45
|
+
return `(NOT ARRAY_CONTAINS_ALL(${k}, ${realValue.map((_, i) => `${v}__${i}`).join(", ")}))`;
|
|
46
46
|
case "contains":
|
|
47
47
|
return `CONTAINS(${k}, ${v}, true)`;
|
|
48
48
|
case "startsWith":
|
|
@@ -80,7 +80,7 @@ export function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, de
|
|
|
80
80
|
}
|
|
81
81
|
};
|
|
82
82
|
let i = 0;
|
|
83
|
-
const print = (state) => {
|
|
83
|
+
const print = (state, values) => {
|
|
84
84
|
let s = "";
|
|
85
85
|
let l = 0;
|
|
86
86
|
const printN = (n) => {
|
|
@@ -89,29 +89,29 @@ export function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, de
|
|
|
89
89
|
for (const e of state) {
|
|
90
90
|
switch (e.t) {
|
|
91
91
|
case "where":
|
|
92
|
-
s += statement(e, i
|
|
92
|
+
s += statement(e, i++, values);
|
|
93
93
|
break;
|
|
94
94
|
case "or":
|
|
95
|
-
s += ` OR ${statement(e, i
|
|
95
|
+
s += ` OR ${statement(e, i++, values)}`;
|
|
96
96
|
break;
|
|
97
97
|
case "and":
|
|
98
|
-
s += ` AND ${statement(e, i
|
|
98
|
+
s += ` AND ${statement(e, i++, values)}`;
|
|
99
99
|
break;
|
|
100
100
|
case "or-scope": {
|
|
101
101
|
++l;
|
|
102
|
-
s += ` OR (\n${printN(l + 1)}${print(e.result)}\n${printN(l)})`;
|
|
102
|
+
s += ` OR (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`;
|
|
103
103
|
--l;
|
|
104
104
|
break;
|
|
105
105
|
}
|
|
106
106
|
case "and-scope": {
|
|
107
107
|
++l;
|
|
108
|
-
s += ` AND (\n${printN(l + 1)}${print(e.result)}\n${printN(l)})`;
|
|
108
|
+
s += ` AND (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`;
|
|
109
109
|
--l;
|
|
110
110
|
break;
|
|
111
111
|
}
|
|
112
112
|
case "where-scope": {
|
|
113
113
|
// ;++l
|
|
114
|
-
s += `(\n${printN(l + 1)}${print(e.result)}\n)`;
|
|
114
|
+
s += `(\n${printN(l + 1)}${print(e.result, values)}\n)`;
|
|
115
115
|
// ;--l
|
|
116
116
|
break;
|
|
117
117
|
}
|
|
@@ -152,17 +152,19 @@ export function buildWhereCosmosQuery3(idKey, filter, name, importedMarkerId, de
|
|
|
152
152
|
.map((_) => `JOIN ${_} IN f.${_}`), Array.dedupeWith(Equivalence.string))
|
|
153
153
|
.join("\n")}
|
|
154
154
|
|
|
155
|
-
WHERE f.id != @id ${filter.length ? `AND (${print(filter)})` : ""}
|
|
155
|
+
WHERE f.id != @id ${filter.length ? `AND (${print(filter, values.map((_) => _.value))})` : ""}
|
|
156
156
|
${order ? `ORDER BY ${order.map((_) => `f.${_.key} ${_.direction}`).join(", ")}` : ""}
|
|
157
157
|
${skip !== undefined || limit !== undefined ? `OFFSET ${skip ?? 0} LIMIT ${limit ?? 999999}` : ""}`,
|
|
158
158
|
parameters: [
|
|
159
159
|
{ name: "@id", value: importedMarkerId },
|
|
160
160
|
...values
|
|
161
|
-
.
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
161
|
+
.flatMap((x, i) => [{
|
|
162
|
+
name: `@v${i}`,
|
|
163
|
+
value: x.value
|
|
164
|
+
}]
|
|
165
|
+
// TODO: only for arrays that are used with _ANY or _ALL
|
|
166
|
+
.concat(Array.isArray(x.value) ? x.value.map((_, i2) => ({ name: `@v${i}__${i2}`, value: _ })) : []))
|
|
165
167
|
]
|
|
166
168
|
};
|
|
167
169
|
}
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvU3RvcmUvQ29zbW9zL3F1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCx3REFBd0Q7QUFDeEQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUU3RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFJN0MsTUFBTSxVQUFVLFFBQVEsQ0FBQyxDQU14QjtJQUNDLE9BQU8sV0FBVztTQUNmLFFBQVEsQ0FBQyxjQUFjLENBQUM7U0FDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDeEIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1FBQ2QsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQ3hCLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQTtZQUNyQixPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUMsRUFBRSxFQUFrRSxDQUFDLEVBQ3RFLFNBQVMsRUFDVCxDQUFDLENBQ0Y7S0FDRixDQUFDLENBQUMsQ0FBQTtBQUNQLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQ3BDLEtBQWtCLEVBQ2xCLE1BQStCLEVBQy9CLElBQVksRUFDWixnQkFBd0IsRUFDeEIsYUFBc0MsRUFDdEMsTUFBc0MsRUFDdEMsS0FBeUUsRUFDekUsSUFBYSxFQUNiLEtBQWM7SUFFZCxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQVUsRUFBRSxDQUFTLEVBQUUsTUFBYSxFQUFFLEVBQUU7UUFDekQsSUFBSSxD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
|
package/package.json
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
2
|
/* eslint-disable @typescript-eslint/no-unsafe-return */
|
|
2
3
|
import { Array, Effect, Equivalence, pipe } from "effect-app"
|
|
3
4
|
import type { NonEmptyReadonlyArray } from "effect-app"
|
|
@@ -28,9 +29,6 @@ export function logQuery(q: {
|
|
|
28
29
|
}))
|
|
29
30
|
}
|
|
30
31
|
|
|
31
|
-
const arrayContains = (v: any[]) => v.map((_) => JSON.stringify(_)).join(", ")
|
|
32
|
-
const vAsArr = (v: string) => v as unknown as any[]
|
|
33
|
-
|
|
34
32
|
export function buildWhereCosmosQuery3(
|
|
35
33
|
idKey: PropertyKey,
|
|
36
34
|
filter: readonly FilterResult[],
|
|
@@ -42,7 +40,7 @@ export function buildWhereCosmosQuery3(
|
|
|
42
40
|
skip?: number,
|
|
43
41
|
limit?: number
|
|
44
42
|
) {
|
|
45
|
-
const statement = (x: FilterR, i: number) => {
|
|
43
|
+
const statement = (x: FilterR, i: number, values: any[]) => {
|
|
46
44
|
if (x.path === idKey) {
|
|
47
45
|
x = { ...x, path: "id" }
|
|
48
46
|
}
|
|
@@ -55,6 +53,8 @@ export function buildWhereCosmosQuery3(
|
|
|
55
53
|
|
|
56
54
|
const v = "@v" + i
|
|
57
55
|
|
|
56
|
+
const realValue = values[i]
|
|
57
|
+
|
|
58
58
|
switch (x.op) {
|
|
59
59
|
case "in":
|
|
60
60
|
return `ARRAY_CONTAINS(${v}, ${k})`
|
|
@@ -62,19 +62,19 @@ export function buildWhereCosmosQuery3(
|
|
|
62
62
|
return `(NOT ARRAY_CONTAINS(${v}, ${k}))`
|
|
63
63
|
|
|
64
64
|
case "includes":
|
|
65
|
-
return `ARRAY_CONTAINS(${k}, ${
|
|
65
|
+
return `ARRAY_CONTAINS(${k}, ${v})`
|
|
66
66
|
case "notIncludes":
|
|
67
|
-
return `(NOT ARRAY_CONTAINS(${k}, ${
|
|
67
|
+
return `(NOT ARRAY_CONTAINS(${k}, ${v}))`
|
|
68
68
|
|
|
69
69
|
case "includes-any":
|
|
70
|
-
return `ARRAY_CONTAINS_ANY(${k}, ${
|
|
70
|
+
return `ARRAY_CONTAINS_ANY(${k}, ${(realValue as any[]).map((_, i) => `${v}__${i}`).join(", ")})`
|
|
71
71
|
case "notIncludes-any":
|
|
72
|
-
return `(NOT ARRAY_CONTAINS_ANY(${k}, ${
|
|
72
|
+
return `(NOT ARRAY_CONTAINS_ANY(${k}, ${(realValue as any[]).map((_, i) => `${v}__${i}`).join(", ")}))`
|
|
73
73
|
|
|
74
74
|
case "includes-all":
|
|
75
|
-
return `ARRAY_CONTAINS_ALL(${k}, ${
|
|
75
|
+
return `ARRAY_CONTAINS_ALL(${k}, ${(realValue as any[]).map((_, i) => `${v}__${i}`).join(", ")})`
|
|
76
76
|
case "notIncludes-all":
|
|
77
|
-
return `(NOT ARRAY_CONTAINS_ALL(${k}, ${
|
|
77
|
+
return `(NOT ARRAY_CONTAINS_ALL(${k}, ${(realValue as any[]).map((_, i) => `${v}__${i}`).join(", ")}))`
|
|
78
78
|
|
|
79
79
|
case "contains":
|
|
80
80
|
return `CONTAINS(${k}, ${v}, true)`
|
|
@@ -117,7 +117,7 @@ export function buildWhereCosmosQuery3(
|
|
|
117
117
|
|
|
118
118
|
let i = 0
|
|
119
119
|
|
|
120
|
-
const print = (state: readonly FilterResult[]) => {
|
|
120
|
+
const print = (state: readonly FilterResult[], values: any[]) => {
|
|
121
121
|
let s = ""
|
|
122
122
|
let l = 0
|
|
123
123
|
const printN = (n: number) => {
|
|
@@ -126,29 +126,29 @@ export function buildWhereCosmosQuery3(
|
|
|
126
126
|
for (const e of state) {
|
|
127
127
|
switch (e.t) {
|
|
128
128
|
case "where":
|
|
129
|
-
s += statement(e, i
|
|
129
|
+
s += statement(e, i++, values)
|
|
130
130
|
break
|
|
131
131
|
case "or":
|
|
132
|
-
s += ` OR ${statement(e, i
|
|
132
|
+
s += ` OR ${statement(e, i++, values)}`
|
|
133
133
|
break
|
|
134
134
|
case "and":
|
|
135
|
-
s += ` AND ${statement(e, i
|
|
135
|
+
s += ` AND ${statement(e, i++, values)}`
|
|
136
136
|
break
|
|
137
137
|
case "or-scope": {
|
|
138
138
|
++l
|
|
139
|
-
s += ` OR (\n${printN(l + 1)}${print(e.result)}\n${printN(l)})`
|
|
139
|
+
s += ` OR (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`
|
|
140
140
|
--l
|
|
141
141
|
break
|
|
142
142
|
}
|
|
143
143
|
case "and-scope": {
|
|
144
144
|
++l
|
|
145
|
-
s += ` AND (\n${printN(l + 1)}${print(e.result)}\n${printN(l)})`
|
|
145
|
+
s += ` AND (\n${printN(l + 1)}${print(e.result, values)}\n${printN(l)})`
|
|
146
146
|
--l
|
|
147
147
|
break
|
|
148
148
|
}
|
|
149
149
|
case "where-scope": {
|
|
150
150
|
// ;++l
|
|
151
|
-
s += `(\n${printN(l + 1)}${print(e.result)}\n)`
|
|
151
|
+
s += `(\n${printN(l + 1)}${print(e.result, values)}\n)`
|
|
152
152
|
// ;--l
|
|
153
153
|
break
|
|
154
154
|
}
|
|
@@ -201,16 +201,20 @@ export function buildWhereCosmosQuery3(
|
|
|
201
201
|
.join("\n")
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
-
WHERE f.id != @id ${filter.length ? `AND (${print(filter)})` : ""}
|
|
204
|
+
WHERE f.id != @id ${filter.length ? `AND (${print(filter, values.map((_) => _.value))})` : ""}
|
|
205
205
|
${order ? `ORDER BY ${order.map((_) => `f.${_.key} ${_.direction}`).join(", ")}` : ""}
|
|
206
206
|
${skip !== undefined || limit !== undefined ? `OFFSET ${skip ?? 0} LIMIT ${limit ?? 999999}` : ""}`,
|
|
207
207
|
parameters: [
|
|
208
208
|
{ name: "@id", value: importedMarkerId },
|
|
209
209
|
...values
|
|
210
|
-
.
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
210
|
+
.flatMap((x, i) =>
|
|
211
|
+
[{
|
|
212
|
+
name: `@v${i}`,
|
|
213
|
+
value: x.value as any
|
|
214
|
+
}]
|
|
215
|
+
// TODO: only for arrays that are used with _ANY or _ALL
|
|
216
|
+
.concat(Array.isArray(x.value) ? x.value.map((_, i2) => ({ name: `@v${i}__${i2}`, value: _ as any })) : [])
|
|
217
|
+
)
|
|
214
218
|
]
|
|
215
219
|
}
|
|
216
220
|
}
|