joist-core 2.2.0 → 2.3.0-next.2
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/build/Aliases.d.ts.map +1 -1
- package/build/Aliases.js.map +1 -1
- package/build/BaseEntity.d.ts +2 -0
- package/build/BaseEntity.d.ts.map +1 -1
- package/build/BaseEntity.js +1 -1
- package/build/BaseEntity.js.map +1 -1
- package/build/Entity.d.ts +1 -0
- package/build/Entity.d.ts.map +1 -1
- package/build/EntityFilter.d.ts +29 -10
- package/build/EntityFilter.d.ts.map +1 -1
- package/build/EntityFilter.js +18 -0
- package/build/EntityFilter.js.map +1 -1
- package/build/EntityGraphQLFilter.d.ts +3 -0
- package/build/EntityGraphQLFilter.d.ts.map +1 -1
- package/build/EntityGraphQLFilter.js.map +1 -1
- package/build/EntityManager.d.ts +36 -50
- package/build/EntityManager.d.ts.map +1 -1
- package/build/EntityManager.js +248 -124
- package/build/EntityManager.js.map +1 -1
- package/build/EntityMetadata.d.ts +48 -2
- package/build/EntityMetadata.d.ts.map +1 -1
- package/build/EntityMetadata.js +17 -0
- package/build/EntityMetadata.js.map +1 -1
- package/build/IndexManager.d.ts +5 -5
- package/build/IndexManager.d.ts.map +1 -1
- package/build/IndexManager.js +48 -32
- package/build/IndexManager.js.map +1 -1
- package/build/InstanceData.d.ts +16 -2
- package/build/InstanceData.d.ts.map +1 -1
- package/build/InstanceData.js +37 -4
- package/build/InstanceData.js.map +1 -1
- package/build/IsLoadedCache.d.ts.map +1 -1
- package/build/IsLoadedCache.js +31 -25
- package/build/IsLoadedCache.js.map +1 -1
- package/build/JoinRows.d.ts +54 -12
- package/build/JoinRows.d.ts.map +1 -1
- package/build/JoinRows.js +114 -44
- package/build/JoinRows.js.map +1 -1
- package/build/QueryParser.collectionJoins.js +8 -2
- package/build/QueryParser.collectionJoins.js.map +1 -1
- package/build/QueryParser.d.ts +15 -3
- package/build/QueryParser.d.ts.map +1 -1
- package/build/QueryParser.js +293 -190
- package/build/QueryParser.js.map +1 -1
- package/build/QueryParser.pruning.d.ts.map +1 -1
- package/build/QueryParser.pruning.js +8 -1
- package/build/QueryParser.pruning.js.map +1 -1
- package/build/QueryParser.test.d.ts +2 -0
- package/build/QueryParser.test.d.ts.map +1 -0
- package/build/QueryParser.test.js +27 -0
- package/build/QueryParser.test.js.map +1 -0
- package/build/ReactionsManager.d.ts +2 -1
- package/build/ReactionsManager.d.ts.map +1 -1
- package/build/ReactionsManager.js +53 -49
- package/build/ReactionsManager.js.map +1 -1
- package/build/Todo.d.ts +4 -0
- package/build/Todo.d.ts.map +1 -1
- package/build/Todo.js.map +1 -1
- package/build/batchloaders/BatchLoader.d.ts.map +1 -1
- package/build/batchloaders/BatchLoader.js +6 -1
- package/build/batchloaders/BatchLoader.js.map +1 -1
- package/build/batchloaders/enumCollectionBatchLoader.d.ts +7 -0
- package/build/batchloaders/enumCollectionBatchLoader.d.ts.map +1 -0
- package/build/batchloaders/enumCollectionBatchLoader.js +54 -0
- package/build/batchloaders/enumCollectionBatchLoader.js.map +1 -0
- package/build/batchloaders/manyToManyBatchLoader.d.ts.map +1 -1
- package/build/batchloaders/manyToManyBatchLoader.js +10 -2
- package/build/batchloaders/manyToManyBatchLoader.js.map +1 -1
- package/build/batchloaders/populateBatchLoader.d.ts.map +1 -1
- package/build/batchloaders/populateBatchLoader.js +26 -8
- package/build/batchloaders/populateBatchLoader.js.map +1 -1
- package/build/batchloaders/recursiveChildrenBatchLoader.d.ts.map +1 -1
- package/build/batchloaders/recursiveChildrenBatchLoader.js +2 -0
- package/build/batchloaders/recursiveChildrenBatchLoader.js.map +1 -1
- package/build/batchloaders/recursiveM2mBatchLoader.d.ts.map +1 -1
- package/build/batchloaders/recursiveM2mBatchLoader.js +1 -3
- package/build/batchloaders/recursiveM2mBatchLoader.js.map +1 -1
- package/build/batchloaders/recursiveParentsBatchLoader.d.ts.map +1 -1
- package/build/batchloaders/recursiveParentsBatchLoader.js +2 -0
- package/build/batchloaders/recursiveParentsBatchLoader.js.map +1 -1
- package/build/changes.d.ts +13 -0
- package/build/changes.d.ts.map +1 -1
- package/build/changes.js +49 -0
- package/build/changes.js.map +1 -1
- package/build/configure.d.ts +5 -3
- package/build/configure.d.ts.map +1 -1
- package/build/configure.js +70 -0
- package/build/configure.js.map +1 -1
- package/build/dataloaders/fastWhereFilterHash.d.ts +15 -0
- package/build/dataloaders/fastWhereFilterHash.d.ts.map +1 -0
- package/build/dataloaders/fastWhereFilterHash.js +164 -0
- package/build/dataloaders/fastWhereFilterHash.js.map +1 -0
- package/build/dataloaders/fastWhereFilterHash.test.d.ts +2 -0
- package/build/dataloaders/fastWhereFilterHash.test.d.ts.map +1 -0
- package/build/dataloaders/fastWhereFilterHash.test.js +59 -0
- package/build/dataloaders/fastWhereFilterHash.test.js.map +1 -0
- package/build/dataloaders/findCountDataLoader.d.ts +13 -4
- package/build/dataloaders/findCountDataLoader.d.ts.map +1 -1
- package/build/dataloaders/findCountDataLoader.js +58 -15
- package/build/dataloaders/findCountDataLoader.js.map +1 -1
- package/build/dataloaders/findDataLoader.d.ts +49 -10
- package/build/dataloaders/findDataLoader.d.ts.map +1 -1
- package/build/dataloaders/findDataLoader.js +217 -108
- package/build/dataloaders/findDataLoader.js.map +1 -1
- package/build/dataloaders/findIdsDataLoader.d.ts +1 -2
- package/build/dataloaders/findIdsDataLoader.d.ts.map +1 -1
- package/build/dataloaders/findIdsDataLoader.js +18 -17
- package/build/dataloaders/findIdsDataLoader.js.map +1 -1
- package/build/dataloaders/findOrCreateDataLoader.d.ts.map +1 -1
- package/build/dataloaders/findOrCreateDataLoader.js +3 -3
- package/build/dataloaders/findOrCreateDataLoader.js.map +1 -1
- package/build/dataloaders/findPaginatedDataLoader.d.ts +7 -0
- package/build/dataloaders/findPaginatedDataLoader.d.ts.map +1 -0
- package/build/dataloaders/findPaginatedDataLoader.js +84 -0
- package/build/dataloaders/findPaginatedDataLoader.js.map +1 -0
- package/build/dataloaders/manyToManyFindDataLoader.js +7 -1
- package/build/dataloaders/manyToManyFindDataLoader.js.map +1 -1
- package/build/drivers/EntityWriter.js +13 -7
- package/build/drivers/EntityWriter.js.map +1 -1
- package/build/drivers/buildRawQuery.d.ts +6 -4
- package/build/drivers/buildRawQuery.d.ts.map +1 -1
- package/build/drivers/buildRawQuery.js +8 -4
- package/build/drivers/buildRawQuery.js.map +1 -1
- package/build/fields.d.ts +2 -0
- package/build/fields.d.ts.map +1 -1
- package/build/fields.js +18 -6
- package/build/fields.js.map +1 -1
- package/build/index.d.ts +3 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +4 -1
- package/build/index.js.map +1 -1
- package/build/keys.d.ts.map +1 -1
- package/build/keys.js +8 -6
- package/build/keys.js.map +1 -1
- package/build/loadHints.d.ts +13 -4
- package/build/loadHints.d.ts.map +1 -1
- package/build/loadHints.js +63 -9
- package/build/loadHints.js.map +1 -1
- package/build/loadLens.d.ts +11 -0
- package/build/loadLens.d.ts.map +1 -1
- package/build/loadLens.js +43 -10
- package/build/loadLens.js.map +1 -1
- package/build/newEntity.d.ts.map +1 -1
- package/build/newEntity.js +16 -14
- package/build/newEntity.js.map +1 -1
- package/build/newTestInstance.d.ts.map +1 -1
- package/build/newTestInstance.js +3 -0
- package/build/newTestInstance.js.map +1 -1
- package/build/normalizeHints.d.ts +7 -0
- package/build/normalizeHints.d.ts.map +1 -1
- package/build/normalizeHints.js +40 -2
- package/build/normalizeHints.js.map +1 -1
- package/build/preloading/JsonAggregatePreloader.d.ts.map +1 -1
- package/build/preloading/JsonAggregatePreloader.js +91 -9
- package/build/preloading/JsonAggregatePreloader.js.map +1 -1
- package/build/preloading/canPreload.d.ts +2 -2
- package/build/preloading/canPreload.d.ts.map +1 -1
- package/build/preloading/canPreload.js +3 -0
- package/build/preloading/canPreload.js.map +1 -1
- package/build/preloading/partitionHint.d.ts.map +1 -1
- package/build/preloading/partitionHint.js +10 -4
- package/build/preloading/partitionHint.js.map +1 -1
- package/build/reactiveHints.d.ts +2 -2
- package/build/reactiveHints.d.ts.map +1 -1
- package/build/reactiveHints.js +9 -0
- package/build/reactiveHints.js.map +1 -1
- package/build/relations/EnumCollection.d.ts +81 -0
- package/build/relations/EnumCollection.d.ts.map +1 -0
- package/build/relations/EnumCollection.js +211 -0
- package/build/relations/EnumCollection.js.map +1 -0
- package/build/relations/ManyToManyCollection.d.ts +1 -0
- package/build/relations/ManyToManyCollection.d.ts.map +1 -1
- package/build/relations/ManyToManyCollection.js +5 -2
- package/build/relations/ManyToManyCollection.js.map +1 -1
- package/build/relations/ManyToManyLargeCollection.d.ts +3 -2
- package/build/relations/ManyToManyLargeCollection.d.ts.map +1 -1
- package/build/relations/ManyToManyLargeCollection.js +7 -4
- package/build/relations/ManyToManyLargeCollection.js.map +1 -1
- package/build/relations/OneToManyCollection.d.ts.map +1 -1
- package/build/relations/OneToManyCollection.js +2 -2
- package/build/relations/OneToManyCollection.js.map +1 -1
- package/build/relations/OneToManyLargeCollection.d.ts.map +1 -1
- package/build/relations/OneToManyLargeCollection.js +2 -1
- package/build/relations/OneToManyLargeCollection.js.map +1 -1
- package/build/relations/ReactiveManyToMany.d.ts +1 -0
- package/build/relations/ReactiveManyToMany.d.ts.map +1 -1
- package/build/relations/ReactiveManyToMany.js +4 -1
- package/build/relations/ReactiveManyToMany.js.map +1 -1
- package/build/relations/ReactiveManyToManyOtherSide.d.ts +1 -0
- package/build/relations/ReactiveManyToManyOtherSide.d.ts.map +1 -1
- package/build/relations/ReactiveManyToManyOtherSide.js +4 -1
- package/build/relations/ReactiveManyToManyOtherSide.js.map +1 -1
- package/build/relations/RecursiveCollection.d.ts +2 -6
- package/build/relations/RecursiveCollection.d.ts.map +1 -1
- package/build/relations/RecursiveCollection.js +9 -17
- package/build/relations/RecursiveCollection.js.map +1 -1
- package/build/relations/RecursiveCycleError.d.ts +13 -0
- package/build/relations/RecursiveCycleError.d.ts.map +1 -0
- package/build/relations/RecursiveCycleError.js +15 -0
- package/build/relations/RecursiveCycleError.js.map +1 -0
- package/build/relations/hasOneThrough.d.ts.map +1 -1
- package/build/relations/hasOneThrough.js +6 -4
- package/build/relations/hasOneThrough.js.map +1 -1
- package/build/relations/hasProperty.d.ts +2 -1
- package/build/relations/hasProperty.d.ts.map +1 -1
- package/build/relations/hasProperty.js +15 -5
- package/build/relations/hasProperty.js.map +1 -1
- package/build/relations/index.d.ts +1 -0
- package/build/relations/index.d.ts.map +1 -1
- package/build/relations/index.js +5 -2
- package/build/relations/index.js.map +1 -1
- package/build/rules.js +1 -1
- package/build/rules.js.map +1 -1
- package/build/scopes.d.ts +185 -0
- package/build/scopes.d.ts.map +1 -0
- package/build/scopes.js +302 -0
- package/build/scopes.js.map +1 -0
- package/build/temporal.d.ts +32 -2
- package/build/temporal.d.ts.map +1 -1
- package/build/temporal.js +18 -0
- package/build/temporal.js.map +1 -1
- package/build/upsert.d.ts.map +1 -1
- package/build/upsert.js +9 -2
- package/build/upsert.js.map +1 -1
- package/build/utils.d.ts +2 -0
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +12 -0
- package/build/utils.js.map +1 -1
- package/package.json +8 -10
- package/build/caches.d.ts +0 -6
- package/build/caches.d.ts.map +0 -1
- package/build/caches.js +0 -42
- package/build/caches.js.map +0 -1
package/build/configure.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.getConstructorFromTag = getConstructorFromTag;
|
|
|
6
6
|
exports.getConstructorFromTaggedId = getConstructorFromTaggedId;
|
|
7
7
|
exports.getMetadataForTable = getMetadataForTable;
|
|
8
8
|
exports.getMetadataForType = getMetadataForType;
|
|
9
|
+
exports.maybeGetMetadataForType = maybeGetMetadataForType;
|
|
9
10
|
exports.maybeGetConstructorFromReference = maybeGetConstructorFromReference;
|
|
10
11
|
const EntityMetadata_1 = require("./EntityMetadata");
|
|
11
12
|
const config_1 = require("./config");
|
|
@@ -32,6 +33,7 @@ function configureMetadata(metas) {
|
|
|
32
33
|
try {
|
|
33
34
|
populateConstructorMaps(metas);
|
|
34
35
|
hookUpBaseTypeAndSubTypes(metas);
|
|
36
|
+
installMetadataGetters(metas);
|
|
35
37
|
sortMetasByBaseType(metas);
|
|
36
38
|
setImmutableFields(metas);
|
|
37
39
|
populatePolyComponentFields(metas);
|
|
@@ -42,6 +44,7 @@ function configureMetadata(metas) {
|
|
|
42
44
|
// Do these after `fireAfterMetadatas`, in case afterMetadata callbacks added more defaults/rules
|
|
43
45
|
copyAsyncDefaults(metas);
|
|
44
46
|
reverseIndexReactivity(metas);
|
|
47
|
+
installReactiveMetadataGetters(metas);
|
|
45
48
|
copyRunBeforeBooksToBaseType(metas);
|
|
46
49
|
}
|
|
47
50
|
catch (e) {
|
|
@@ -49,6 +52,52 @@ function configureMetadata(metas) {
|
|
|
49
52
|
throw e;
|
|
50
53
|
}
|
|
51
54
|
}
|
|
55
|
+
/** Installs lazy lookup getters for metadata-derived caches. */
|
|
56
|
+
function installMetadataGetters(metas) {
|
|
57
|
+
for (const meta of metas) {
|
|
58
|
+
(0, utils_1.defineLazyGetter)(meta, "subTypesByType", function buildSubTypesByType() {
|
|
59
|
+
return new Map(meta.subTypes.map((st) => [st.type, st]));
|
|
60
|
+
});
|
|
61
|
+
(0, utils_1.defineLazyGetter)(meta, "subTypesByStiValue", function buildSubTypesByStiValue() {
|
|
62
|
+
return new Map(meta.subTypes.map((st) => [st.stiDiscriminatorValue, st]));
|
|
63
|
+
});
|
|
64
|
+
(0, utils_1.defineLazyGetter)(meta, "stiDiscriminatorColumnName", function buildStiDiscriminatorColumnName() {
|
|
65
|
+
const field = meta.fields[meta.stiDiscriminatorField];
|
|
66
|
+
if (field === undefined)
|
|
67
|
+
throw new Error(`${meta.type} does not have an STI discriminator field`);
|
|
68
|
+
if (field.kind !== "enum")
|
|
69
|
+
throw new Error("Discriminator field must be an enum");
|
|
70
|
+
return field.serde.columns[0].columnName;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/** Installs lazy getters for reactivity caches after reactivity has been reverse-indexed. */
|
|
75
|
+
function installReactiveMetadataGetters(metas) {
|
|
76
|
+
for (const meta of metas) {
|
|
77
|
+
(0, utils_1.defineLazyGetter)(meta, "reactables", function buildReactables() {
|
|
78
|
+
return (0, EntityMetadata_1.getBaseAndSelfMetas)(meta)
|
|
79
|
+
.flatMap((m) => m.config.__data.reactables)
|
|
80
|
+
.filter((r) => !r.isReadOnly);
|
|
81
|
+
});
|
|
82
|
+
(0, utils_1.defineLazyGetter)(meta, "reactablesByField", function buildReactablesByField() {
|
|
83
|
+
return indexReactablesByField(meta.reactables);
|
|
84
|
+
});
|
|
85
|
+
(0, utils_1.defineLazyGetter)(meta, "reactablesIncludingReadOnly", function buildReactablesIncludingReadOnly() {
|
|
86
|
+
return (0, EntityMetadata_1.getBaseAndSelfMetas)(meta).flatMap((m) => m.config.__data.reactables);
|
|
87
|
+
});
|
|
88
|
+
(0, utils_1.defineLazyGetter)(meta, "reactablesIncludingReadOnlyByField", function buildReactablesIncludingReadOnlyByField() {
|
|
89
|
+
return indexReactablesByField(meta.reactablesIncludingReadOnly);
|
|
90
|
+
});
|
|
91
|
+
(0, utils_1.defineLazyGetter)(meta, "reactiveRules", function buildReactiveRules() {
|
|
92
|
+
// We use "AndSub" because `reactiveRules` is called with `todo.metadata`, which is always
|
|
93
|
+
// the root type, but ofc we don't want to skip subtype rules.
|
|
94
|
+
//
|
|
95
|
+
// I had considered filtering this list with `rr.fields.length > 0`, but even rules with 100%
|
|
96
|
+
// immutable fields (so all read-only, and so not "reactive") need to run on initial entity creation.
|
|
97
|
+
return (0, EntityMetadata_1.getBaseSelfAndSubMetas)(meta).flatMap((m) => m.config.__data.reactiveRules);
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}
|
|
52
101
|
// Sort metas in place by inheritance hierarchy so that the base type comes before subtypes
|
|
53
102
|
function sortMetasByBaseType(metas) {
|
|
54
103
|
metas.sort(compareMetasByBaseType);
|
|
@@ -88,6 +137,10 @@ function getMetadataForTable(tableName) {
|
|
|
88
137
|
function getMetadataForType(typeName) {
|
|
89
138
|
return typeToMetaMap.get(typeName) ?? (0, utils_1.fail)(`Unknown type ${typeName}`);
|
|
90
139
|
}
|
|
140
|
+
/** Returns metadata for `typeName`, if `configureMetadata` has populated the type map. */
|
|
141
|
+
function maybeGetMetadataForType(typeName) {
|
|
142
|
+
return typeToMetaMap.get(typeName);
|
|
143
|
+
}
|
|
91
144
|
function maybeGetConstructorFromReference(value) {
|
|
92
145
|
const id = (0, keys_1.maybeResolveReferenceToId)(value);
|
|
93
146
|
return id ? getConstructorFromTaggedId(id) : undefined;
|
|
@@ -162,6 +215,7 @@ function hookUpBaseTypeAndSubTypes(metas) {
|
|
|
162
215
|
// can be used to reverse validation rules/RFs.
|
|
163
216
|
delete m.fields[name];
|
|
164
217
|
m.allFields[name].aliasSuffix = aliasSuffix;
|
|
218
|
+
m.allFields[name].specialized = true;
|
|
165
219
|
}
|
|
166
220
|
else {
|
|
167
221
|
m.allFields[name] = { ...field, aliasSuffix };
|
|
@@ -326,4 +380,20 @@ function copyRunBeforeBooksToBaseType(meta) {
|
|
|
326
380
|
}
|
|
327
381
|
}
|
|
328
382
|
}
|
|
383
|
+
/** Indexes reactables once so field setters don't scan every reactable's fields. */
|
|
384
|
+
function indexReactablesByField(reactables) {
|
|
385
|
+
const byField = new Map();
|
|
386
|
+
for (const reactable of reactables) {
|
|
387
|
+
for (const field of reactable.fields) {
|
|
388
|
+
let fields = byField.get(field);
|
|
389
|
+
if (fields === undefined) {
|
|
390
|
+
fields = [];
|
|
391
|
+
byField.set(field, fields);
|
|
392
|
+
}
|
|
393
|
+
if (!fields.includes(reactable))
|
|
394
|
+
fields.push(reactable);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
return byField;
|
|
398
|
+
}
|
|
329
399
|
//# sourceMappingURL=configure.js.map
|
package/build/configure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../src/configure.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns a fast stable key for find filters.
|
|
3
|
+
*
|
|
4
|
+
* This avoids `object-hash` for simple find filters; the phase 8 query-prep benchmark saw 1,000-query p50s drop
|
|
5
|
+
* from ~22-26ms to ~7.6-10.9ms, with heap allocation dropping from ~24-30MB to ~10-16MB.
|
|
6
|
+
*
|
|
7
|
+
* We also benchmarked native/WASM non-cryptographic hash libraries, but they only hash bytes; they still need this
|
|
8
|
+
* deterministic serialization first. For 1,000 filter keys, this helper alone had p50s of 0.337/0.353/0.410ms vs.
|
|
9
|
+
* object-hash md5 at 7.467/7.436/7.620ms, and wrapping this key with native hashes was slower: farmhash
|
|
10
|
+
* fingerprint64 at 0.517/0.524/0.538ms, @node-rs/xxhash xxh3-128 at 0.611/0.613/0.627ms, and xxhash-addon
|
|
11
|
+
* XXH128 at 1.031/1.078/1.348ms. So the stable serialization is the necessary work, and keeping it as the cache
|
|
12
|
+
* key avoids extra native-call/digest overhead and avoids introducing probabilistic hash collisions.
|
|
13
|
+
*/
|
|
14
|
+
export declare function fastWhereFilterHash(value: unknown): string | undefined;
|
|
15
|
+
//# sourceMappingURL=fastWhereFilterHash.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastWhereFilterHash.d.ts","sourceRoot":"","sources":["../../src/dataloaders/fastWhereFilterHash.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAEtE"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fastWhereFilterHash = fastWhereFilterHash;
|
|
4
|
+
const Aliases_1 = require("../Aliases");
|
|
5
|
+
const Entity_1 = require("../Entity");
|
|
6
|
+
const relations_1 = require("../relations");
|
|
7
|
+
const temporal_1 = require("../temporal");
|
|
8
|
+
const temporalMappers_1 = require("../temporalMappers");
|
|
9
|
+
const Temporal = (0, temporal_1.maybeRequireTemporal)()?.Temporal;
|
|
10
|
+
/**
|
|
11
|
+
* Returns a fast stable key for find filters.
|
|
12
|
+
*
|
|
13
|
+
* This avoids `object-hash` for simple find filters; the phase 8 query-prep benchmark saw 1,000-query p50s drop
|
|
14
|
+
* from ~22-26ms to ~7.6-10.9ms, with heap allocation dropping from ~24-30MB to ~10-16MB.
|
|
15
|
+
*
|
|
16
|
+
* We also benchmarked native/WASM non-cryptographic hash libraries, but they only hash bytes; they still need this
|
|
17
|
+
* deterministic serialization first. For 1,000 filter keys, this helper alone had p50s of 0.337/0.353/0.410ms vs.
|
|
18
|
+
* object-hash md5 at 7.467/7.436/7.620ms, and wrapping this key with native hashes was slower: farmhash
|
|
19
|
+
* fingerprint64 at 0.517/0.524/0.538ms, @node-rs/xxhash xxh3-128 at 0.611/0.613/0.627ms, and xxhash-addon
|
|
20
|
+
* XXH128 at 1.031/1.078/1.348ms. So the stable serialization is the necessary work, and keeping it as the cache
|
|
21
|
+
* key avoids extra native-call/digest overhead and avoids introducing probabilistic hash collisions.
|
|
22
|
+
*/
|
|
23
|
+
function fastWhereFilterHash(value) {
|
|
24
|
+
return appendStableValue("", value, new WeakSet());
|
|
25
|
+
}
|
|
26
|
+
/** Appends a deterministic, type-tagged representation of `value` to `key`. */
|
|
27
|
+
function appendStableValue(key, value, seen) {
|
|
28
|
+
if (value === undefined)
|
|
29
|
+
return `${key}u;`;
|
|
30
|
+
if (value === null)
|
|
31
|
+
return `${key}n;`;
|
|
32
|
+
switch (typeof value) {
|
|
33
|
+
case "string":
|
|
34
|
+
return `${key}s${value.length}:${value};`;
|
|
35
|
+
case "number":
|
|
36
|
+
return `${key}d${value};`;
|
|
37
|
+
case "boolean":
|
|
38
|
+
return `${key}b${value ? 1 : 0};`;
|
|
39
|
+
case "bigint":
|
|
40
|
+
return `${key}i${value.toString()};`;
|
|
41
|
+
case "object":
|
|
42
|
+
return appendStableObject(key, value, seen);
|
|
43
|
+
case "function":
|
|
44
|
+
return (0, Aliases_1.isAlias)(value) ? `${key}xalias;` : undefined;
|
|
45
|
+
default:
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Appends a deterministic, type-tagged representation of `value` to `key`. */
|
|
50
|
+
function appendStableObject(key, value, seen) {
|
|
51
|
+
if (value instanceof Date)
|
|
52
|
+
return `${key}t${value.toISOString().length}:${value.toISOString()};`;
|
|
53
|
+
if (ArrayBuffer.isView(value))
|
|
54
|
+
return appendArrayBufferView(key, value);
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
if (seen.has(value))
|
|
57
|
+
return undefined;
|
|
58
|
+
seen.add(value);
|
|
59
|
+
key = `${key}a${value.length}[`;
|
|
60
|
+
for (const item of value) {
|
|
61
|
+
const nextKey = appendStableValue(key, item, seen);
|
|
62
|
+
if (nextKey === undefined) {
|
|
63
|
+
seen.delete(value);
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
key = nextKey;
|
|
67
|
+
}
|
|
68
|
+
seen.delete(value);
|
|
69
|
+
return `${key}]`;
|
|
70
|
+
}
|
|
71
|
+
if (isPlainObject(value)) {
|
|
72
|
+
if (seen.has(value))
|
|
73
|
+
return undefined;
|
|
74
|
+
seen.add(value);
|
|
75
|
+
const keys = Object.keys(value).sort();
|
|
76
|
+
key = `${key}o${keys.length}{`;
|
|
77
|
+
for (const property of keys) {
|
|
78
|
+
key = `${key}${property.length}:${property}=`;
|
|
79
|
+
const nextKey = appendStableValue(key, value[property], seen);
|
|
80
|
+
if (nextKey === undefined) {
|
|
81
|
+
seen.delete(value);
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
key = nextKey;
|
|
85
|
+
}
|
|
86
|
+
seen.delete(value);
|
|
87
|
+
return `${key}}`;
|
|
88
|
+
}
|
|
89
|
+
if ((0, Entity_1.isEntity)(value))
|
|
90
|
+
return `${key}e${value.toString().length}:${value.toString()};`;
|
|
91
|
+
const referenceKey = appendReferenceValue(key, value);
|
|
92
|
+
if (referenceKey !== undefined)
|
|
93
|
+
return referenceKey;
|
|
94
|
+
const temporalValue = toTemporalDbValue(value);
|
|
95
|
+
if (temporalValue !== undefined)
|
|
96
|
+
return appendTemporalValue(key, temporalValue);
|
|
97
|
+
const valueObjectKey = appendValueObject(key, value, seen);
|
|
98
|
+
if (valueObjectKey !== undefined)
|
|
99
|
+
return valueObjectKey;
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
/** Appends an ArrayBuffer view by its exact byte contents. */
|
|
103
|
+
function appendArrayBufferView(key, value) {
|
|
104
|
+
const bytes = Buffer.from(value.buffer, value.byteOffset, value.byteLength).toString("base64");
|
|
105
|
+
return `${key}y${value.constructor.name.length}:${value.constructor.name}:${bytes.length}:${bytes};`;
|
|
106
|
+
}
|
|
107
|
+
/** Appends a Joist reference by its tagged id. */
|
|
108
|
+
function appendReferenceValue(key, value) {
|
|
109
|
+
if (!(0, relations_1.isReference)(value))
|
|
110
|
+
return undefined;
|
|
111
|
+
const id = value.idTaggedMaybe;
|
|
112
|
+
return id === undefined ? `${key}r;` : `${key}r${id.length}:${id};`;
|
|
113
|
+
}
|
|
114
|
+
/** Appends a custom value object by constructor name and enumerable properties. */
|
|
115
|
+
function appendValueObject(key, value, seen) {
|
|
116
|
+
if (!isValueObject(value))
|
|
117
|
+
return undefined;
|
|
118
|
+
if (seen.has(value))
|
|
119
|
+
return undefined;
|
|
120
|
+
seen.add(value);
|
|
121
|
+
const constructorName = value.constructor.name;
|
|
122
|
+
const keys = Object.keys(value).sort();
|
|
123
|
+
key = `${key}c${constructorName.length}:${constructorName}:${keys.length}{`;
|
|
124
|
+
for (const property of keys) {
|
|
125
|
+
key = `${key}${property.length}:${property}=`;
|
|
126
|
+
const nextKey = appendStableValue(key, value[property], seen);
|
|
127
|
+
if (nextKey === undefined) {
|
|
128
|
+
seen.delete(value);
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
key = nextKey;
|
|
132
|
+
}
|
|
133
|
+
seen.delete(value);
|
|
134
|
+
return `${key}}`;
|
|
135
|
+
}
|
|
136
|
+
/** Appends a Temporal value as a distinct scalar type. */
|
|
137
|
+
function appendTemporalValue(key, value) {
|
|
138
|
+
return `${key}t${value.length}:${value};`;
|
|
139
|
+
}
|
|
140
|
+
/** Returns the db representation for Temporal values, or undefined for non-Temporal values. */
|
|
141
|
+
function toTemporalDbValue(value) {
|
|
142
|
+
if (!Temporal)
|
|
143
|
+
return undefined;
|
|
144
|
+
if (value instanceof Temporal.ZonedDateTime)
|
|
145
|
+
return temporalMappers_1.zonedDateTimeMapper.toDb(value);
|
|
146
|
+
if (value instanceof Temporal.PlainDateTime)
|
|
147
|
+
return temporalMappers_1.plainDateTimeMapper.toDb(value);
|
|
148
|
+
if (value instanceof Temporal.PlainDate)
|
|
149
|
+
return temporalMappers_1.plainDateMapper.toDb(value);
|
|
150
|
+
if (value instanceof Temporal.PlainTime)
|
|
151
|
+
return temporalMappers_1.plainTimeMapper.toDb(value);
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
/** Returns true for plain object literals used by find filters/settings. */
|
|
155
|
+
function isPlainObject(value) {
|
|
156
|
+
const prototype = Object.getPrototypeOf(value);
|
|
157
|
+
return prototype === Object.prototype || prototype === null;
|
|
158
|
+
}
|
|
159
|
+
/** Returns true for custom value objects that can be represented by enumerable fields. */
|
|
160
|
+
function isValueObject(value) {
|
|
161
|
+
const prototype = Object.getPrototypeOf(value);
|
|
162
|
+
return prototype !== Object.prototype && prototype !== null && Object.keys(value).length > 0;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=fastWhereFilterHash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastWhereFilterHash.js","sourceRoot":"","sources":["../../src/dataloaders/fastWhereFilterHash.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastWhereFilterHash.test.d.ts","sourceRoot":"","sources":["../../src/dataloaders/fastWhereFilterHash.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fastWhereFilterHash_1 = require("./fastWhereFilterHash");
|
|
4
|
+
describe("fastWhereFilterHash", () => {
|
|
5
|
+
it("returns stable hashes for object keys regardless of insertion order", () => {
|
|
6
|
+
const first = (0, fastWhereFilterHash_1.fastWhereFilterHash)({ b: 2, a: "one" });
|
|
7
|
+
const second = (0, fastWhereFilterHash_1.fastWhereFilterHash)({ a: "one", b: 2 });
|
|
8
|
+
expect(first).toEqual("o2{1:a=s3:one;1:b=d2;}");
|
|
9
|
+
expect(second).toEqual(first);
|
|
10
|
+
});
|
|
11
|
+
it("uses type tags to distinguish similar scalar values", () => {
|
|
12
|
+
expect([
|
|
13
|
+
(0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: "1" }),
|
|
14
|
+
(0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: 1 }),
|
|
15
|
+
(0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: true }),
|
|
16
|
+
(0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: 1n }),
|
|
17
|
+
(0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: null }),
|
|
18
|
+
(0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: undefined }),
|
|
19
|
+
]).toEqual([
|
|
20
|
+
"o1{5:value=s1:1;}",
|
|
21
|
+
"o1{5:value=d1;}",
|
|
22
|
+
"o1{5:value=b1;}",
|
|
23
|
+
"o1{5:value=i1;}",
|
|
24
|
+
"o1{5:value=n;}",
|
|
25
|
+
"o1{5:value=u;}",
|
|
26
|
+
]);
|
|
27
|
+
});
|
|
28
|
+
it("hashes nested arrays and plain objects", () => {
|
|
29
|
+
const hash = (0, fastWhereFilterHash_1.fastWhereFilterHash)({ ids: [1, 2], nested: { name: "a1" } });
|
|
30
|
+
expect(hash).toEqual("o2{3:ids=a2[d1;d2;]6:nested=o1{4:name=s2:a1;}}");
|
|
31
|
+
});
|
|
32
|
+
it("hashes date values with their db representation", () => {
|
|
33
|
+
expect((0, fastWhereFilterHash_1.fastWhereFilterHash)({ at: new Date("2020-01-02T03:04:05.000Z") })).toEqual("o1{2:at=t24:2020-01-02T03:04:05.000Z;}");
|
|
34
|
+
});
|
|
35
|
+
it("hashes byte array values by their contents", () => {
|
|
36
|
+
expect((0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: new Uint8Array([11, 22]) })).toEqual("o1{5:value=y10:Uint8Array:4:CxY=;}");
|
|
37
|
+
});
|
|
38
|
+
it("hashes custom value objects by constructor and enumerable values", () => {
|
|
39
|
+
expect((0, fastWhereFilterHash_1.fastWhereFilterHash)({ value: new SupportedValue("a1") })).toEqual("o1{5:value=c14:SupportedValue:1{4:name=s2:a1;}}");
|
|
40
|
+
});
|
|
41
|
+
it("returns undefined for unsupported object types", () => {
|
|
42
|
+
expect([
|
|
43
|
+
(0, fastWhereFilterHash_1.fastWhereFilterHash)(new Map([["name", "a1"]])),
|
|
44
|
+
(0, fastWhereFilterHash_1.fastWhereFilterHash)(function unsupportedFunction() { }),
|
|
45
|
+
]).toEqual([undefined, undefined]);
|
|
46
|
+
});
|
|
47
|
+
it("returns undefined for circular structures", () => {
|
|
48
|
+
const value = { name: "a1" };
|
|
49
|
+
value.self = value;
|
|
50
|
+
expect((0, fastWhereFilterHash_1.fastWhereFilterHash)(value)).toEqual(undefined);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
class SupportedValue {
|
|
54
|
+
name;
|
|
55
|
+
constructor(name) {
|
|
56
|
+
this.name = name;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=fastWhereFilterHash.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fastWhereFilterHash.test.js","sourceRoot":"","sources":["../../src/dataloaders/fastWhereFilterHash.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
-
import DataLoader from "dataloader";
|
|
2
1
|
import { Entity } from "../Entity";
|
|
3
|
-
import { FilterAndSettings } from "../EntityFilter";
|
|
4
|
-
import {
|
|
2
|
+
import { FilterAndSettings, FindFilter } from "../EntityFilter";
|
|
3
|
+
import { GraphQLFilterWithAlias } from "../EntityGraphQLFilter";
|
|
4
|
+
import { EntityManager, FindCountFilterOptions, MaybeAbstractEntityConstructor } from "../EntityManager";
|
|
5
5
|
export declare const findCountOperation = "find-count";
|
|
6
|
-
export declare function findCountDataLoader<T extends Entity>(em: EntityManager, type: MaybeAbstractEntityConstructor<T>, filter: FilterAndSettings<T>):
|
|
6
|
+
export declare function findCountDataLoader<T extends Entity>(em: EntityManager, type: MaybeAbstractEntityConstructor<T>, filter: FilterAndSettings<T>): Promise<number>;
|
|
7
|
+
/** Merges root-scope count/id settings with caller options, dropping pagination-only settings. */
|
|
8
|
+
export declare function mergeCountOptions<T extends Entity>(where: FindFilter<T>, options: FindCountFilterOptions<T>): {
|
|
9
|
+
where: FindFilter<T>;
|
|
10
|
+
options: FindCountFilterOptions<T>;
|
|
11
|
+
};
|
|
12
|
+
export declare function mergeCountOptions<T extends Entity>(where: FindFilter<T> | GraphQLFilterWithAlias<T>, options: FindCountFilterOptions<T>): {
|
|
13
|
+
where: FindFilter<T> | GraphQLFilterWithAlias<T>;
|
|
14
|
+
options: FindCountFilterOptions<T>;
|
|
15
|
+
};
|
|
7
16
|
//# sourceMappingURL=findCountDataLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findCountDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataloaders/findCountDataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"findCountDataLoader.d.ts","sourceRoot":"","sources":["../../src/dataloaders/findCountDataLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,aAAa,EACb,sBAAsB,EAEtB,8BAA8B,EAC/B,MAAM,kBAAkB,CAAC;AAe1B,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAClD,EAAE,EAAE,aAAa,EACjB,IAAI,EAAE,8BAA8B,CAAC,CAAC,CAAC,EACvC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,MAAM,CAAC,CA8EjB;AAED,kGAAkG;AAClG,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC;IAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAChE,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAChD,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,EAChD,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACjC;IAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC"}
|
|
@@ -2,9 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.findCountOperation = void 0;
|
|
4
4
|
exports.findCountDataLoader = findCountDataLoader;
|
|
5
|
+
exports.mergeCountOptions = mergeCountOptions;
|
|
6
|
+
const EntityManager_1 = require("../EntityManager");
|
|
5
7
|
const EntityMetadata_1 = require("../EntityMetadata");
|
|
6
8
|
const keywords_1 = require("../keywords");
|
|
7
9
|
const QueryParser_1 = require("../QueryParser");
|
|
10
|
+
const scopes_1 = require("../scopes");
|
|
8
11
|
const unnest_1 = require("../unnest");
|
|
9
12
|
const utils_1 = require("../utils");
|
|
10
13
|
const findDataLoader_1 = require("./findDataLoader");
|
|
@@ -16,18 +19,22 @@ function findCountDataLoader(em, type, filter) {
|
|
|
16
19
|
}
|
|
17
20
|
const meta = (0, EntityMetadata_1.getMetadata)(type);
|
|
18
21
|
const query = (0, QueryParser_1.parseFindQuery)(meta, where, opts);
|
|
22
|
+
const pendingDeletedIds = appendPendingDeletedIds(em, type, query, meta.idDbType, where, opts);
|
|
23
|
+
const { findSettings } = em["prepareFind"](meta, exports.findCountOperation, query, { ...opts, checkLimit: false });
|
|
24
|
+
const bindings = [];
|
|
25
|
+
(0, findDataLoader_1.collectValues)(bindings, query);
|
|
26
|
+
const prepared = { filter, pendingDeletedIds, query, bindings, findSettings };
|
|
19
27
|
const batchKey = (0, findDataLoader_1.getBatchKeyFromGenericStructure)(meta, query);
|
|
20
|
-
return em
|
|
28
|
+
return em
|
|
29
|
+
.getLoader(exports.findCountOperation, batchKey, async (entries) => {
|
|
21
30
|
// We're guaranteed that these queries all have the same structure
|
|
22
31
|
// Don't bother with the CTE if there's only 1 query (or each query has exactly the same filter values)
|
|
23
|
-
if (
|
|
24
|
-
const {
|
|
25
|
-
const meta = (0, EntityMetadata_1.getMetadata)(type);
|
|
26
|
-
const query = (0, QueryParser_1.parseFindQuery)(meta, where, options);
|
|
32
|
+
if (entries.length === 1) {
|
|
33
|
+
const { query, findSettings } = entries[0];
|
|
27
34
|
const primary = query.tables.find((t) => t.join === "primary") ?? (0, utils_1.fail)("No primary");
|
|
28
35
|
query.selects = [`count(distinct ${(0, keywords_1.kq)(primary.alias)}.id) as count`];
|
|
29
36
|
query.orderBys = [];
|
|
30
|
-
const rows = await em["
|
|
37
|
+
const rows = await em["executePreparedFind"](meta, exports.findCountOperation, query, findSettings, false);
|
|
31
38
|
return [Number(rows[0].count)];
|
|
32
39
|
}
|
|
33
40
|
// WITH _find (tag, arg1, arg2) AS (
|
|
@@ -40,10 +47,9 @@ function findCountDataLoader(em, type, filter) {
|
|
|
40
47
|
// FROM author a WHERE a.first_name = _find.arg1 OR a.last_name = _find.arg2
|
|
41
48
|
// ) _data
|
|
42
49
|
// Build the list of 'arg1', 'arg2', ... strings
|
|
43
|
-
const {
|
|
44
|
-
const
|
|
45
|
-
const argsColumns =
|
|
46
|
-
argsColumns.unshift({ columnName: "tag", dbType: "int" });
|
|
50
|
+
const { query, findSettings } = entries[0];
|
|
51
|
+
const args = (0, findDataLoader_1.collectAndReplaceArgs)(query, entries);
|
|
52
|
+
const argsColumns = [{ columnName: "tag", dbType: "int" }, ...args.map((a) => a.column)];
|
|
47
53
|
// We're not returning the entities, just counting them...
|
|
48
54
|
const primary = query.tables.find((t) => t.join === "primary") ?? (0, utils_1.fail)("No primary");
|
|
49
55
|
query.selects = [`count(distinct ${(0, keywords_1.kq)(primary.alias)}.id) as count`];
|
|
@@ -56,19 +62,56 @@ function findCountDataLoader(em, type, filter) {
|
|
|
56
62
|
{ join: "lateral", query: query, table: meta.tableName, alias: "_data", fromAlias: "_f" },
|
|
57
63
|
],
|
|
58
64
|
// For each unique query, capture its filter values in `bindings` to populate the CTE _find table
|
|
59
|
-
ctes: [(0, unnest_1.buildUnnestCte)("_find", argsColumns, (0, findDataLoader_1.
|
|
65
|
+
ctes: [(0, unnest_1.buildUnnestCte)("_find", argsColumns, (0, findDataLoader_1.createColumnValuesFromPrepared)(args, entries))],
|
|
60
66
|
orderBys: [],
|
|
61
67
|
};
|
|
62
|
-
const rows = await em["
|
|
68
|
+
const rows = await em["executePreparedFind"](meta, exports.findCountOperation, query2, findSettings, false);
|
|
63
69
|
// Make an empty array for each batched query, per the dataloader contract
|
|
64
|
-
const results =
|
|
70
|
+
const results = entries.map(() => 0);
|
|
65
71
|
// Then put each row into the tagged query it matched
|
|
66
72
|
for (const row of rows) {
|
|
67
73
|
results[row.tag] = Number(row.count);
|
|
68
74
|
}
|
|
69
75
|
return results;
|
|
70
76
|
},
|
|
71
|
-
// Our filter/order tuple is a complex object, so
|
|
72
|
-
{ cacheKeyFn: findDataLoader_1.
|
|
77
|
+
// Our filter/order tuple is a complex object, so use a stable cache key to ensure caching works.
|
|
78
|
+
{ cacheKeyFn: (entry) => (0, findDataLoader_1.queryFilterHash)(entry) })
|
|
79
|
+
.load(prepared);
|
|
80
|
+
}
|
|
81
|
+
function mergeCountOptions(where, options) {
|
|
82
|
+
if (!(0, scopes_1.isScope)(where))
|
|
83
|
+
return { where, options };
|
|
84
|
+
const resolved = (0, scopes_1.resolveScope)(where);
|
|
85
|
+
const scopeOptions = {};
|
|
86
|
+
if (resolved.softDeletes !== undefined)
|
|
87
|
+
scopeOptions.softDeletes = resolved.softDeletes;
|
|
88
|
+
return { where, options: { ...scopeOptions, ...options } };
|
|
89
|
+
}
|
|
90
|
+
/** Adds `id not in pendingDeletedIds` to the count query so pending deletes are excluded in SQL. */
|
|
91
|
+
function appendPendingDeletedIds(em, type, query, idDbType, where, opts) {
|
|
92
|
+
const pendingDeletedIds = (0, scopes_1.isSelectAllFilter)(where, opts.conditions)
|
|
93
|
+
? []
|
|
94
|
+
: (0, EntityManager_1.getEmInternalApi)(em).pendingDeleteIds(type);
|
|
95
|
+
if (pendingDeletedIds.length === 0)
|
|
96
|
+
return pendingDeletedIds;
|
|
97
|
+
const primary = query.tables.find((t) => t.join === "primary") ?? (0, utils_1.fail)("No primary");
|
|
98
|
+
const condition = {
|
|
99
|
+
kind: "column",
|
|
100
|
+
alias: primary.alias,
|
|
101
|
+
column: "id",
|
|
102
|
+
dbType: idDbType,
|
|
103
|
+
cond: { kind: "nin", value: pendingDeletedIds },
|
|
104
|
+
pruneable: true,
|
|
105
|
+
};
|
|
106
|
+
if (!query.condition) {
|
|
107
|
+
query.condition = { kind: "exp", op: "and", conditions: [condition] };
|
|
108
|
+
}
|
|
109
|
+
else if (query.condition.op === "and") {
|
|
110
|
+
query.condition.conditions.push(condition);
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
query.condition = { kind: "exp", op: "and", conditions: [query.condition, condition] };
|
|
114
|
+
}
|
|
115
|
+
return pendingDeletedIds;
|
|
73
116
|
}
|
|
74
117
|
//# sourceMappingURL=findCountDataLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"findCountDataLoader.js","sourceRoot":"","sources":["../../src/dataloaders/findCountDataLoader.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"findCountDataLoader.js","sourceRoot":"","sources":["../../src/dataloaders/findCountDataLoader.ts"],"names":[],"mappings":"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"}
|