on-zero 0.0.95 → 0.0.96
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/dist/cjs/helpers/batchQuery.cjs +23 -22
- package/dist/cjs/helpers/batchQuery.js +19 -16
- package/dist/cjs/helpers/batchQuery.js.map +1 -1
- package/dist/cjs/helpers/batchQuery.native.js +20 -19
- package/dist/cjs/helpers/batchQuery.native.js.map +1 -1
- package/dist/esm/helpers/batchQuery.js +19 -16
- package/dist/esm/helpers/batchQuery.js.map +1 -1
- package/dist/esm/helpers/batchQuery.mjs +23 -22
- package/dist/esm/helpers/batchQuery.mjs.map +1 -1
- package/dist/esm/helpers/batchQuery.native.js +20 -19
- package/dist/esm/helpers/batchQuery.native.js.map +1 -1
- package/package.json +2 -2
- package/src/helpers/batchQuery.ts +46 -38
- package/types/helpers/batchQuery.d.ts +6 -2
- package/types/helpers/batchQuery.d.ts.map +1 -1
|
@@ -20,30 +20,31 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
|
20
20
|
}), mod);
|
|
21
21
|
var batchQuery_exports = {};
|
|
22
22
|
__export(batchQuery_exports, {
|
|
23
|
-
|
|
23
|
+
createBatchQuery: () => createBatchQuery
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(batchQuery_exports);
|
|
26
26
|
var import_helpers = require("@take-out/helpers");
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
27
|
+
function createBatchQuery(server) {
|
|
28
|
+
return async function (buildQuery, mapper, {
|
|
29
|
+
chunk,
|
|
30
|
+
pause = 0,
|
|
31
|
+
stopAfter = 1e5
|
|
32
|
+
} = {
|
|
33
|
+
chunk: 20
|
|
34
|
+
}) {
|
|
35
|
+
let hasMore = !0,
|
|
36
|
+
last = null,
|
|
37
|
+
iterations = 0;
|
|
38
|
+
for (; hasMore;) {
|
|
39
|
+
const results = await server.query(q => {
|
|
40
|
+
let query = buildQuery(q).limit(chunk);
|
|
41
|
+
return last && (query = query.start(last)), query;
|
|
42
|
+
});
|
|
43
|
+
if (await mapper(results), results.length < chunk && (hasMore = !1), iterations > stopAfter) {
|
|
44
|
+
console.error(`[batchQuery] \u203C\uFE0F stopping batch, ran ${stopAfter} chunks`);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
pause && (await (0, import_helpers.sleep)(pause));
|
|
46
48
|
}
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
+
};
|
|
49
50
|
}
|
|
@@ -14,25 +14,28 @@ var __export = (target, all) => {
|
|
|
14
14
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
|
|
15
15
|
var batchQuery_exports = {};
|
|
16
16
|
__export(batchQuery_exports, {
|
|
17
|
-
|
|
17
|
+
createBatchQuery: () => createBatchQuery
|
|
18
18
|
});
|
|
19
19
|
module.exports = __toCommonJS(batchQuery_exports);
|
|
20
20
|
var import_helpers = require("@take-out/helpers");
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
21
|
+
function createBatchQuery(server) {
|
|
22
|
+
return async function(buildQuery, mapper, {
|
|
23
|
+
chunk,
|
|
24
|
+
pause = 0,
|
|
25
|
+
stopAfter = 1e5
|
|
26
|
+
} = { chunk: 20 }) {
|
|
27
|
+
let hasMore = !0, last = null, iterations = 0;
|
|
28
|
+
for (; hasMore; ) {
|
|
29
|
+
const results = await server.query((q) => {
|
|
30
|
+
let query = buildQuery(q).limit(chunk);
|
|
31
|
+
return last && (query = query.start(last)), query;
|
|
32
|
+
});
|
|
33
|
+
if (await mapper(results), results.length < chunk && (hasMore = !1), iterations > stopAfter) {
|
|
34
|
+
console.error(`[batchQuery] \u203C\uFE0F stopping batch, ran ${stopAfter} chunks`);
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
pause && await (0, import_helpers.sleep)(pause);
|
|
34
38
|
}
|
|
35
|
-
|
|
36
|
-
}
|
|
39
|
+
};
|
|
37
40
|
}
|
|
38
41
|
//# sourceMappingURL=batchQuery.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/batchQuery.ts"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAsB;
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAsB;AAQf,SAAS,iBAAiB,QAAyB;AACxD,SAAO,eACL,YACA,QACA;AAAA,IACE;AAAA,IACA,QAAQ;AAAA,IACR,YAAY;AAAA,EACd,IAII,EAAE,OAAO,GAAG,GAChB;AACA,QAAI,UAAU,IACV,OAAoB,MACpB,aAAa;AAEjB,WAAO,WAAS;AACd,YAAM,UAAU,MAAM,OAAO,MAAM,CAAC,MAAW;AAC7C,YAAI,QAAQ,WAAW,CAAC,EAAE,MAAM,KAAK;AAErC,eAAI,SACF,QAAQ,MAAM,MAAM,IAAI,IAGnB;AAAA,MACT,CAAC;AAQD,UANA,MAAM,OAAO,OAAiB,GAE1B,QAAQ,SAAS,UACnB,UAAU,KAGR,aAAa,WAAW;AAC1B,gBAAQ,MAAM,iDAAuC,SAAS,SAAS;AACvE;AAAA,MACF;AAEA,MAAI,SACF,UAAM,sBAAM,KAAK;AAAA,IAErB;AAAA,EACF;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -22,28 +22,29 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
|
22
22
|
}), mod);
|
|
23
23
|
var batchQuery_exports = {};
|
|
24
24
|
__export(batchQuery_exports, {
|
|
25
|
-
|
|
25
|
+
createBatchQuery: () => createBatchQuery
|
|
26
26
|
});
|
|
27
27
|
module.exports = __toCommonJS(batchQuery_exports);
|
|
28
28
|
var import_helpers = require("@take-out/helpers");
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
29
|
+
function createBatchQuery(server) {
|
|
30
|
+
return async function (buildQuery, mapper) {
|
|
31
|
+
for (var {
|
|
32
|
+
chunk,
|
|
33
|
+
pause = 0,
|
|
34
|
+
stopAfter = 1e5
|
|
35
|
+
} = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
|
|
36
|
+
chunk: 20
|
|
37
|
+
}, hasMore = !0, last = null, iterations = 0; hasMore;) {
|
|
38
|
+
var results = await server.query(function (q) {
|
|
39
|
+
var query = buildQuery(q).limit(chunk);
|
|
40
|
+
return last && (query = query.start(last)), query;
|
|
41
|
+
});
|
|
42
|
+
if (await mapper(results), results.length < chunk && (hasMore = !1), iterations > stopAfter) {
|
|
43
|
+
console.error(`[batchQuery] \u203C\uFE0F stopping batch, ran ${stopAfter} chunks`);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
pause && (await (0, import_helpers.sleep)(pause));
|
|
45
47
|
}
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
+
};
|
|
48
49
|
}
|
|
49
50
|
//# sourceMappingURL=batchQuery.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","batchQuery_exports","__export","
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","batchQuery_exports","__export","createBatchQuery","module","exports","import_helpers","require","server","buildQuery","mapper","chunk","pause","stopAfter","arguments","length","hasMore","last","iterations","results","query","q","limit","start","console","error","sleep"],"sources":["../../../src/helpers/batchQuery.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,kBAAA;AAAAC,QAAA,CAAAD,kBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAT,YAAsB,CAAAK,kBAAA;AAQf,IAAAK,cAAS,GAAAC,OAAiB,oBAAyB;AACxD,SAAOJ,gBACLA,CAAAK,MAAA;EAEA,OACE,gBAAAC,UAAA,EAAAC,MAAA;IACA,SAAQ;QAAAC,KAAA;QAAAC,KAAA;QAAAC,SAAA;MAAA,IAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;QACRH,KAAA;MACF,GAIIK,OAAE,GAAO,CAAG,GAChBC,IAAA,SAAAC,UAAA,MAAAF,OAAA;MACA,IAAIG,OAAA,GAAU,MACVX,MAAoB,CAAAY,KACpB,WAAaC,CAAA;QAEjB,IAAOD,KAAA,GAAAX,UAAS,CAAAY,CAAA,EAAAC,KAAA,CAAAX,KAAA;QACd,OAAMM,IAAA,KAAUG,KAAM,GAAAA,KAAO,CAAAG,KAAO,CAAAN,IAAW,IAAAG,KAAA;MAC7C;MAEA,UAAIV,MAAA,CAAAS,OACF,GAAQA,OAAM,CAAAJ,MAAM,GAAIJ,KAGnB,KAAAK,OAAA,QAAAE,UAAA,GAAAL,SAAA;QACRW,OAAA,CAAAC,KAAA,kDAAAZ,SAAA;QAQD;MACE;MACAD,KAAA,eAAAN,cAAA,CAAAoB,KAAA,EAAAd,KAAA;IAAA;EAGF;AACmB","ignoreList":[]}
|
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
import { sleep } from "@take-out/helpers";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
function createBatchQuery(server) {
|
|
3
|
+
return async function(buildQuery, mapper, {
|
|
4
|
+
chunk,
|
|
5
|
+
pause = 0,
|
|
6
|
+
stopAfter = 1e5
|
|
7
|
+
} = { chunk: 20 }) {
|
|
8
|
+
let hasMore = !0, last = null, iterations = 0;
|
|
9
|
+
for (; hasMore; ) {
|
|
10
|
+
const results = await server.query((q) => {
|
|
11
|
+
let query = buildQuery(q).limit(chunk);
|
|
12
|
+
return last && (query = query.start(last)), query;
|
|
13
|
+
});
|
|
14
|
+
if (await mapper(results), results.length < chunk && (hasMore = !1), iterations > stopAfter) {
|
|
15
|
+
console.error(`[batchQuery] \u203C\uFE0F stopping batch, ran ${stopAfter} chunks`);
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
pause && await sleep(pause);
|
|
15
19
|
}
|
|
16
|
-
|
|
17
|
-
}
|
|
20
|
+
};
|
|
18
21
|
}
|
|
19
22
|
export {
|
|
20
|
-
|
|
23
|
+
createBatchQuery
|
|
21
24
|
};
|
|
22
25
|
//# sourceMappingURL=batchQuery.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/helpers/batchQuery.ts"],
|
|
4
|
-
"mappings": "AAAA,SAAS,aAAa;
|
|
4
|
+
"mappings": "AAAA,SAAS,aAAa;AAQf,SAAS,iBAAiB,QAAyB;AACxD,SAAO,eACL,YACA,QACA;AAAA,IACE;AAAA,IACA,QAAQ;AAAA,IACR,YAAY;AAAA,EACd,IAII,EAAE,OAAO,GAAG,GAChB;AACA,QAAI,UAAU,IACV,OAAoB,MACpB,aAAa;AAEjB,WAAO,WAAS;AACd,YAAM,UAAU,MAAM,OAAO,MAAM,CAAC,MAAW;AAC7C,YAAI,QAAQ,WAAW,CAAC,EAAE,MAAM,KAAK;AAErC,eAAI,SACF,QAAQ,MAAM,MAAM,IAAI,IAGnB;AAAA,MACT,CAAC;AAQD,UANA,MAAM,OAAO,OAAiB,GAE1B,QAAQ,SAAS,UACnB,UAAU,KAGR,aAAa,WAAW;AAC1B,gBAAQ,MAAM,iDAAuC,SAAS,SAAS;AACvE;AAAA,MACF;AAEA,MAAI,SACF,MAAM,MAAM,KAAK;AAAA,IAErB;AAAA,EACF;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import { sleep } from "@take-out/helpers";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
2
|
+
function createBatchQuery(server) {
|
|
3
|
+
return async function (buildQuery, mapper, {
|
|
4
|
+
chunk,
|
|
5
|
+
pause = 0,
|
|
6
|
+
stopAfter = 1e5
|
|
7
|
+
} = {
|
|
8
|
+
chunk: 20
|
|
9
|
+
}) {
|
|
10
|
+
let hasMore = !0,
|
|
11
|
+
last = null,
|
|
12
|
+
iterations = 0;
|
|
13
|
+
for (; hasMore;) {
|
|
14
|
+
const results = await server.query(q => {
|
|
15
|
+
let query = buildQuery(q).limit(chunk);
|
|
16
|
+
return last && (query = query.start(last)), query;
|
|
17
|
+
});
|
|
18
|
+
if (await mapper(results), results.length < chunk && (hasMore = !1), iterations > stopAfter) {
|
|
19
|
+
console.error(`[batchQuery] \u203C\uFE0F stopping batch, ran ${stopAfter} chunks`);
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
pause && (await sleep(pause));
|
|
21
23
|
}
|
|
22
|
-
|
|
23
|
-
}
|
|
24
|
+
};
|
|
24
25
|
}
|
|
25
|
-
export {
|
|
26
|
+
export { createBatchQuery };
|
|
26
27
|
//# sourceMappingURL=batchQuery.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sleep","
|
|
1
|
+
{"version":3,"names":["sleep","createBatchQuery","server","buildQuery","mapper","chunk","pause","stopAfter","hasMore","last","iterations","results","query","q","limit","start","length","console","error"],"sources":["../../../src/helpers/batchQuery.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAA,QAAa;AAQf,SAASC,iBAAiBC,MAAA,EAAyB;EACxD,OAAO,gBACLC,UAAA,EACAC,MAAA,EACA;IACEC,KAAA;IACAC,KAAA,GAAQ;IACRC,SAAA,GAAY;EACd,IAII;IAAEF,KAAA,EAAO;EAAG,GAChB;IACA,IAAIG,OAAA,GAAU;MACVC,IAAA,GAAoB;MACpBC,UAAA,GAAa;IAEjB,OAAOF,OAAA,GAAS;MACd,MAAMG,OAAA,GAAU,MAAMT,MAAA,CAAOU,KAAA,CAAOC,CAAA,IAAW;QAC7C,IAAID,KAAA,GAAQT,UAAA,CAAWU,CAAC,EAAEC,KAAA,CAAMT,KAAK;QAErC,OAAII,IAAA,KACFG,KAAA,GAAQA,KAAA,CAAMG,KAAA,CAAMN,IAAI,IAGnBG,KAAA;MACT,CAAC;MAQD,IANA,MAAMR,MAAA,CAAOO,OAAiB,GAE1BA,OAAA,CAAQK,MAAA,GAASX,KAAA,KACnBG,OAAA,GAAU,KAGRE,UAAA,GAAaH,SAAA,EAAW;QAC1BU,OAAA,CAAQC,KAAA,CAAM,iDAAuCX,SAAS,SAAS;QACvE;MACF;MAEID,KAAA,KACF,MAAMN,KAAA,CAAMM,KAAK;IAErB;EACF;AACF","ignoreList":[]}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { sleep } from "@take-out/helpers";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
2
|
+
function createBatchQuery(server) {
|
|
3
|
+
return async function (buildQuery, mapper) {
|
|
4
|
+
for (var {
|
|
5
|
+
chunk,
|
|
6
|
+
pause = 0,
|
|
7
|
+
stopAfter = 1e5
|
|
8
|
+
} = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
|
|
9
|
+
chunk: 20
|
|
10
|
+
}, hasMore = !0, last = null, iterations = 0; hasMore;) {
|
|
11
|
+
var results = await server.query(function (q) {
|
|
12
|
+
var query = buildQuery(q).limit(chunk);
|
|
13
|
+
return last && (query = query.start(last)), query;
|
|
14
|
+
});
|
|
15
|
+
if (await mapper(results), results.length < chunk && (hasMore = !1), iterations > stopAfter) {
|
|
16
|
+
console.error(`[batchQuery] \u203C\uFE0F stopping batch, ran ${stopAfter} chunks`);
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
pause && (await sleep(pause));
|
|
18
20
|
}
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
+
};
|
|
21
22
|
}
|
|
22
|
-
export {
|
|
23
|
+
export { createBatchQuery };
|
|
23
24
|
//# sourceMappingURL=batchQuery.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["sleep","
|
|
1
|
+
{"version":3,"names":["sleep","createBatchQuery","server","buildQuery","mapper","chunk","pause","stopAfter","arguments","length","hasMore","last","iterations","results","query","q","limit","start","console","error"],"sources":["../../../src/helpers/batchQuery.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,KAAA,QAAa;AAQf,SAASC,iBAAiBC,MAAA,EAAyB;EACxD,OAAO,gBACLC,UAAA,EACAC,MAAA,EACA;IACE;QAAAC,KAAA;QAAAC,KAAA;QAAAC,SAAA;MAAA,IAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;QACAH,KAAA,EAAQ;MACR,GAAAK,OAAA,GAAY,IAAAC,IAAA,SAAAC,UAAA,MAAAF,OAAA;MAKV,IAAEG,OAAO,GAAG,MAChBX,MAAA,CAAAY,KAAA,WAAAC,CAAA;QACI,IAAAD,KAAA,GAAUX,UACU,CAAAY,CAAA,EAAAC,KACpB,CAAAX,KAAA;QAEJ,OAAOM,IAAA,KAASG,KAAA,GAAAA,KAAA,CAAAG,KAAA,CAAAN,IAAA,IAAAG,KAAA;MACd;MACE,UAAIV,MAAQ,CAAAS,OAAA,CAAW,EAACA,OAAQ,CAAAJ,MAAK,GAAAJ,KAAA,KAAAK,OAAA,QAAAE,UAAA,GAAAL,SAAA;QAErCW,OAAI,CAAAC,KAAA,kDAIGZ,SAAA;QACR;MAQD;MACED,KAAA,WAAQN,KAAM,CAAAM,KAAA;IACd;EAAA;AAGF;AACmB,SAGvBL,gBAAA","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "on-zero",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.96",
|
|
4
4
|
"description": "A typed layer over @rocicorp/zero with queries, mutations, and permissions",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"source": "src/index.ts",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
"dependencies": {
|
|
67
|
-
"@take-out/helpers": "0.0.
|
|
67
|
+
"@take-out/helpers": "0.0.96",
|
|
68
68
|
"@sinclair/typebox-codegen": "^0.11.1",
|
|
69
69
|
"chokidar": "^4.0.3",
|
|
70
70
|
"citty": "^0.1.6",
|
|
@@ -2,45 +2,53 @@ import { sleep } from '@take-out/helpers'
|
|
|
2
2
|
|
|
3
3
|
import type { Query, Row } from '@rocicorp/zero'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
q:
|
|
7
|
-
|
|
8
|
-
{
|
|
9
|
-
chunk,
|
|
10
|
-
pause = 0,
|
|
11
|
-
stopAfter = 100_000,
|
|
12
|
-
}: {
|
|
13
|
-
chunk: number
|
|
14
|
-
pause?: number
|
|
15
|
-
stopAfter?: number
|
|
16
|
-
} = { chunk: 20 }
|
|
17
|
-
) {
|
|
18
|
-
let hasMore = true
|
|
19
|
-
let last: Item | null = null
|
|
20
|
-
let iterations = 0
|
|
21
|
-
|
|
22
|
-
while (hasMore) {
|
|
23
|
-
let query = q.limit(chunk)
|
|
24
|
-
|
|
25
|
-
if (last) {
|
|
26
|
-
query = query.start(last)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const results = await query.run({ type: 'complete' })
|
|
30
|
-
|
|
31
|
-
await mapper(results as Item[])
|
|
32
|
-
|
|
33
|
-
if (results.length < chunk) {
|
|
34
|
-
hasMore = false
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
if (iterations > stopAfter) {
|
|
38
|
-
console.error(`[batchQuery] ‼️ stopping batch, ran ${stopAfter} chunks`)
|
|
39
|
-
break
|
|
40
|
-
}
|
|
5
|
+
type ServerWithQuery = {
|
|
6
|
+
query: (cb: (q: any) => any) => Promise<any>
|
|
7
|
+
}
|
|
41
8
|
|
|
42
|
-
|
|
43
|
-
|
|
9
|
+
export function createBatchQuery(server: ServerWithQuery) {
|
|
10
|
+
return async function batchQuery<Q extends Query<any, any, any>, Item extends Row<Q>>(
|
|
11
|
+
buildQuery: (q: any) => Q,
|
|
12
|
+
mapper: (items: Item[]) => Promise<void>,
|
|
13
|
+
{
|
|
14
|
+
chunk,
|
|
15
|
+
pause = 0,
|
|
16
|
+
stopAfter = 100_000,
|
|
17
|
+
}: {
|
|
18
|
+
chunk: number
|
|
19
|
+
pause?: number
|
|
20
|
+
stopAfter?: number
|
|
21
|
+
} = { chunk: 20 }
|
|
22
|
+
) {
|
|
23
|
+
let hasMore = true
|
|
24
|
+
let last: Item | null = null
|
|
25
|
+
let iterations = 0
|
|
26
|
+
|
|
27
|
+
while (hasMore) {
|
|
28
|
+
const results = await server.query((q: any) => {
|
|
29
|
+
let query = buildQuery(q).limit(chunk)
|
|
30
|
+
|
|
31
|
+
if (last) {
|
|
32
|
+
query = query.start(last)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return query
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
await mapper(results as Item[])
|
|
39
|
+
|
|
40
|
+
if (results.length < chunk) {
|
|
41
|
+
hasMore = false
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (iterations > stopAfter) {
|
|
45
|
+
console.error(`[batchQuery] ‼️ stopping batch, ran ${stopAfter} chunks`)
|
|
46
|
+
break
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (pause) {
|
|
50
|
+
await sleep(pause)
|
|
51
|
+
}
|
|
44
52
|
}
|
|
45
53
|
}
|
|
46
54
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { Query, Row } from '@rocicorp/zero';
|
|
2
|
-
|
|
2
|
+
type ServerWithQuery = {
|
|
3
|
+
query: (cb: (q: any) => any) => Promise<any>;
|
|
4
|
+
};
|
|
5
|
+
export declare function createBatchQuery(server: ServerWithQuery): <Q extends Query<any, any, any>, Item extends Row<Q>>(buildQuery: (q: any) => Q, mapper: (items: Item[]) => Promise<void>, { chunk, pause, stopAfter, }?: {
|
|
3
6
|
chunk: number;
|
|
4
7
|
pause?: number;
|
|
5
8
|
stopAfter?: number;
|
|
6
|
-
})
|
|
9
|
+
}) => Promise<void>;
|
|
10
|
+
export {};
|
|
7
11
|
//# sourceMappingURL=batchQuery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchQuery.d.ts","sourceRoot":"","sources":["../../src/helpers/batchQuery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEhD,
|
|
1
|
+
{"version":3,"file":"batchQuery.d.ts","sourceRoot":"","sources":["../../src/helpers/batchQuery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AAEhD,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CAC7C,CAAA;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,IACrB,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC,EAClF,YAAY,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,EACzB,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,EACxC,+BAIG;IACD,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACH,mBAiCpB"}
|