@_linked/core 2.18.1 → 2.20.1
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 +63 -0
- package/README.md +104 -3
- package/lib/esm/index.d.ts +3 -0
- package/lib/esm/index.js +1 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/interfaces/IDataset.d.ts +23 -0
- package/lib/esm/interfaces/IFileStore.d.ts +64 -1
- package/lib/esm/interfaces/IFileStore.js +21 -1
- package/lib/esm/interfaces/IFileStore.js.map +1 -1
- package/lib/esm/queries/CountBuilder.d.ts +69 -0
- package/lib/esm/queries/CountBuilder.js +162 -0
- package/lib/esm/queries/CountBuilder.js.map +1 -0
- package/lib/esm/queries/CountQuery.d.ts +80 -0
- package/lib/esm/queries/CountQuery.js +7 -0
- package/lib/esm/queries/CountQuery.js.map +1 -0
- package/lib/esm/queries/IntermediateRepresentation.d.ts +31 -1
- package/lib/esm/queries/QueryBuilder.d.ts +80 -0
- package/lib/esm/queries/QueryBuilder.js +98 -13
- package/lib/esm/queries/QueryBuilder.js.map +1 -1
- package/lib/esm/queries/fromJSON.d.ts +5 -3
- package/lib/esm/queries/fromJSON.js +4 -1
- package/lib/esm/queries/fromJSON.js.map +1 -1
- package/lib/esm/queries/lower.d.ts +17 -2
- package/lib/esm/queries/lower.js +61 -0
- package/lib/esm/queries/lower.js.map +1 -1
- package/lib/esm/queries/queryDispatch.d.ts +35 -0
- package/lib/esm/queries/queryDispatch.js +36 -0
- package/lib/esm/queries/queryDispatch.js.map +1 -1
- package/lib/esm/shapes/Shape.d.ts +32 -0
- package/lib/esm/shapes/Shape.js +47 -0
- package/lib/esm/shapes/Shape.js.map +1 -1
- package/lib/esm/sparql/SparqlDataset.d.ts +11 -0
- package/lib/esm/sparql/SparqlDataset.js +19 -2
- package/lib/esm/sparql/SparqlDataset.js.map +1 -1
- package/lib/esm/sparql/index.d.ts +3 -3
- package/lib/esm/sparql/index.js +3 -3
- package/lib/esm/sparql/index.js.map +1 -1
- package/lib/esm/sparql/irToAlgebra.d.ts +32 -1
- package/lib/esm/sparql/irToAlgebra.js +74 -0
- package/lib/esm/sparql/irToAlgebra.js.map +1 -1
- package/lib/esm/sparql/resultMapping.d.ts +14 -1
- package/lib/esm/sparql/resultMapping.js +40 -0
- package/lib/esm/sparql/resultMapping.js.map +1 -1
- package/lib/esm/utils/LinkedFileStorage.d.ts +96 -3
- package/lib/esm/utils/LinkedFileStorage.js +164 -12
- package/lib/esm/utils/LinkedFileStorage.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The count query — "how many instances match?", answered with a number.
|
|
3
|
+
*
|
|
4
|
+
* A count carries a **pattern and nothing else**: no projection, no sorting, no
|
|
5
|
+
* pagination. Those shape or window a *solution sequence*, and the number a count
|
|
6
|
+
* answers is a property of the whole match set, not of a page of it — so rather
|
|
7
|
+
* than being ignored or guarded against, they are simply not expressible here.
|
|
8
|
+
*
|
|
9
|
+
* This is the sibling of {@link AskQuery}: same idea, `number` instead of
|
|
10
|
+
* `boolean`. `SelectBuilder.count()` is the first question asked this way.
|
|
11
|
+
*/
|
|
12
|
+
import type { NodeShapeData } from '../shapes/SHACL.js';
|
|
13
|
+
import type { WherePath } from './SelectQuery.js';
|
|
14
|
+
import type { RawMinusEntry } from './IRDesugar.js';
|
|
15
|
+
import type { NodeReferenceValue } from './QueryFactory.js';
|
|
16
|
+
import type { PendingQueryContext } from './QueryContext.js';
|
|
17
|
+
import type { ContextRefJSON } from './ContextRef.js';
|
|
18
|
+
import type { WherePathJSON, RawMinusEntryJSON } from './QueryBuilderSerialization.js';
|
|
19
|
+
/**
|
|
20
|
+
* The live, closed (read-only) count query — the object an `IDataset` receives.
|
|
21
|
+
*
|
|
22
|
+
* `shape` is **required**, unlike an ask's. A shapeless count would count every
|
|
23
|
+
* node in the store; there is no useful reading of that, so the type does not
|
|
24
|
+
* permit it.
|
|
25
|
+
*/
|
|
26
|
+
export interface CountQuery {
|
|
27
|
+
readonly __queryKind: 'count';
|
|
28
|
+
/** The shape whose matching instances are counted. Also the routing key. */
|
|
29
|
+
readonly shape: NodeShapeData;
|
|
30
|
+
toJSON(): CountQueryJSON;
|
|
31
|
+
toRawInput(): RawCountInput;
|
|
32
|
+
}
|
|
33
|
+
/** Pre-lowering input, as the builder hands it to `lower()`. */
|
|
34
|
+
export type RawCountInput = {
|
|
35
|
+
/**
|
|
36
|
+
* `.for(null)` — no subject to count. Lowering rejects it; `exec()` answers `0`
|
|
37
|
+
* before dispatching. See `lowerCount`.
|
|
38
|
+
*/
|
|
39
|
+
nullSubject?: boolean;
|
|
40
|
+
shape?: {
|
|
41
|
+
shape?: {
|
|
42
|
+
id?: string;
|
|
43
|
+
};
|
|
44
|
+
id?: string;
|
|
45
|
+
};
|
|
46
|
+
subject?: NodeReferenceValue | PendingQueryContext;
|
|
47
|
+
subjects?: NodeReferenceValue[];
|
|
48
|
+
where?: WherePath;
|
|
49
|
+
minusEntries?: RawMinusEntry[];
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* The DSL-JSON wire form of a count query.
|
|
53
|
+
*
|
|
54
|
+
* Carries `op: 'count'` — the same discriminator ask and mutation envelopes use, so
|
|
55
|
+
* `fromJSON` routes on it and an older peer rejects an unknown op loudly rather
|
|
56
|
+
* than reinterpreting the envelope as a select (which would answer with *rows*,
|
|
57
|
+
* windowed by nothing, where the caller expected a total).
|
|
58
|
+
*
|
|
59
|
+
* Every field is pattern-bearing. There is deliberately no `fields`, `limit`,
|
|
60
|
+
* `offset`, `sortBy` or `one`: a receiver has nothing to validate or ignore.
|
|
61
|
+
*
|
|
62
|
+
* ```json
|
|
63
|
+
* {"v": "1.1", "op": "count",
|
|
64
|
+
* "shape": "https://linked.cm/shape/core/Person",
|
|
65
|
+
* "where": {"name": "Semmy"}}
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export type CountQueryJSON = {
|
|
69
|
+
v?: string;
|
|
70
|
+
op: 'count';
|
|
71
|
+
/** Required — see {@link CountQuery.shape}. */
|
|
72
|
+
shape: string;
|
|
73
|
+
/** A node id, or a `{@ctx: name}` reference resolved at lowering. */
|
|
74
|
+
subject?: string | ContextRefJSON;
|
|
75
|
+
subjects?: string[];
|
|
76
|
+
where?: WherePathJSON;
|
|
77
|
+
minusEntries?: RawMinusEntryJSON[];
|
|
78
|
+
/** `.for(null)` — no subject to count; the answer is `0` without querying. */
|
|
79
|
+
nullSubject?: boolean;
|
|
80
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CountQuery.js","sourceRoot":"","sources":["../../../src/queries/CountQuery.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -3,7 +3,7 @@ import type { PathExpr } from '../paths/PropertyPathExpr.js';
|
|
|
3
3
|
export type IRDirection = 'ASC' | 'DESC';
|
|
4
4
|
export type IRAlias = string;
|
|
5
5
|
export type IRValue = string | number | boolean | null;
|
|
6
|
-
export type IRQuery = IRSelectQuery | IRAskQuery | IRCreateMutation | IRUpdateMutation | IRUpsertMutation | IRDeleteMutation | IRDeleteAllMutation | IRDeleteWhereMutation | IRUpdateWhereMutation;
|
|
6
|
+
export type IRQuery = IRSelectQuery | IRAskQuery | IRCountQuery | IRCreateMutation | IRUpdateMutation | IRUpsertMutation | IRDeleteMutation | IRDeleteAllMutation | IRDeleteWhereMutation | IRUpdateWhereMutation;
|
|
7
7
|
export type IRSelectQuery = {
|
|
8
8
|
kind: 'select';
|
|
9
9
|
root: IRShapeScanPattern;
|
|
@@ -39,6 +39,36 @@ export type IRAskQuery = {
|
|
|
39
39
|
subjectId?: string;
|
|
40
40
|
subjectIds?: string[];
|
|
41
41
|
};
|
|
42
|
+
/**
|
|
43
|
+
* A query whose answer is a single number: how many instances of a shape match.
|
|
44
|
+
*
|
|
45
|
+
* Like {@link IRAskQuery}, it carries a **pattern and nothing else**. There is no
|
|
46
|
+
* `projection`, `orderBy`, `limit` or `offset`: each of those shapes or windows a
|
|
47
|
+
* *solution sequence*, and a count has none — the number it answers is a property
|
|
48
|
+
* of the whole match set. So rather than being ignored during conversion, or
|
|
49
|
+
* guarded against, they are unrepresentable.
|
|
50
|
+
*
|
|
51
|
+
* That is the entire reason this is a distinct IR kind and not a flag on
|
|
52
|
+
* {@link IRSelectQuery}: a count of a windowed query is meaningless, and a type
|
|
53
|
+
* that cannot hold the window cannot half-drop it.
|
|
54
|
+
*
|
|
55
|
+
* `root` is **required**, unlike an ask's. A shapeless count would count every
|
|
56
|
+
* node in the store, which is never what a caller means.
|
|
57
|
+
*/
|
|
58
|
+
export type IRCountQuery = {
|
|
59
|
+
kind: 'count';
|
|
60
|
+
root: IRShapeScanPattern;
|
|
61
|
+
patterns: IRGraphPattern[];
|
|
62
|
+
where?: IRExpression;
|
|
63
|
+
subjectId?: string;
|
|
64
|
+
subjectIds?: string[];
|
|
65
|
+
/**
|
|
66
|
+
* The variable the `COUNT` is bound to (`(COUNT(DISTINCT ?a0) AS ?count)`).
|
|
67
|
+
* Carried in the IR rather than hardcoded in two places so lowering and result
|
|
68
|
+
* mapping cannot disagree about it.
|
|
69
|
+
*/
|
|
70
|
+
alias: IRAlias;
|
|
71
|
+
};
|
|
42
72
|
export type IRProjectionItem = {
|
|
43
73
|
alias: IRAlias;
|
|
44
74
|
expression: IRExpression;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Shape, type ShapeConstructor } from '../shapes/Shape.js';
|
|
2
2
|
import { type QueryBuildFn, type WhereClause, type QueryResponseToResultType, type SelectAllQueryResponse, type QueryComponentLike } from './SelectQuery.js';
|
|
3
3
|
import type { RawSelectInput } from './IRDesugar.js';
|
|
4
|
+
import { CountBuilder } from './CountBuilder.js';
|
|
4
5
|
import type { IDataset } from '../interfaces/IDataset.js';
|
|
5
6
|
import type { NodeShapeData } from '../shapes/SHACL.js';
|
|
6
7
|
import type { NodeReferenceValue } from './QueryFactory.js';
|
|
@@ -156,6 +157,85 @@ export declare class SelectBuilder<S extends Shape = Shape, R = any, Result = an
|
|
|
156
157
|
* @param target Optional explicit dataset, as for {@link exec}.
|
|
157
158
|
*/
|
|
158
159
|
exists(target?: IDataset): Promise<boolean>;
|
|
160
|
+
/**
|
|
161
|
+
* **How many** rows match this query — the total of the match set, as a real
|
|
162
|
+
* `number`.
|
|
163
|
+
*
|
|
164
|
+
* ```ts
|
|
165
|
+
* await Person.select().where(p => p.name.equals('Semmy')).count(); // number
|
|
166
|
+
* await SelectBuilder.from(shapeIri).where(…).count(); // from an IRI alone
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* ### The query is normalised to its cheapest correct form first
|
|
170
|
+
*
|
|
171
|
+
* **Dropped** — the projection, preloads, sorting *and pagination*
|
|
172
|
+
* (`limit`/`offset`). **Kept** — filters, `minus` entries and the subject: those
|
|
173
|
+
* decide membership of the match set. Against a SPARQL store that goes out as:
|
|
174
|
+
*
|
|
175
|
+
* ```sparql
|
|
176
|
+
* SELECT (COUNT(DISTINCT ?a0) AS ?count)
|
|
177
|
+
* WHERE { ?a0 rdf:type <…> . ?a0 <…name> ?a0_name . FILTER(?a0_name = "Semmy") }
|
|
178
|
+
* ```
|
|
179
|
+
*
|
|
180
|
+
* ### `limit`/`offset` are dropped, not rejected
|
|
181
|
+
*
|
|
182
|
+
* A count of a windowed query is meaningless — `OFFSET` skips rows of a *solution
|
|
183
|
+
* sequence*, and the number a count answers is a property of the whole match set,
|
|
184
|
+
* not of a page of it. So `.limit(20).offset(40).count()` costs, and answers,
|
|
185
|
+
* exactly the same as a bare `.count()`.
|
|
186
|
+
*
|
|
187
|
+
* Dropping rather than throwing is deliberate: the paging caller holds **one**
|
|
188
|
+
* builder and wants the page *and* its total from the same filter, so rejecting
|
|
189
|
+
* the combination would force it to rebuild the builder by hand for no
|
|
190
|
+
* correctness gain. There is exactly one sensible reading, and it is this one.
|
|
191
|
+
* `.exists()` already made the same call, so the DSL has one rule — *a
|
|
192
|
+
* scalar-answering query drops the solution-sequence modifiers* — not two.
|
|
193
|
+
*
|
|
194
|
+
* Nor is the drop merely a convention: a {@link CountBuilder} has nowhere to hold
|
|
195
|
+
* a window, so it cannot be forgotten or half-applied downstream.
|
|
196
|
+
*
|
|
197
|
+
* `DISTINCT` is likewise not optional. A filter on a multi-valued property yields
|
|
198
|
+
* several rows per subject, so the count is of distinct subjects — "how many
|
|
199
|
+
* instances match", which is the question asked.
|
|
200
|
+
*
|
|
201
|
+
* ### Errors are not swallowed
|
|
202
|
+
*
|
|
203
|
+
* A store, transport or lowering failure **rejects**; it is never reported as `0`.
|
|
204
|
+
* `0` is a plausible count: it renders an empty table and looks like data. Do not
|
|
205
|
+
* wrap this in `.catch(() => 0)`.
|
|
206
|
+
*
|
|
207
|
+
* The one case that resolves `0` without querying is a query with no subject to
|
|
208
|
+
* count — `.for(null)`, `.for(undefined)`, or an unresolved `PendingQueryContext`
|
|
209
|
+
* *as the subject*.
|
|
210
|
+
*
|
|
211
|
+
* @param target Optional explicit dataset, as for {@link exec}.
|
|
212
|
+
*/
|
|
213
|
+
count(target?: IDataset): Promise<number>;
|
|
214
|
+
/**
|
|
215
|
+
* Reduce this select to the count query that answers "how many match?".
|
|
216
|
+
*
|
|
217
|
+
* Public, unlike the ask equivalent, because a caller may want to **forward**
|
|
218
|
+
* rather than execute: `builder.toCount().toJSON()` is the `{op: 'count'}` wire
|
|
219
|
+
* envelope a router or RPC boundary sends on, and `fromJSON` turns it back into a
|
|
220
|
+
* `CountBuilder` on the other side.
|
|
221
|
+
*
|
|
222
|
+
* Only the pattern survives — shape, subject(s), filters, `minus`. The projection,
|
|
223
|
+
* preloads, sorting and pagination are not so much "dropped" as unrepresentable:
|
|
224
|
+
* {@link CountBuilder} has nowhere to put them. That is the point of it being a
|
|
225
|
+
* separate builder rather than a mode of this one.
|
|
226
|
+
*/
|
|
227
|
+
toCount(): CountBuilder;
|
|
228
|
+
/**
|
|
229
|
+
* The pattern-bearing part of this select: shape-membership, subject(s), filters
|
|
230
|
+
* and `minus` — everything that decides which nodes are in the match set, and
|
|
231
|
+
* nothing that shapes or windows the rows describing them.
|
|
232
|
+
*
|
|
233
|
+
* Shared by {@link _toAsk} and {@link toCount} rather than written twice. That is
|
|
234
|
+
* not only about duplication: if the two normalisations drifted, `.exists()` and
|
|
235
|
+
* `.count()` would disagree about what the match set *is* — a count of 0 next to
|
|
236
|
+
* an `exists` of `true`, from the same builder.
|
|
237
|
+
*/
|
|
238
|
+
private _patternSpec;
|
|
159
239
|
/**
|
|
160
240
|
* Reduce this select to the ask query that answers the same existence question.
|
|
161
241
|
*
|
|
@@ -13,6 +13,7 @@ import { processWhereClause, evaluateSortCallback, } from './SelectQuery.js';
|
|
|
13
13
|
import { WIRE_VERSION, assertWireVersion } from './wireVersion.js';
|
|
14
14
|
import { getQueryDispatch } from './queryDispatch.js';
|
|
15
15
|
import { AskBuilder } from './AskBuilder.js';
|
|
16
|
+
import { CountBuilder } from './CountBuilder.js';
|
|
16
17
|
import { resolveUriOrThrow } from '../utils/NodeReference.js';
|
|
17
18
|
import { FieldSet } from './FieldSet.js';
|
|
18
19
|
import { PendingQueryContext, UnresolvedContextError } from './QueryContext.js';
|
|
@@ -226,15 +227,90 @@ export class SelectBuilder {
|
|
|
226
227
|
});
|
|
227
228
|
}
|
|
228
229
|
/**
|
|
229
|
-
*
|
|
230
|
+
* **How many** rows match this query — the total of the match set, as a real
|
|
231
|
+
* `number`.
|
|
230
232
|
*
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
*
|
|
234
|
-
*
|
|
235
|
-
*
|
|
233
|
+
* ```ts
|
|
234
|
+
* await Person.select().where(p => p.name.equals('Semmy')).count(); // number
|
|
235
|
+
* await SelectBuilder.from(shapeIri).where(…).count(); // from an IRI alone
|
|
236
|
+
* ```
|
|
237
|
+
*
|
|
238
|
+
* ### The query is normalised to its cheapest correct form first
|
|
239
|
+
*
|
|
240
|
+
* **Dropped** — the projection, preloads, sorting *and pagination*
|
|
241
|
+
* (`limit`/`offset`). **Kept** — filters, `minus` entries and the subject: those
|
|
242
|
+
* decide membership of the match set. Against a SPARQL store that goes out as:
|
|
243
|
+
*
|
|
244
|
+
* ```sparql
|
|
245
|
+
* SELECT (COUNT(DISTINCT ?a0) AS ?count)
|
|
246
|
+
* WHERE { ?a0 rdf:type <…> . ?a0 <…name> ?a0_name . FILTER(?a0_name = "Semmy") }
|
|
247
|
+
* ```
|
|
248
|
+
*
|
|
249
|
+
* ### `limit`/`offset` are dropped, not rejected
|
|
250
|
+
*
|
|
251
|
+
* A count of a windowed query is meaningless — `OFFSET` skips rows of a *solution
|
|
252
|
+
* sequence*, and the number a count answers is a property of the whole match set,
|
|
253
|
+
* not of a page of it. So `.limit(20).offset(40).count()` costs, and answers,
|
|
254
|
+
* exactly the same as a bare `.count()`.
|
|
255
|
+
*
|
|
256
|
+
* Dropping rather than throwing is deliberate: the paging caller holds **one**
|
|
257
|
+
* builder and wants the page *and* its total from the same filter, so rejecting
|
|
258
|
+
* the combination would force it to rebuild the builder by hand for no
|
|
259
|
+
* correctness gain. There is exactly one sensible reading, and it is this one.
|
|
260
|
+
* `.exists()` already made the same call, so the DSL has one rule — *a
|
|
261
|
+
* scalar-answering query drops the solution-sequence modifiers* — not two.
|
|
262
|
+
*
|
|
263
|
+
* Nor is the drop merely a convention: a {@link CountBuilder} has nowhere to hold
|
|
264
|
+
* a window, so it cannot be forgotten or half-applied downstream.
|
|
265
|
+
*
|
|
266
|
+
* `DISTINCT` is likewise not optional. A filter on a multi-valued property yields
|
|
267
|
+
* several rows per subject, so the count is of distinct subjects — "how many
|
|
268
|
+
* instances match", which is the question asked.
|
|
269
|
+
*
|
|
270
|
+
* ### Errors are not swallowed
|
|
271
|
+
*
|
|
272
|
+
* A store, transport or lowering failure **rejects**; it is never reported as `0`.
|
|
273
|
+
* `0` is a plausible count: it renders an empty table and looks like data. Do not
|
|
274
|
+
* wrap this in `.catch(() => 0)`.
|
|
275
|
+
*
|
|
276
|
+
* The one case that resolves `0` without querying is a query with no subject to
|
|
277
|
+
* count — `.for(null)`, `.for(undefined)`, or an unresolved `PendingQueryContext`
|
|
278
|
+
* *as the subject*.
|
|
279
|
+
*
|
|
280
|
+
* @param target Optional explicit dataset, as for {@link exec}.
|
|
236
281
|
*/
|
|
237
|
-
|
|
282
|
+
count(target) {
|
|
283
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
284
|
+
return this.toCount().exec(target);
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Reduce this select to the count query that answers "how many match?".
|
|
289
|
+
*
|
|
290
|
+
* Public, unlike the ask equivalent, because a caller may want to **forward**
|
|
291
|
+
* rather than execute: `builder.toCount().toJSON()` is the `{op: 'count'}` wire
|
|
292
|
+
* envelope a router or RPC boundary sends on, and `fromJSON` turns it back into a
|
|
293
|
+
* `CountBuilder` on the other side.
|
|
294
|
+
*
|
|
295
|
+
* Only the pattern survives — shape, subject(s), filters, `minus`. The projection,
|
|
296
|
+
* preloads, sorting and pagination are not so much "dropped" as unrepresentable:
|
|
297
|
+
* {@link CountBuilder} has nowhere to put them. That is the point of it being a
|
|
298
|
+
* separate builder rather than a mode of this one.
|
|
299
|
+
*/
|
|
300
|
+
toCount() {
|
|
301
|
+
return CountBuilder.of(Object.assign({ shapeClass: this._shape }, this._patternSpec()));
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* The pattern-bearing part of this select: shape-membership, subject(s), filters
|
|
305
|
+
* and `minus` — everything that decides which nodes are in the match set, and
|
|
306
|
+
* nothing that shapes or windows the rows describing them.
|
|
307
|
+
*
|
|
308
|
+
* Shared by {@link _toAsk} and {@link toCount} rather than written twice. That is
|
|
309
|
+
* not only about duplication: if the two normalisations drifted, `.exists()` and
|
|
310
|
+
* `.count()` would disagree about what the match set *is* — a count of 0 next to
|
|
311
|
+
* an `exists` of `true`, from the same builder.
|
|
312
|
+
*/
|
|
313
|
+
_patternSpec() {
|
|
238
314
|
let where;
|
|
239
315
|
if (this._whereFn) {
|
|
240
316
|
where = processWhereClause(this._whereFn, this._shape);
|
|
@@ -251,23 +327,32 @@ export class SelectBuilder {
|
|
|
251
327
|
}
|
|
252
328
|
// A PendingQueryContext must survive as itself. It has an `id` *getter*, so
|
|
253
329
|
// narrowing it to `{id}` here would silently resolve it against THIS process's
|
|
254
|
-
// context map — and the
|
|
330
|
+
// context map — and the query would then travel as a concrete IRI where the
|
|
255
331
|
// equivalent select travels as `{"@ctx": name}` for the receiver to resolve.
|
|
256
332
|
const subject = this._subject instanceof PendingQueryContext
|
|
257
333
|
? this._subject
|
|
258
334
|
: this._subject && typeof this._subject === 'object' && 'id' in this._subject
|
|
259
335
|
? { id: this._subject.id }
|
|
260
336
|
: undefined;
|
|
261
|
-
return
|
|
262
|
-
shapeClass: this._shape,
|
|
337
|
+
return {
|
|
263
338
|
subject,
|
|
264
339
|
subjects: this._subjects,
|
|
265
340
|
where,
|
|
266
341
|
minusEntries,
|
|
267
|
-
// `.for(null)`. An unresolved pending context is handled by AskBuilder.exec,
|
|
268
|
-
// which sees the live context and answers `false` without querying.
|
|
269
342
|
nullSubject: this._nullSubject,
|
|
270
|
-
}
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Reduce this select to the ask query that answers the same existence question.
|
|
347
|
+
*
|
|
348
|
+
* Only the pattern survives — shape, subject(s), filters, `minus`. The
|
|
349
|
+
* projection, preloads, sorting and pagination are not "dropped" so much as
|
|
350
|
+
* unrepresentable: {@link AskBuilder} has nowhere to put them. That is the point
|
|
351
|
+
* of it being a separate builder rather than a mode of this one — the
|
|
352
|
+
* normalisation cannot be forgotten or half-applied.
|
|
353
|
+
*/
|
|
354
|
+
_toAsk() {
|
|
355
|
+
return AskBuilder.of(Object.assign({ shapeClass: this._shape }, this._patternSpec()));
|
|
271
356
|
}
|
|
272
357
|
/**
|
|
273
358
|
* Preload a component's query fields at the given property path.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/queries/QueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../src/queries/QueryBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Kind-detecting `fromJSON` — rehydrate any query DSL-JSON back into its builder.
|
|
3
3
|
*
|
|
4
|
-
* Ask and mutation envelopes carry an `op` discriminator; select envelopes
|
|
4
|
+
* Ask, count and mutation envelopes carry an `op` discriminator; select envelopes
|
|
5
5
|
* (`QueryBuilderJSON`) do not. This is the inbound boundary helper: a receiving
|
|
6
6
|
* process turns wire JSON into a live query with `fromJSON(json).exec()` (the
|
|
7
7
|
* existing generic dispatch), no per-op routing needed.
|
|
@@ -11,8 +11,10 @@ import { CreateBuilder } from './CreateBuilder.js';
|
|
|
11
11
|
import { UpdateBuilder } from './UpdateBuilder.js';
|
|
12
12
|
import { DeleteBuilder } from './DeleteBuilder.js';
|
|
13
13
|
import { AskBuilder } from './AskBuilder.js';
|
|
14
|
+
import { CountBuilder } from './CountBuilder.js';
|
|
14
15
|
import type { AskQueryJSON } from './AskQuery.js';
|
|
16
|
+
import type { CountQueryJSON } from './CountQuery.js';
|
|
15
17
|
import type { MutationJSON } from './MutationSerialization.js';
|
|
16
18
|
/** Any query in its wire (DSL-JSON) form. */
|
|
17
|
-
export type QueryJSON = QueryBuilderJSON | AskQueryJSON | MutationJSON;
|
|
18
|
-
export declare function fromJSON(json: QueryJSON): SelectBuilder | AskBuilder | CreateBuilder | UpdateBuilder | DeleteBuilder;
|
|
19
|
+
export type QueryJSON = QueryBuilderJSON | AskQueryJSON | CountQueryJSON | MutationJSON;
|
|
20
|
+
export declare function fromJSON(json: QueryJSON): SelectBuilder | AskBuilder | CountBuilder | CreateBuilder | UpdateBuilder | DeleteBuilder;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Kind-detecting `fromJSON` — rehydrate any query DSL-JSON back into its builder.
|
|
8
8
|
*
|
|
9
|
-
* Ask and mutation envelopes carry an `op` discriminator; select envelopes
|
|
9
|
+
* Ask, count and mutation envelopes carry an `op` discriminator; select envelopes
|
|
10
10
|
* (`QueryBuilderJSON`) do not. This is the inbound boundary helper: a receiving
|
|
11
11
|
* process turns wire JSON into a live query with `fromJSON(json).exec()` (the
|
|
12
12
|
* existing generic dispatch), no per-op routing needed.
|
|
@@ -16,6 +16,7 @@ import { CreateBuilder } from './CreateBuilder.js';
|
|
|
16
16
|
import { UpdateBuilder } from './UpdateBuilder.js';
|
|
17
17
|
import { DeleteBuilder } from './DeleteBuilder.js';
|
|
18
18
|
import { AskBuilder } from './AskBuilder.js';
|
|
19
|
+
import { CountBuilder } from './CountBuilder.js';
|
|
19
20
|
import { assertWireVersion } from './wireVersion.js';
|
|
20
21
|
export function fromJSON(json) {
|
|
21
22
|
assertWireVersion(json === null || json === void 0 ? void 0 : json.v);
|
|
@@ -23,6 +24,8 @@ export function fromJSON(json) {
|
|
|
23
24
|
switch (json.op) {
|
|
24
25
|
case 'ask':
|
|
25
26
|
return AskBuilder.fromJSON(json);
|
|
27
|
+
case 'count':
|
|
28
|
+
return CountBuilder.fromJSON(json);
|
|
26
29
|
case 'create':
|
|
27
30
|
return CreateBuilder.fromJSON(json);
|
|
28
31
|
case 'update':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fromJSON.js","sourceRoot":"","sources":["../../../src/queries/fromJSON.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,OAAO,EAAC,aAAa,EAAwB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"fromJSON.js","sourceRoot":"","sources":["../../../src/queries/fromJSON.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,OAAO,EAAC,aAAa,EAAwB,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAI/C,OAAO,EAAC,iBAAiB,EAAC,MAAM,kBAAkB,CAAC;AASnD,MAAM,UAAU,QAAQ,CACtB,IAAe;IAQf,iBAAiB,CAAE,IAAsB,aAAtB,IAAI,uBAAJ,IAAI,CAAoB,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACrD,QAAQ,IAAI,CAAC,EAAE,EAAE,CAAC;YAChB,KAAK,KAAK;gBACR,OAAO,UAAU,CAAC,QAAQ,CAAC,IAAoB,CAAC,CAAC;YACnD,KAAK,OAAO;gBACV,OAAO,YAAY,CAAC,QAAQ,CAAC,IAAsB,CAAC,CAAC;YACvD,KAAK,QAAQ;gBACX,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACX,wEAAwE;gBACxE,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,KAAK,QAAQ;gBACX,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC;gBACE,oEAAoE;gBACpE,qEAAqE;gBACrE,uCAAuC;gBACvC,MAAM,IAAI,KAAK,CACb,qBAAqB,MAAM,CAAE,IAAsB,CAAC,EAAE,CAAC,yBAAyB,CACjF,CAAC;QACN,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,QAAQ,CAAC,IAAwB,CAAC,CAAC;AAC1D,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { IRAskQuery, IRSelectQuery } from './IntermediateRepresentation.js';
|
|
1
|
+
import type { IRAskQuery, IRCountQuery, IRSelectQuery } from './IntermediateRepresentation.js';
|
|
2
2
|
import type { RawAskInput } from './AskQuery.js';
|
|
3
|
+
import type { RawCountInput } from './CountQuery.js';
|
|
3
4
|
import type { IRCreateQuery } from './CreateQuery.js';
|
|
4
5
|
import type { IRUpdateQuery } from './UpdateQuery.js';
|
|
5
6
|
import type { IRDeleteQuery } from './DeleteQuery.js';
|
|
@@ -14,6 +15,11 @@ export type LowerableAsk = {
|
|
|
14
15
|
readonly __queryKind: 'ask';
|
|
15
16
|
toRawInput(): RawAskInput;
|
|
16
17
|
};
|
|
18
|
+
/** A count query that can be lowered (the count builder). */
|
|
19
|
+
export type LowerableCount = {
|
|
20
|
+
readonly __queryKind: 'count';
|
|
21
|
+
toRawInput(): RawCountInput;
|
|
22
|
+
};
|
|
17
23
|
/** A mutation query that can be lowered (the mutation builders). */
|
|
18
24
|
export type LowerableCreate = {
|
|
19
25
|
readonly __queryKind: 'create';
|
|
@@ -27,9 +33,18 @@ export type LowerableDelete = {
|
|
|
27
33
|
readonly __queryKind: 'delete';
|
|
28
34
|
_lowerSpec(): DeleteLowerSpec;
|
|
29
35
|
};
|
|
30
|
-
export type LowerableQuery = LowerableSelect | LowerableAsk | LowerableCreate | LowerableUpdate | LowerableDelete;
|
|
36
|
+
export type LowerableQuery = LowerableSelect | LowerableAsk | LowerableCount | LowerableCreate | LowerableUpdate | LowerableDelete;
|
|
37
|
+
/**
|
|
38
|
+
* The variable a root count binds its `COUNT` to.
|
|
39
|
+
*
|
|
40
|
+
* Chosen not to collide with the `a<N>` alias scheme the pipeline generates for
|
|
41
|
+
* the root and every traversal, so it never needs the collision rename
|
|
42
|
+
* `selectToAlgebra` applies to aggregate aliases.
|
|
43
|
+
*/
|
|
44
|
+
export declare const COUNT_ALIAS = "count";
|
|
31
45
|
export declare function lower(query: LowerableSelect): IRSelectQuery;
|
|
32
46
|
export declare function lower(query: LowerableAsk): IRAskQuery;
|
|
47
|
+
export declare function lower(query: LowerableCount): IRCountQuery;
|
|
33
48
|
export declare function lower(query: LowerableCreate): IRCreateQuery;
|
|
34
49
|
export declare function lower(query: LowerableUpdate): IRUpdateQuery;
|
|
35
50
|
export declare function lower(query: LowerableDelete): IRDeleteQuery;
|
package/lib/esm/queries/lower.js
CHANGED
|
@@ -143,12 +143,73 @@ function lowerAsk(input) {
|
|
|
143
143
|
subjectIds: selected.subjectIds,
|
|
144
144
|
};
|
|
145
145
|
}
|
|
146
|
+
/**
|
|
147
|
+
* The variable a root count binds its `COUNT` to.
|
|
148
|
+
*
|
|
149
|
+
* Chosen not to collide with the `a<N>` alias scheme the pipeline generates for
|
|
150
|
+
* the root and every traversal, so it never needs the collision rename
|
|
151
|
+
* `selectToAlgebra` applies to aggregate aliases.
|
|
152
|
+
*/
|
|
153
|
+
export const COUNT_ALIAS = 'count';
|
|
154
|
+
/**
|
|
155
|
+
* Lower a count to its canonical IR.
|
|
156
|
+
*
|
|
157
|
+
* Reuses the select pipeline to build the pattern — one implementation of shape
|
|
158
|
+
* scans, traversals, filters and minus — and then keeps only the pattern-bearing
|
|
159
|
+
* part, exactly as {@link lowerAsk} does. The `entries: []` is why nothing is
|
|
160
|
+
* projected: a count has no projection to build.
|
|
161
|
+
*/
|
|
162
|
+
function lowerCount(input) {
|
|
163
|
+
if (input.nullSubject) {
|
|
164
|
+
// "How many nodes with no id match?" is answered `0` without querying —
|
|
165
|
+
// `CountBuilder.exec` does that before dispatching. Reaching lowering means a
|
|
166
|
+
// store took the builder off the normal path; a subject-less pattern would
|
|
167
|
+
// count every instance of the shape and report it as the count of one node.
|
|
168
|
+
throw new Error('Cannot lower a count query with no subject (`.for(null)`). It resolves to ' +
|
|
169
|
+
'`0` without querying — execute it through `exec()` rather than lowering it.');
|
|
170
|
+
}
|
|
171
|
+
if (!input.shape) {
|
|
172
|
+
throw new Error('Cannot lower a count query with no shape. A shapeless count would count ' +
|
|
173
|
+
'every node in the store, under any type or none.');
|
|
174
|
+
}
|
|
175
|
+
// A `{"@ctx": name}` subject arrives here as a live PendingQueryContext, and
|
|
176
|
+
// `buildSelectQuery` narrows a subject with `'id' in subject` — so an UNRESOLVED
|
|
177
|
+
// one would quietly yield `subjectId: undefined` and the count would be of every
|
|
178
|
+
// instance of the shape, reported as the count of one node. `CountBuilder.exec`
|
|
179
|
+
// answers `0` for that case before dispatching, but this path is reached without
|
|
180
|
+
// it: a receiver that rehydrates an envelope with `fromJSON` and hands the builder
|
|
181
|
+
// straight to a store. Resolve it here, which throws `UnresolvedContextError` when
|
|
182
|
+
// the context is unset — the same "not ready" a where-clause reference raises, and
|
|
183
|
+
// never a plausible number.
|
|
184
|
+
const subject = input.subject instanceof PendingQueryContext
|
|
185
|
+
? { id: resolveContextId(input.subject.contextName, true) }
|
|
186
|
+
: input.subject;
|
|
187
|
+
const selected = buildSelectQuery({
|
|
188
|
+
entries: [],
|
|
189
|
+
shape: input.shape,
|
|
190
|
+
subject,
|
|
191
|
+
subjects: input.subjects,
|
|
192
|
+
where: input.where,
|
|
193
|
+
minusEntries: input.minusEntries,
|
|
194
|
+
});
|
|
195
|
+
return {
|
|
196
|
+
kind: 'count',
|
|
197
|
+
root: selected.root,
|
|
198
|
+
patterns: selected.patterns,
|
|
199
|
+
where: selected.where,
|
|
200
|
+
subjectId: selected.subjectId,
|
|
201
|
+
subjectIds: selected.subjectIds,
|
|
202
|
+
alias: COUNT_ALIAS,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
146
205
|
export function lower(query) {
|
|
147
206
|
switch (query.__queryKind) {
|
|
148
207
|
case 'select':
|
|
149
208
|
return buildSelectQuery(query.toRawInput());
|
|
150
209
|
case 'ask':
|
|
151
210
|
return lowerAsk(query.toRawInput());
|
|
211
|
+
case 'count':
|
|
212
|
+
return lowerCount(query.toRawInput());
|
|
152
213
|
case 'create':
|
|
153
214
|
return lowerCreate(query._lowerSpec());
|
|
154
215
|
case 'update':
|