@peerbit/indexer-simple 1.0.4-88f45c3 → 1.0.4-a3e5123
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/src/index.d.ts +7 -11
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +68 -97
- package/dist/src/index.js.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +98 -136
package/dist/src/index.d.ts
CHANGED
|
@@ -1,32 +1,28 @@
|
|
|
1
1
|
import * as types from "@peerbit/indexer-interface";
|
|
2
2
|
export declare class HashmapIndex<T extends Record<string, any>, NestedType = any> implements types.Index<T, NestedType> {
|
|
3
3
|
private _index;
|
|
4
|
-
private _resultsCollectQueue;
|
|
5
4
|
private indexByArr;
|
|
6
5
|
private properties;
|
|
7
6
|
init(properties: types.IndexEngineInitProperties<T, NestedType>): this;
|
|
8
7
|
get(id: types.IdKey): Promise<types.IndexedResult<T> | undefined>;
|
|
9
8
|
put(value: T, id?: types.IdKey): void;
|
|
10
|
-
del(query: types.
|
|
9
|
+
del(query: types.DeleteOptions): Promise<types.IdKey[]>;
|
|
11
10
|
getSize(): number | Promise<number>;
|
|
12
|
-
iterator():
|
|
11
|
+
iterator(): MapIterator<[string | number | bigint, types.IndexedValue<T>]>;
|
|
13
12
|
start(): void | Promise<void>;
|
|
14
13
|
stop(): void | Promise<void>;
|
|
15
14
|
drop(): void;
|
|
16
|
-
sum(query: types.
|
|
17
|
-
count(query: types.
|
|
15
|
+
sum(query: types.SumOptions): Promise<number | bigint>;
|
|
16
|
+
count(query: types.CountOptions): Promise<number>;
|
|
18
17
|
private queryAll;
|
|
19
|
-
|
|
18
|
+
iterate<S extends types.Shape | undefined>(query: types.IterateOptions, properties: {
|
|
19
|
+
shape?: S;
|
|
20
20
|
reference?: boolean;
|
|
21
|
-
}):
|
|
22
|
-
next(query: types.CollectNextRequest): Promise<types.IndexedResults<T>>;
|
|
23
|
-
close(query: types.CloseIteratorRequest): void;
|
|
21
|
+
}): types.IndexIterator<T, S>;
|
|
24
22
|
private handleFieldQuery;
|
|
25
23
|
private handleQueryObject;
|
|
26
24
|
private handleStringMatch;
|
|
27
25
|
private _queryDocuments;
|
|
28
|
-
getPending(cursorId: string): number | undefined;
|
|
29
|
-
get cursorCount(): number;
|
|
30
26
|
}
|
|
31
27
|
export declare class HashmapIndices implements types.Indices {
|
|
32
28
|
private scopes;
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AAmCpD,qBAAa,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,GAAG,CACxE,YAAW,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC;IAErC,OAAO,CAAC,MAAM,CAAwD;IAEtE,OAAO,CAAC,UAAU,CAAY;IAC9B,OAAO,CAAC,UAAU,CAAkD;IAEpE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,UAAU,CAAC;IAsBzD,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAWvE,GAAG,CACF,KAAK,EAAE,CAAC,EACR,EAAE,cAA8D,GAC9D,IAAI;IAID,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAU7D,OAAO,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAInC,QAAQ;IAKR,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7B,IAAI,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAE5B,IAAI;IAeE,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAoBtD,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;YAIzC,QAAQ;IAyCtB,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,KAAK,GAAG,SAAS,EACxC,KAAK,EAAE,KAAK,CAAC,cAAc,EAC3B,UAAU,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC5C,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;YAoFd,gBAAgB;YAyFhB,iBAAiB;IAwD/B,OAAO,CAAC,iBAAiB;YAmBX,eAAe;CAY7B;AAED,qBAAa,cAAe,YAAW,KAAK,CAAC,OAAO;IACnD,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,OAAO,CAAwD;IACvE,OAAO,CAAC,MAAM,CAAU;;IAMlB,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,UAAU,EACnD,UAAU,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,GAAG,CAAC;IAmB9C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;IAY3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAW3B;AAED,QAAA,MAAM,MAAM,sBAA6B,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { deserialize, serialize } from "@dao-xyz/borsh";
|
|
2
|
-
import { Cache } from "@peerbit/cache";
|
|
3
2
|
import * as types from "@peerbit/indexer-interface";
|
|
4
3
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
5
4
|
import { equals } from "uint8arrays";
|
|
@@ -20,53 +19,18 @@ const getBatchFromResults = (results, wantedSize) => {
|
|
|
20
19
|
results.splice(0, batch.length);
|
|
21
20
|
return batch;
|
|
22
21
|
};
|
|
23
|
-
/* const resolveNestedAliasesRecursively = (request: types.SearchRequest) => {
|
|
24
|
-
const map = new Map();
|
|
25
|
-
for (const query of request.query) {
|
|
26
|
-
_resolveNestedAliasesRecursively(query, map);
|
|
27
|
-
}
|
|
28
|
-
return map;
|
|
29
|
-
}
|
|
30
|
-
*/
|
|
31
22
|
const cloneResults = (indexed, schema) => {
|
|
32
23
|
return indexed.map((x) => {
|
|
33
24
|
return { id: x.id, value: deserialize(serialize(x.value), schema) };
|
|
34
25
|
});
|
|
35
26
|
};
|
|
36
|
-
/*
|
|
37
|
-
const _resolveNestedAliasesRecursively = (query: types.Query, aliases: Map<string, string>) => {
|
|
38
|
-
|
|
39
|
-
if (query instanceof types.Nested) {
|
|
40
|
-
aliases.set(query.id, query.path);
|
|
41
|
-
for (const subQuery of query.query) {
|
|
42
|
-
_resolveNestedAliasesRecursively(subQuery, aliases);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
else if (query instanceof types.And) {
|
|
46
|
-
for (const subQuery of query.and) {
|
|
47
|
-
_resolveNestedAliasesRecursively(subQuery, aliases);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
else if (query instanceof types.Or) {
|
|
51
|
-
for (const subQuery of query.or) {
|
|
52
|
-
_resolveNestedAliasesRecursively(subQuery, aliases);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else if (query instanceof types.Not) {
|
|
56
|
-
_resolveNestedAliasesRecursively(query.not, aliases);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
*/
|
|
61
27
|
export class HashmapIndex {
|
|
62
28
|
_index;
|
|
63
|
-
_resultsCollectQueue;
|
|
64
29
|
indexByArr;
|
|
65
30
|
properties;
|
|
66
31
|
init(properties) {
|
|
67
32
|
this.properties = properties;
|
|
68
33
|
this._index = new Map();
|
|
69
|
-
this._resultsCollectQueue = new Cache({ max: 10000 }); // TODO choose limit better
|
|
70
34
|
if (properties.indexBy) {
|
|
71
35
|
this.indexByArr = Array.isArray(properties.indexBy)
|
|
72
36
|
? properties.indexBy
|
|
@@ -113,12 +77,9 @@ export class HashmapIndex {
|
|
|
113
77
|
start() {
|
|
114
78
|
// nothing to do
|
|
115
79
|
}
|
|
116
|
-
stop() {
|
|
117
|
-
this._resultsCollectQueue.clear();
|
|
118
|
-
}
|
|
80
|
+
stop() { }
|
|
119
81
|
drop() {
|
|
120
82
|
this._index.clear();
|
|
121
|
-
this._resultsCollectQueue.clear();
|
|
122
83
|
/* for (const subindex of this.subIndices) {
|
|
123
84
|
subindex[1].clear()
|
|
124
85
|
} */
|
|
@@ -134,7 +95,7 @@ export class HashmapIndex {
|
|
|
134
95
|
let sum = undefined;
|
|
135
96
|
outer: for (const doc of await this.queryAll(query)) {
|
|
136
97
|
let value = doc.value;
|
|
137
|
-
for (const path of query.key) {
|
|
98
|
+
for (const path of Array.isArray(query.key) ? query.key : [query.key]) {
|
|
138
99
|
value = value[path];
|
|
139
100
|
if (!value) {
|
|
140
101
|
continue outer;
|
|
@@ -153,11 +114,12 @@ export class HashmapIndex {
|
|
|
153
114
|
return (await this.queryAll(query)).length;
|
|
154
115
|
}
|
|
155
116
|
async queryAll(query) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
117
|
+
const queryCoerced = types.toQuery(query?.query);
|
|
118
|
+
if (queryCoerced.length === 1 &&
|
|
119
|
+
(queryCoerced[0] instanceof types.ByteMatchQuery ||
|
|
120
|
+
queryCoerced[0] instanceof types.StringMatch) &&
|
|
121
|
+
types.stringArraysEquals(queryCoerced[0].key, this.indexByArr)) {
|
|
122
|
+
const firstQuery = queryCoerced[0];
|
|
161
123
|
if (firstQuery instanceof types.ByteMatchQuery) {
|
|
162
124
|
const doc = this._index.get(types.toId(firstQuery.value).primitive);
|
|
163
125
|
return doc ? [doc] : [];
|
|
@@ -171,7 +133,7 @@ export class HashmapIndex {
|
|
|
171
133
|
}
|
|
172
134
|
// Handle query normally
|
|
173
135
|
const indexedDocuments = await this._queryDocuments(async (doc) => {
|
|
174
|
-
for (const f of
|
|
136
|
+
for (const f of queryCoerced) {
|
|
175
137
|
if (!(await this.handleQueryObject(f, doc.value))) {
|
|
176
138
|
return false;
|
|
177
139
|
}
|
|
@@ -180,55 +142,68 @@ export class HashmapIndex {
|
|
|
180
142
|
});
|
|
181
143
|
return indexedDocuments;
|
|
182
144
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
145
|
+
iterate(query, properties) {
|
|
146
|
+
let done = undefined;
|
|
147
|
+
let queue = undefined;
|
|
148
|
+
const fetch = async (n) => {
|
|
149
|
+
if (!queue && !done) {
|
|
150
|
+
const indexedDocuments = await this.queryAll(query);
|
|
151
|
+
if (indexedDocuments.length > 1) {
|
|
152
|
+
// Sort
|
|
153
|
+
if (query.sort) {
|
|
154
|
+
const sortArr = Array.isArray(query.sort)
|
|
155
|
+
? query.sort
|
|
156
|
+
: [query.sort];
|
|
157
|
+
sortArr.length > 0 &&
|
|
158
|
+
indexedDocuments.sort((a, b) => types.extractSortCompare(a.value, b.value, sortArr));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (indexedDocuments.length > 0) {
|
|
162
|
+
queue = {
|
|
163
|
+
arr: indexedDocuments,
|
|
164
|
+
reference: properties?.reference,
|
|
165
|
+
}; // cache resulst not returned
|
|
166
|
+
done = false;
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
done = true;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (queue && queue.arr.length <= n) {
|
|
173
|
+
done = true;
|
|
174
|
+
}
|
|
175
|
+
if (!queue) {
|
|
176
|
+
return [];
|
|
177
|
+
}
|
|
178
|
+
const batch = getBatchFromResults(queue.arr, n);
|
|
179
|
+
return (queue.reference ? batch : cloneResults(batch, this.properties.schema));
|
|
180
|
+
};
|
|
201
181
|
// TODO dont leak kept if canRead is defined, or return something random
|
|
202
|
-
return {
|
|
182
|
+
/* return {
|
|
203
183
|
kept: indexedDocuments.length,
|
|
204
|
-
results: properties?.reference
|
|
184
|
+
results: (properties?.reference
|
|
205
185
|
? batch
|
|
206
|
-
: cloneResults(batch, this.properties.schema),
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
async next(query) {
|
|
210
|
-
const results = this._resultsCollectQueue.get(query.idString);
|
|
211
|
-
if (!results) {
|
|
212
|
-
return {
|
|
213
|
-
results: [],
|
|
214
|
-
kept: 0,
|
|
215
|
-
};
|
|
216
|
-
}
|
|
217
|
-
const batch = getBatchFromResults(results.arr, query.amount);
|
|
218
|
-
if (results.arr.length === 0) {
|
|
219
|
-
this._resultsCollectQueue.del(query.idString); // TODO add tests for proper cleanup/timeouts
|
|
220
|
-
}
|
|
221
|
-
// TODO dont leak kept if canRead is defined, or return something random
|
|
186
|
+
: cloneResults(batch, this.properties.schema)) as any, // TODO fix this type,
|
|
187
|
+
}; */
|
|
222
188
|
return {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
189
|
+
all: async () => {
|
|
190
|
+
const results = await fetch(Infinity);
|
|
191
|
+
return results;
|
|
192
|
+
},
|
|
193
|
+
next: (n) => fetch(n),
|
|
194
|
+
done: () => done,
|
|
195
|
+
pending: async () => {
|
|
196
|
+
if (done == null) {
|
|
197
|
+
await fetch(0);
|
|
198
|
+
}
|
|
199
|
+
return done ? 0 : (queue?.arr.length ?? 0);
|
|
200
|
+
},
|
|
201
|
+
close: () => {
|
|
202
|
+
done = true;
|
|
203
|
+
queue = undefined;
|
|
204
|
+
},
|
|
227
205
|
};
|
|
228
206
|
}
|
|
229
|
-
close(query) {
|
|
230
|
-
this._resultsCollectQueue.del(query.idString);
|
|
231
|
-
}
|
|
232
207
|
async handleFieldQuery(f, obj, startIndex) {
|
|
233
208
|
// this clause is needed if we have a field that is of type [][] (we will recursively go through each subarray)
|
|
234
209
|
if (Array.isArray(obj) ||
|
|
@@ -257,7 +232,9 @@ export class HashmapIndex {
|
|
|
257
232
|
if (this.properties.nested?.match(obj)) {
|
|
258
233
|
const queryCloned = f.clone();
|
|
259
234
|
queryCloned.key.splice(0, i + 1); // remove key path until the document store
|
|
260
|
-
const results = await this.properties.nested.
|
|
235
|
+
const results = await this.properties.nested.iterate(obj, {
|
|
236
|
+
query: [queryCloned],
|
|
237
|
+
});
|
|
261
238
|
return results.length > 0 ? true : false; // TODO return INNER HITS?
|
|
262
239
|
}
|
|
263
240
|
}
|
|
@@ -383,12 +360,6 @@ export class HashmapIndex {
|
|
|
383
360
|
}
|
|
384
361
|
return results;
|
|
385
362
|
}
|
|
386
|
-
getPending(cursorId) {
|
|
387
|
-
return this._resultsCollectQueue.get(cursorId)?.arr.length;
|
|
388
|
-
}
|
|
389
|
-
get cursorCount() {
|
|
390
|
-
return this._resultsCollectQueue.size;
|
|
391
|
-
}
|
|
392
363
|
}
|
|
393
364
|
export class HashmapIndices {
|
|
394
365
|
scopes;
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/indexer-simple",
|
|
3
|
-
"version": "1.0.4-
|
|
3
|
+
"version": "1.0.4-a3e5123",
|
|
4
4
|
"description": "Simple in memory index for document store",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
"author": "dao.xyz",
|
|
59
59
|
"license": "MIT",
|
|
60
60
|
"dependencies": {
|
|
61
|
-
"@peerbit/indexer-interface": "1.0.3-
|
|
61
|
+
"@peerbit/indexer-interface": "1.0.3-a3e5123"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
|
-
"@peerbit/indexer-tests": "1.0.4-
|
|
64
|
+
"@peerbit/indexer-tests": "1.0.4-a3e5123"
|
|
65
65
|
}
|
|
66
66
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { deserialize, serialize } from "@dao-xyz/borsh";
|
|
2
|
-
import { Cache } from "@peerbit/cache";
|
|
3
2
|
import * as types from "@peerbit/indexer-interface";
|
|
4
3
|
import { logger as loggerFn } from "@peerbit/logger";
|
|
5
4
|
import { equals } from "uint8arrays";
|
|
@@ -26,15 +25,6 @@ const getBatchFromResults = <T extends Record<string, any>>(
|
|
|
26
25
|
results.splice(0, batch.length);
|
|
27
26
|
return batch;
|
|
28
27
|
};
|
|
29
|
-
|
|
30
|
-
/* const resolveNestedAliasesRecursively = (request: types.SearchRequest) => {
|
|
31
|
-
const map = new Map();
|
|
32
|
-
for (const query of request.query) {
|
|
33
|
-
_resolveNestedAliasesRecursively(query, map);
|
|
34
|
-
}
|
|
35
|
-
return map;
|
|
36
|
-
}
|
|
37
|
-
*/
|
|
38
28
|
const cloneResults = <T>(
|
|
39
29
|
indexed: types.IndexedValue<T>[],
|
|
40
30
|
schema: any,
|
|
@@ -43,48 +33,18 @@ const cloneResults = <T>(
|
|
|
43
33
|
return { id: x.id, value: deserialize(serialize(x.value), schema) };
|
|
44
34
|
});
|
|
45
35
|
};
|
|
46
|
-
/*
|
|
47
|
-
const _resolveNestedAliasesRecursively = (query: types.Query, aliases: Map<string, string>) => {
|
|
48
|
-
|
|
49
|
-
if (query instanceof types.Nested) {
|
|
50
|
-
aliases.set(query.id, query.path);
|
|
51
|
-
for (const subQuery of query.query) {
|
|
52
|
-
_resolveNestedAliasesRecursively(subQuery, aliases);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
else if (query instanceof types.And) {
|
|
56
|
-
for (const subQuery of query.and) {
|
|
57
|
-
_resolveNestedAliasesRecursively(subQuery, aliases);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
else if (query instanceof types.Or) {
|
|
61
|
-
for (const subQuery of query.or) {
|
|
62
|
-
_resolveNestedAliasesRecursively(subQuery, aliases);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
else if (query instanceof types.Not) {
|
|
66
|
-
_resolveNestedAliasesRecursively(query.not, aliases);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
*/
|
|
71
36
|
|
|
72
37
|
export class HashmapIndex<T extends Record<string, any>, NestedType = any>
|
|
73
38
|
implements types.Index<T, NestedType>
|
|
74
39
|
{
|
|
75
|
-
private _index
|
|
76
|
-
private _resultsCollectQueue: Cache<{
|
|
77
|
-
arr: types.IndexedValue<T>[];
|
|
78
|
-
reference: boolean | undefined;
|
|
79
|
-
}>;
|
|
40
|
+
private _index!: Map<string | bigint | number, types.IndexedValue<T>>;
|
|
80
41
|
|
|
81
|
-
private indexByArr
|
|
82
|
-
private properties
|
|
42
|
+
private indexByArr!: string[];
|
|
43
|
+
private properties!: types.IndexEngineInitProperties<T, NestedType>;
|
|
83
44
|
|
|
84
45
|
init(properties: types.IndexEngineInitProperties<T, NestedType>) {
|
|
85
46
|
this.properties = properties;
|
|
86
47
|
this._index = new Map();
|
|
87
|
-
this._resultsCollectQueue = new Cache({ max: 10000 }); // TODO choose limit better
|
|
88
48
|
if (properties.indexBy) {
|
|
89
49
|
this.indexByArr = Array.isArray(properties.indexBy)
|
|
90
50
|
? properties.indexBy
|
|
@@ -122,7 +82,7 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
|
|
|
122
82
|
this._index.set(id.primitive, { id, value });
|
|
123
83
|
}
|
|
124
84
|
|
|
125
|
-
async del(query: types.
|
|
85
|
+
async del(query: types.DeleteOptions): Promise<types.IdKey[]> {
|
|
126
86
|
let deleted: types.IdKey[] = [];
|
|
127
87
|
for (const doc of await this.queryAll(query)) {
|
|
128
88
|
if (this._index.delete(doc.id.primitive)) {
|
|
@@ -145,13 +105,10 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
|
|
|
145
105
|
// nothing to do
|
|
146
106
|
}
|
|
147
107
|
|
|
148
|
-
stop(): void | Promise<void> {
|
|
149
|
-
this._resultsCollectQueue.clear();
|
|
150
|
-
}
|
|
108
|
+
stop(): void | Promise<void> {}
|
|
151
109
|
|
|
152
110
|
drop() {
|
|
153
111
|
this._index.clear();
|
|
154
|
-
this._resultsCollectQueue.clear();
|
|
155
112
|
/* for (const subindex of this.subIndices) {
|
|
156
113
|
subindex[1].clear()
|
|
157
114
|
} */
|
|
@@ -165,11 +122,11 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
|
|
|
165
122
|
}
|
|
166
123
|
*/
|
|
167
124
|
|
|
168
|
-
async sum(query: types.
|
|
125
|
+
async sum(query: types.SumOptions): Promise<number | bigint> {
|
|
169
126
|
let sum: undefined | number | bigint = undefined;
|
|
170
127
|
outer: for (const doc of await this.queryAll(query)) {
|
|
171
128
|
let value: any = doc.value;
|
|
172
|
-
for (const path of query.key) {
|
|
129
|
+
for (const path of Array.isArray(query.key) ? query.key : [query.key]) {
|
|
173
130
|
value = value[path];
|
|
174
131
|
if (!value) {
|
|
175
132
|
continue outer;
|
|
@@ -185,24 +142,25 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
|
|
|
185
142
|
return sum != null ? sum : 0;
|
|
186
143
|
}
|
|
187
144
|
|
|
188
|
-
async count(query: types.
|
|
145
|
+
async count(query: types.CountOptions): Promise<number> {
|
|
189
146
|
return (await this.queryAll(query)).length;
|
|
190
147
|
}
|
|
191
148
|
|
|
192
149
|
private async queryAll(
|
|
193
|
-
query
|
|
194
|
-
| types.
|
|
195
|
-
| types.
|
|
196
|
-
| types.
|
|
197
|
-
| types.
|
|
150
|
+
query?:
|
|
151
|
+
| types.IterateOptions
|
|
152
|
+
| types.DeleteOptions
|
|
153
|
+
| types.CountOptions
|
|
154
|
+
| types.SumOptions,
|
|
198
155
|
): Promise<types.IndexedValue<T>[]> {
|
|
156
|
+
const queryCoerced = types.toQuery(query?.query);
|
|
199
157
|
if (
|
|
200
|
-
|
|
201
|
-
(
|
|
202
|
-
|
|
203
|
-
types.stringArraysEquals(
|
|
158
|
+
queryCoerced.length === 1 &&
|
|
159
|
+
(queryCoerced[0] instanceof types.ByteMatchQuery ||
|
|
160
|
+
queryCoerced[0] instanceof types.StringMatch) &&
|
|
161
|
+
types.stringArraysEquals(queryCoerced[0].key, this.indexByArr)
|
|
204
162
|
) {
|
|
205
|
-
const firstQuery =
|
|
163
|
+
const firstQuery = queryCoerced[0];
|
|
206
164
|
if (firstQuery instanceof types.ByteMatchQuery) {
|
|
207
165
|
const doc = this._index.get(types.toId(firstQuery.value).primitive);
|
|
208
166
|
return doc ? [doc] : [];
|
|
@@ -218,7 +176,7 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
|
|
|
218
176
|
|
|
219
177
|
// Handle query normally
|
|
220
178
|
const indexedDocuments = await this._queryDocuments(async (doc) => {
|
|
221
|
-
for (const f of
|
|
179
|
+
for (const f of queryCoerced) {
|
|
222
180
|
if (!(await this.handleQueryObject(f, doc.value))) {
|
|
223
181
|
return false;
|
|
224
182
|
}
|
|
@@ -229,80 +187,93 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
|
|
|
229
187
|
return indexedDocuments;
|
|
230
188
|
}
|
|
231
189
|
|
|
232
|
-
|
|
233
|
-
query: types.
|
|
234
|
-
properties: { reference?: boolean },
|
|
235
|
-
):
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
190
|
+
iterate<S extends types.Shape | undefined>(
|
|
191
|
+
query: types.IterateOptions,
|
|
192
|
+
properties: { shape?: S; reference?: boolean },
|
|
193
|
+
): types.IndexIterator<T, S> {
|
|
194
|
+
let done: boolean | undefined = undefined;
|
|
195
|
+
let queue:
|
|
196
|
+
| {
|
|
197
|
+
arr: types.IndexedValue<T>[];
|
|
198
|
+
reference: boolean | undefined;
|
|
199
|
+
}
|
|
200
|
+
| undefined = undefined;
|
|
201
|
+
const fetch = async (
|
|
202
|
+
n: number,
|
|
203
|
+
): Promise<types.IndexedResults<types.ReturnTypeFromShape<T, S>>> => {
|
|
204
|
+
if (!queue && !done) {
|
|
205
|
+
const indexedDocuments = await this.queryAll(query);
|
|
206
|
+
if (indexedDocuments.length > 1) {
|
|
207
|
+
// Sort
|
|
208
|
+
if (query.sort) {
|
|
209
|
+
const sortArr = Array.isArray(query.sort)
|
|
210
|
+
? query.sort
|
|
211
|
+
: [query.sort];
|
|
212
|
+
sortArr.length > 0 &&
|
|
213
|
+
indexedDocuments.sort((a, b) =>
|
|
214
|
+
types.extractSortCompare(a.value, b.value, sortArr),
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
243
218
|
|
|
244
|
-
|
|
219
|
+
if (indexedDocuments.length > 0) {
|
|
220
|
+
queue = {
|
|
221
|
+
arr: indexedDocuments,
|
|
222
|
+
reference: properties?.reference,
|
|
223
|
+
}; // cache resulst not returned
|
|
224
|
+
done = false;
|
|
225
|
+
} else {
|
|
226
|
+
done = true;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (queue && queue.arr.length <= n) {
|
|
230
|
+
done = true;
|
|
231
|
+
}
|
|
245
232
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
);
|
|
250
|
-
const batch = getBatchFromResults<T>(
|
|
251
|
-
indexedDocuments,
|
|
252
|
-
query.fetch,
|
|
253
|
-
/* this.properties.iterator.batch, */
|
|
254
|
-
);
|
|
233
|
+
if (!queue) {
|
|
234
|
+
return [];
|
|
235
|
+
}
|
|
255
236
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
}
|
|
237
|
+
const batch = getBatchFromResults<T>(
|
|
238
|
+
queue.arr,
|
|
239
|
+
n,
|
|
240
|
+
/* this.properties.iterator.batch */
|
|
241
|
+
);
|
|
262
242
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
results: properties?.reference
|
|
267
|
-
? batch
|
|
268
|
-
: cloneResults(batch, this.properties.schema),
|
|
243
|
+
return (
|
|
244
|
+
queue.reference ? batch : cloneResults(batch, this.properties.schema)
|
|
245
|
+
) as types.IndexedResults<types.ReturnTypeFromShape<T, S>>;
|
|
269
246
|
};
|
|
270
|
-
}
|
|
271
247
|
|
|
272
|
-
|
|
273
|
-
query: types.CollectNextRequest,
|
|
274
|
-
): Promise<types.IndexedResults<T>> {
|
|
275
|
-
const results = this._resultsCollectQueue.get(query.idString);
|
|
276
|
-
if (!results) {
|
|
277
|
-
return {
|
|
278
|
-
results: [],
|
|
279
|
-
kept: 0,
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
const batch = getBatchFromResults<T>(
|
|
284
|
-
results.arr,
|
|
285
|
-
query.amount,
|
|
286
|
-
/* this.properties.iterator.batch */
|
|
287
|
-
);
|
|
248
|
+
// TODO dont leak kept if canRead is defined, or return something random
|
|
288
249
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
250
|
+
/* return {
|
|
251
|
+
kept: indexedDocuments.length,
|
|
252
|
+
results: (properties?.reference
|
|
253
|
+
? batch
|
|
254
|
+
: cloneResults(batch, this.properties.schema)) as any, // TODO fix this type,
|
|
255
|
+
}; */
|
|
292
256
|
|
|
293
|
-
// TODO dont leak kept if canRead is defined, or return something random
|
|
294
257
|
return {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
258
|
+
all: async () => {
|
|
259
|
+
const results = await fetch(Infinity);
|
|
260
|
+
return results;
|
|
261
|
+
},
|
|
262
|
+
next: (n: number) => fetch(n),
|
|
263
|
+
done: () => done,
|
|
264
|
+
pending: async () => {
|
|
265
|
+
if (done == null) {
|
|
266
|
+
await fetch(0);
|
|
267
|
+
}
|
|
268
|
+
return done ? 0 : (queue?.arr.length ?? 0);
|
|
269
|
+
},
|
|
270
|
+
close: () => {
|
|
271
|
+
done = true;
|
|
272
|
+
queue = undefined;
|
|
273
|
+
},
|
|
299
274
|
};
|
|
300
275
|
}
|
|
301
276
|
|
|
302
|
-
close(query: types.CloseIteratorRequest): void {
|
|
303
|
-
this._resultsCollectQueue.del(query.idString);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
277
|
private async handleFieldQuery(
|
|
307
278
|
f: types.StateFieldQuery,
|
|
308
279
|
obj: any,
|
|
@@ -341,10 +312,9 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
|
|
|
341
312
|
if (this.properties.nested?.match(obj)) {
|
|
342
313
|
const queryCloned = f.clone();
|
|
343
314
|
queryCloned.key.splice(0, i + 1); // remove key path until the document store
|
|
344
|
-
const results = await this.properties.nested.
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
);
|
|
315
|
+
const results = await this.properties.nested.iterate(obj, {
|
|
316
|
+
query: [queryCloned],
|
|
317
|
+
});
|
|
348
318
|
return results.length > 0 ? true : false; // TODO return INNER HITS?
|
|
349
319
|
}
|
|
350
320
|
}
|
|
@@ -480,14 +450,6 @@ export class HashmapIndex<T extends Record<string, any>, NestedType = any>
|
|
|
480
450
|
}
|
|
481
451
|
return results;
|
|
482
452
|
}
|
|
483
|
-
|
|
484
|
-
getPending(cursorId: string): number | undefined {
|
|
485
|
-
return this._resultsCollectQueue.get(cursorId)?.arr.length;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
get cursorCount(): number {
|
|
489
|
-
return this._resultsCollectQueue.size;
|
|
490
|
-
}
|
|
491
453
|
}
|
|
492
454
|
|
|
493
455
|
export class HashmapIndices implements types.Indices {
|