@expo/entity 0.35.0 → 0.36.0
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/AuthorizationResultBasedEntityLoader.d.ts +128 -0
- package/build/AuthorizationResultBasedEntityLoader.js +196 -0
- package/build/AuthorizationResultBasedEntityLoader.js.map +1 -0
- package/build/ComposedEntityCacheAdapter.js +1 -0
- package/build/ComposedEntityCacheAdapter.js.map +1 -1
- package/build/ComposedSecondaryEntityCache.js +1 -0
- package/build/ComposedSecondaryEntityCache.js.map +1 -1
- package/build/EnforcingEntityLoader.d.ts +5 -4
- package/build/EnforcingEntityLoader.js +4 -2
- package/build/EnforcingEntityLoader.js.map +1 -1
- package/build/Entity.d.ts +0 -27
- package/build/Entity.js +0 -50
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +1 -1
- package/build/EntityAssociationLoader.js +17 -8
- package/build/EntityAssociationLoader.js.map +1 -1
- package/build/EntityCompanion.js +9 -1
- package/build/EntityCompanion.js.map +1 -1
- package/build/EntityCompanionProvider.d.ts +3 -1
- package/build/EntityCompanionProvider.js +10 -4
- package/build/EntityCompanionProvider.js.map +1 -1
- package/build/EntityConfiguration.d.ts +2 -1
- package/build/EntityConfiguration.js +19 -1
- package/build/EntityConfiguration.js.map +1 -1
- package/build/EntityDatabaseAdapter.d.ts +2 -2
- package/build/EntityDatabaseAdapter.js +5 -3
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityFieldDefinition.d.ts +21 -10
- package/build/EntityFieldDefinition.js +8 -9
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityFields.d.ts +10 -0
- package/build/EntityFields.js +15 -1
- package/build/EntityFields.js.map +1 -1
- package/build/EntityLoader.d.ts +12 -125
- package/build/EntityLoader.js +24 -239
- package/build/EntityLoader.js.map +1 -1
- package/build/EntityLoaderFactory.d.ts +1 -1
- package/build/EntityLoaderFactory.js +3 -0
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityLoaderUtils.d.ts +58 -0
- package/build/EntityLoaderUtils.js +109 -0
- package/build/EntityLoaderUtils.js.map +1 -0
- package/build/EntityMutator.d.ts +1 -0
- package/build/EntityMutator.js +71 -56
- package/build/EntityMutator.js.map +1 -1
- package/build/EntityMutatorFactory.js +9 -0
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntityPrivacyPolicy.d.ts +11 -5
- package/build/EntityPrivacyPolicy.js +5 -7
- package/build/EntityPrivacyPolicy.js.map +1 -1
- package/build/EntityQueryContext.d.ts +2 -1
- package/build/EntityQueryContext.js +11 -6
- package/build/EntityQueryContext.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.js +5 -1
- package/build/EntitySecondaryCacheLoader.js.map +1 -1
- package/build/GenericEntityCacheAdapter.js +1 -0
- package/build/GenericEntityCacheAdapter.js.map +1 -1
- package/build/GenericSecondaryEntityCache.js +2 -0
- package/build/GenericSecondaryEntityCache.js.map +1 -1
- package/build/IEntityCacheAdapterProvider.d.ts +1 -1
- package/build/IEntityDatabaseAdapterProvider.d.ts +1 -1
- package/build/ReadonlyEntity.js +5 -1
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerContext.js +2 -0
- package/build/ViewerContext.js.map +1 -1
- package/build/ViewerScopedEntityCompanion.js +2 -0
- package/build/ViewerScopedEntityCompanion.js.map +1 -1
- package/build/ViewerScopedEntityCompanionProvider.d.ts +0 -1
- package/build/ViewerScopedEntityCompanionProvider.js +2 -1
- package/build/ViewerScopedEntityCompanionProvider.js.map +1 -1
- package/build/ViewerScopedEntityLoaderFactory.d.ts +1 -1
- package/build/ViewerScopedEntityLoaderFactory.js +2 -0
- package/build/ViewerScopedEntityLoaderFactory.js.map +1 -1
- package/build/ViewerScopedEntityMutatorFactory.js +2 -0
- package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
- package/build/__tests__/ComposedCacheAdapter-test.js +2 -0
- package/build/__tests__/ComposedCacheAdapter-test.js.map +1 -1
- package/build/__tests__/ComposedSecondaryEntityCache-test.js +1 -0
- package/build/__tests__/ComposedSecondaryEntityCache-test.js.map +1 -1
- package/build/__tests__/EnforcingEntityLoader-test.js +101 -113
- package/build/__tests__/EnforcingEntityLoader-test.js.map +1 -1
- package/build/__tests__/Entity-test.js +0 -132
- package/build/__tests__/Entity-test.js.map +1 -1
- package/build/__tests__/EntityAssociationLoader-test.js +6 -2
- package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js +24 -22
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityCompanion-test.js +26 -3
- package/build/__tests__/EntityCompanion-test.js.map +1 -1
- package/build/__tests__/EntityConfiguration-test.js +103 -0
- package/build/__tests__/EntityConfiguration-test.js.map +1 -0
- package/build/__tests__/EntityDatabaseAdapter-test.js +6 -0
- package/build/__tests__/EntityDatabaseAdapter-test.js.map +1 -1
- package/build/__tests__/EntityEdges-test.js +61 -20
- package/build/__tests__/EntityEdges-test.js.map +1 -1
- package/build/__tests__/EntityFields-test.js +6 -0
- package/build/__tests__/EntityFields-test.js.map +1 -1
- package/build/__tests__/EntityLoader-constructor-test.js +16 -17
- package/build/__tests__/EntityLoader-constructor-test.js.map +1 -1
- package/build/__tests__/EntityLoader-test.js +74 -22
- package/build/__tests__/EntityLoader-test.js.map +1 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +12 -15
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -1
- package/build/__tests__/EntityMutator-test.js +54 -9
- package/build/__tests__/EntityMutator-test.js.map +1 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +77 -59
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
- package/build/__tests__/EntityQueryContext-test.js +9 -0
- package/build/__tests__/EntityQueryContext-test.js.map +1 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +42 -25
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +20 -18
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +12 -15
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
- package/build/entityUtils.d.ts +1 -1
- package/build/entityUtils.js.map +1 -1
- package/build/errors/EntityCacheAdapterError.js +2 -5
- package/build/errors/EntityCacheAdapterError.js.map +1 -1
- package/build/errors/EntityDatabaseAdapterError.js +14 -35
- package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
- package/build/errors/EntityError.js +1 -0
- package/build/errors/EntityError.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.js +2 -2
- package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
- package/build/errors/EntityNotAuthorizedError.js +3 -2
- package/build/errors/EntityNotAuthorizedError.js.map +1 -1
- package/build/errors/EntityNotFoundError.js +2 -2
- package/build/errors/EntityNotFoundError.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/internal/EntityDataManager.d.ts +1 -1
- package/build/internal/EntityDataManager.js +6 -1
- package/build/internal/EntityDataManager.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.d.ts +5 -5
- package/build/internal/EntityFieldTransformationUtils.js +5 -8
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/EntityTableDataCoordinator.d.ts +1 -1
- package/build/internal/EntityTableDataCoordinator.js +5 -0
- package/build/internal/EntityTableDataCoordinator.js.map +1 -1
- package/build/internal/ReadThroughEntityCache.d.ts +1 -1
- package/build/internal/ReadThroughEntityCache.js +2 -0
- package/build/internal/ReadThroughEntityCache.js.map +1 -1
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +6 -2
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +1 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +33 -0
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
- package/build/metrics/IEntityMetricsAdapter.d.ts +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.d.ts +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.d.ts +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.d.ts +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/rules/PrivacyPolicyRule.d.ts +1 -1
- package/build/rules/PrivacyPolicyRule.js.map +1 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +1 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +1 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +1 -1
- package/build/testfixtures/DateIDTestEntity.js +12 -15
- package/build/testfixtures/DateIDTestEntity.js.map +1 -1
- package/build/testfixtures/SimpleTestEntity.js +12 -15
- package/build/testfixtures/SimpleTestEntity.js.map +1 -1
- package/build/testfixtures/TestEntity.js +12 -15
- package/build/testfixtures/TestEntity.js.map +1 -1
- package/build/testfixtures/TestEntity2.js +12 -15
- package/build/testfixtures/TestEntity2.js.map +1 -1
- package/build/testfixtures/TestEntityNumberKey.js +12 -15
- package/build/testfixtures/TestEntityNumberKey.js.map +1 -1
- package/build/testfixtures/TestEntityWithMutationTriggers.d.ts +36 -0
- package/build/testfixtures/TestEntityWithMutationTriggers.js +82 -0
- package/build/testfixtures/TestEntityWithMutationTriggers.js.map +1 -0
- package/build/utils/EntityPrivacyUtils.d.ts +34 -0
- package/build/utils/EntityPrivacyUtils.js +160 -0
- package/build/utils/EntityPrivacyUtils.js.map +1 -0
- package/build/utils/__tests__/EntityPrivacyUtils-test.d.ts +1 -0
- package/build/utils/__tests__/EntityPrivacyUtils-test.js +395 -0
- package/build/utils/__tests__/EntityPrivacyUtils-test.js.map +1 -0
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.d.ts +1 -0
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js +26 -0
- package/build/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.js.map +1 -0
- package/build/utils/collections/maps.js.map +1 -1
- package/build/utils/mergeEntityMutationTriggerConfigurations.d.ts +4 -0
- package/build/utils/mergeEntityMutationTriggerConfigurations.js +28 -0
- package/build/utils/mergeEntityMutationTriggerConfigurations.js.map +1 -0
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +1 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +1 -1
- package/build/utils/testing/StubCacheAdapter.d.ts +3 -3
- package/build/utils/testing/StubCacheAdapter.js +3 -3
- package/build/utils/testing/StubCacheAdapter.js.map +1 -1
- package/build/utils/testing/StubDatabaseAdapter.d.ts +2 -2
- package/build/utils/testing/StubDatabaseAdapter.js +4 -2
- package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
- package/build/utils/testing/StubDatabaseAdapterProvider.d.ts +1 -1
- package/build/utils/testing/StubDatabaseAdapterProvider.js +1 -3
- package/build/utils/testing/StubDatabaseAdapterProvider.js.map +1 -1
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.d.ts +1 -0
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js +42 -0
- package/build/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.js.map +1 -0
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +53 -0
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +1 -1
- package/build/utils/testing/describeFieldTestCase.js.map +1 -1
- package/package.json +4 -3
- package/src/AuthorizationResultBasedEntityLoader.ts +297 -0
- package/src/ComposedEntityCacheAdapter.ts +6 -6
- package/src/ComposedSecondaryEntityCache.ts +8 -8
- package/src/EnforcingEntityLoader.ts +20 -19
- package/src/Entity.ts +11 -126
- package/src/EntityAssociationLoader.ts +40 -41
- package/src/EntityCompanion.ts +8 -4
- package/src/EntityCompanionProvider.ts +24 -16
- package/src/EntityConfiguration.ts +18 -7
- package/src/EntityDatabaseAdapter.ts +41 -41
- package/src/EntityFieldDefinition.ts +28 -18
- package/src/EntityFields.ts +15 -0
- package/src/EntityLoader.ts +63 -357
- package/src/EntityLoaderFactory.ts +10 -4
- package/src/EntityLoaderUtils.ts +149 -0
- package/src/EntityMutationInfo.ts +2 -2
- package/src/EntityMutationTriggerConfiguration.ts +5 -5
- package/src/EntityMutationValidator.ts +2 -2
- package/src/EntityMutator.ts +146 -144
- package/src/EntityMutatorFactory.ts +8 -8
- package/src/EntityPrivacyPolicy.ts +78 -28
- package/src/EntityQueryContext.ts +14 -13
- package/src/EntityQueryContextProvider.ts +5 -5
- package/src/EntitySecondaryCacheLoader.ts +13 -11
- package/src/GenericEntityCacheAdapter.ts +10 -10
- package/src/GenericSecondaryEntityCache.ts +6 -6
- package/src/IEntityCacheAdapter.ts +4 -4
- package/src/IEntityCacheAdapterProvider.ts +2 -2
- package/src/IEntityDatabaseAdapterProvider.ts +2 -2
- package/src/ReadonlyEntity.ts +5 -5
- package/src/ViewerContext.ts +5 -5
- package/src/ViewerScopedEntityCompanion.ts +4 -4
- package/src/ViewerScopedEntityCompanionProvider.ts +4 -5
- package/src/ViewerScopedEntityLoaderFactory.ts +10 -4
- package/src/ViewerScopedEntityMutatorFactory.ts +5 -5
- package/src/__tests__/ComposedCacheAdapter-test.ts +12 -10
- package/src/__tests__/ComposedSecondaryEntityCache-test.ts +8 -8
- package/src/__tests__/EnforcingEntityLoader-test.ts +236 -159
- package/src/__tests__/Entity-test.ts +0 -202
- package/src/__tests__/EntityAssociationLoader-test.ts +29 -25
- package/src/__tests__/EntityCommonUseCases-test.ts +29 -13
- package/src/__tests__/EntityCompanion-test.ts +57 -5
- package/src/__tests__/EntityConfiguration-test.ts +118 -0
- package/src/__tests__/EntityDatabaseAdapter-test.ts +11 -11
- package/src/__tests__/EntityEdges-test.ts +108 -36
- package/src/__tests__/EntityFields-test.ts +14 -2
- package/src/__tests__/EntityLoader-constructor-test.ts +20 -7
- package/src/__tests__/EntityLoader-test.ts +214 -86
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +2 -2
- package/src/__tests__/EntityMutator-test.ts +281 -96
- package/src/__tests__/EntityPrivacyPolicy-test.ts +166 -53
- package/src/__tests__/EntityQueryContext-test.ts +30 -12
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +7 -7
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +46 -26
- package/src/__tests__/GenericEntityCacheAdapter-test.ts +2 -2
- package/src/__tests__/ViewerContext-test.ts +1 -1
- package/src/__tests__/ViewerScopedEntityCompanion-test.ts +2 -2
- package/src/__tests__/ViewerScopedEntityCompanionProvider-test.ts +2 -2
- package/src/__tests__/ViewerScopedEntityLoaderFactory-test.ts +2 -1
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +19 -19
- package/src/__tests__/entityUtils-test.ts +2 -2
- package/src/entityUtils.ts +4 -4
- package/src/errors/EntityError.ts +4 -1
- package/src/errors/EntityInvalidFieldValueError.ts +2 -2
- package/src/errors/EntityNotAuthorizedError.ts +3 -3
- package/src/errors/EntityNotFoundError.ts +2 -2
- package/src/index.ts +1 -0
- package/src/internal/EntityDataManager.ts +24 -24
- package/src/internal/EntityFieldTransformationUtils.ts +39 -32
- package/src/internal/EntityTableDataCoordinator.ts +3 -3
- package/src/internal/ReadThroughEntityCache.ts +9 -9
- package/src/internal/__tests__/EntityDataManager-test.ts +51 -51
- package/src/internal/__tests__/EntityFieldTransformationUtils-test.ts +14 -10
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +74 -18
- package/src/metrics/EntityMetricsUtils.ts +4 -4
- package/src/metrics/IEntityMetricsAdapter.ts +1 -1
- package/src/rules/AlwaysAllowPrivacyPolicyRule.ts +9 -3
- package/src/rules/AlwaysDenyPrivacyPolicyRule.ts +9 -3
- package/src/rules/AlwaysSkipPrivacyPolicyRule.ts +9 -3
- package/src/rules/PrivacyPolicyRule.ts +9 -3
- package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +2 -1
- package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +2 -1
- package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +2 -1
- package/src/testfixtures/TestEntity.ts +1 -1
- package/src/testfixtures/TestEntityWithMutationTriggers.ts +156 -0
- package/src/utils/EntityPrivacyUtils.ts +325 -0
- package/src/utils/__tests__/EntityPrivacyUtils-test.ts +570 -0
- package/src/utils/__tests__/mergeEntityMutationTriggerConfigurations-test.ts +29 -0
- package/src/utils/collections/__tests__/maps-test.ts +2 -2
- package/src/utils/collections/maps.ts +11 -11
- package/src/utils/mergeEntityMutationTriggerConfigurations.ts +44 -0
- package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +25 -22
- package/src/utils/testing/StubCacheAdapter.ts +17 -15
- package/src/utils/testing/StubDatabaseAdapter.ts +35 -30
- package/src/utils/testing/StubDatabaseAdapterProvider.ts +2 -2
- package/src/utils/testing/StubQueryContextProvider.ts +2 -2
- package/src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts +42 -0
- package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +111 -29
- package/src/utils/testing/createUnitTestEntityCompanionProvider.ts +2 -2
- package/src/utils/testing/describeFieldTestCase.ts +1 -1
- package/build/__tests__/EntityDataConfiguration-test.js +0 -68
- package/build/__tests__/EntityDataConfiguration-test.js.map +0 -1
- package/src/__tests__/EntityDataConfiguration-test.ts +0 -77
- /package/build/__tests__/{EntityDataConfiguration-test.d.ts → EntityConfiguration-test.d.ts} +0 -0
|
@@ -27,12 +27,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
const invariant_1 = __importDefault(require("invariant"));
|
|
30
|
-
const
|
|
30
|
+
const uuidv7_1 = require("uuidv7");
|
|
31
31
|
const EntityDatabaseAdapter_1 = __importStar(require("../../EntityDatabaseAdapter"));
|
|
32
32
|
const EntityFields_1 = require("../../EntityFields");
|
|
33
33
|
const EntityFieldTransformationUtils_1 = require("../../internal/EntityFieldTransformationUtils");
|
|
34
34
|
const maps_1 = require("../collections/maps");
|
|
35
35
|
class StubDatabaseAdapter extends EntityDatabaseAdapter_1.default {
|
|
36
|
+
entityConfiguration2;
|
|
37
|
+
dataStore;
|
|
36
38
|
constructor(entityConfiguration2, dataStore) {
|
|
37
39
|
super(entityConfiguration2);
|
|
38
40
|
this.entityConfiguration2 = entityConfiguration2;
|
|
@@ -128,7 +130,7 @@ class StubDatabaseAdapter extends EntityDatabaseAdapter_1.default {
|
|
|
128
130
|
const idSchemaField = this.entityConfiguration2.schema.get(this.entityConfiguration2.idField);
|
|
129
131
|
(0, invariant_1.default)(idSchemaField, `No schema field found for ${String(this.entityConfiguration2.idField)}`);
|
|
130
132
|
if (idSchemaField instanceof EntityFields_1.StringField) {
|
|
131
|
-
return (0,
|
|
133
|
+
return (0, uuidv7_1.uuidv7)();
|
|
132
134
|
}
|
|
133
135
|
else if (idSchemaField instanceof EntityFields_1.IntField) {
|
|
134
136
|
return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StubDatabaseAdapter.js","sourceRoot":"","sources":["../../../src/utils/testing/StubDatabaseAdapter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAAkC;AAClC
|
|
1
|
+
{"version":3,"file":"StubDatabaseAdapter.js","sourceRoot":"","sources":["../../../src/utils/testing/StubDatabaseAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@ import EntityDatabaseAdapter from '../../EntityDatabaseAdapter';
|
|
|
3
3
|
import IEntityDatabaseAdapterProvider from '../../IEntityDatabaseAdapterProvider';
|
|
4
4
|
export default class StubDatabaseAdapterProvider implements IEntityDatabaseAdapterProvider {
|
|
5
5
|
private readonly objectCollection;
|
|
6
|
-
getDatabaseAdapter<TFields
|
|
6
|
+
getDatabaseAdapter<TFields extends Record<string, any>>(entityConfiguration: EntityConfiguration<TFields>): EntityDatabaseAdapter<TFields>;
|
|
7
7
|
}
|
|
@@ -5,9 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const StubDatabaseAdapter_1 = __importDefault(require("./StubDatabaseAdapter"));
|
|
7
7
|
class StubDatabaseAdapterProvider {
|
|
8
|
-
|
|
9
|
-
this.objectCollection = new Map();
|
|
10
|
-
}
|
|
8
|
+
objectCollection = new Map();
|
|
11
9
|
getDatabaseAdapter(entityConfiguration) {
|
|
12
10
|
return new StubDatabaseAdapter_1.default(entityConfiguration, this.objectCollection);
|
|
13
11
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StubDatabaseAdapterProvider.js","sourceRoot":"","sources":["../../../src/utils/testing/StubDatabaseAdapterProvider.ts"],"names":[],"mappings":";;;;;AAAA,gFAAwD;AAKxD,MAAqB,2BAA2B;
|
|
1
|
+
{"version":3,"file":"StubDatabaseAdapterProvider.js","sourceRoot":"","sources":["../../../src/utils/testing/StubDatabaseAdapterProvider.ts"],"names":[],"mappings":";;;;;AAAA,gFAAwD;AAKxD,MAAqB,2BAA2B;IAC7B,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;IAE9C,kBAAkB,CAChB,mBAAiD;QAEjD,OAAO,IAAI,6BAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7E,CAAC;CACF;AARD,8CAQC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const ts_mockito_1 = require("ts-mockito");
|
|
7
|
+
const EntityQueryContext_1 = require("../../../EntityQueryContext");
|
|
8
|
+
const ViewerContext_1 = __importDefault(require("../../../ViewerContext"));
|
|
9
|
+
const AlwaysAllowPrivacyPolicyRule_1 = __importDefault(require("../../../rules/AlwaysAllowPrivacyPolicyRule"));
|
|
10
|
+
const AlwaysDenyPrivacyPolicyRule_1 = __importDefault(require("../../../rules/AlwaysDenyPrivacyPolicyRule"));
|
|
11
|
+
const PrivacyPolicyRuleTestUtils_1 = require("../PrivacyPolicyRuleTestUtils");
|
|
12
|
+
describe(PrivacyPolicyRuleTestUtils_1.describePrivacyPolicyRuleWithAsyncTestCase, () => {
|
|
13
|
+
describe('default args do not execute', () => {
|
|
14
|
+
(0, PrivacyPolicyRuleTestUtils_1.describePrivacyPolicyRuleWithAsyncTestCase)(new AlwaysAllowPrivacyPolicyRule_1.default(), {
|
|
15
|
+
allowCases: new Map([
|
|
16
|
+
[
|
|
17
|
+
'case',
|
|
18
|
+
async () => ({
|
|
19
|
+
viewerContext: (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.default)),
|
|
20
|
+
queryContext: (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(EntityQueryContext_1.EntityQueryContext)),
|
|
21
|
+
evaluationContext: (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)()),
|
|
22
|
+
entity: (0, ts_mockito_1.anything)(),
|
|
23
|
+
}),
|
|
24
|
+
],
|
|
25
|
+
]),
|
|
26
|
+
});
|
|
27
|
+
(0, PrivacyPolicyRuleTestUtils_1.describePrivacyPolicyRuleWithAsyncTestCase)(new AlwaysDenyPrivacyPolicyRule_1.default(), {
|
|
28
|
+
denyCases: new Map([
|
|
29
|
+
[
|
|
30
|
+
'case',
|
|
31
|
+
async () => ({
|
|
32
|
+
viewerContext: (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(ViewerContext_1.default)),
|
|
33
|
+
queryContext: (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(EntityQueryContext_1.EntityQueryContext)),
|
|
34
|
+
evaluationContext: (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)()),
|
|
35
|
+
entity: (0, ts_mockito_1.anything)(),
|
|
36
|
+
}),
|
|
37
|
+
],
|
|
38
|
+
]),
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=PrivacyPolicyRuleTestUtils-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PrivacyPolicyRuleTestUtils-test.js","sourceRoot":"","sources":["../../../../src/utils/testing/__tests__/PrivacyPolicyRuleTestUtils-test.ts"],"names":[],"mappings":";;;;;AAAA,2CAAsD;AAGtD,oEAAiE;AACjE,2EAAmD;AACnD,+GAAuF;AACvF,6GAAqF;AACrF,8EAA2F;AAE3F,QAAQ,CAAC,uEAA0C,EAAE,GAAG,EAAE;IACxD,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,IAAA,uEAA0C,EAAC,IAAI,sCAA4B,EAAE,EAAE;YAC7E,UAAU,EAAE,IAAI,GAAG,CAAC;gBAClB;oBACE,MAAM;oBACN,KAAK,IAAI,EAAE,CAAC,CAAC;wBACX,aAAa,EAAE,IAAA,qBAAQ,EAAC,IAAA,iBAAI,EAAC,uBAAa,CAAC,CAAC;wBAC5C,YAAY,EAAE,IAAA,qBAAQ,EAAC,IAAA,iBAAI,EAAC,uCAAkB,CAAC,CAAC;wBAChD,iBAAiB,EACf,IAAA,qBAAQ,EAAC,IAAA,iBAAI,GAAiE,CAAC;wBACjF,MAAM,EAAE,IAAA,qBAAQ,GAAE;qBACnB,CAAC;iBACH;aACF,CAAC;SACH,CAAC,CAAC;QAEH,IAAA,uEAA0C,EAAC,IAAI,qCAA2B,EAAE,EAAE;YAC5E,SAAS,EAAE,IAAI,GAAG,CAAC;gBACjB;oBACE,MAAM;oBACN,KAAK,IAAI,EAAE,CAAC,CAAC;wBACX,aAAa,EAAE,IAAA,qBAAQ,EAAC,IAAA,iBAAI,EAAC,uBAAa,CAAC,CAAC;wBAC5C,YAAY,EAAE,IAAA,qBAAQ,EAAC,IAAA,iBAAI,EAAC,uCAAkB,CAAC,CAAC;wBAChD,iBAAiB,EACf,IAAA,qBAAQ,EAAC,IAAA,iBAAI,GAAiE,CAAC;wBACjF,MAAM,EAAE,IAAA,qBAAQ,GAAE;qBACnB,CAAC;iBACH;aACF,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -231,6 +231,19 @@ describe(StubDatabaseAdapter_1.default, () => {
|
|
|
231
231
|
});
|
|
232
232
|
expect(databaseAdapter.getObjectCollectionForTable(TestEntity_1.testEntityConfiguration.tableName)).toHaveLength(1);
|
|
233
233
|
});
|
|
234
|
+
it('inserts a record with valid v7 id', async () => {
|
|
235
|
+
const expectedTime = new Date('2024-06-03T20:16:33.761Z');
|
|
236
|
+
jest.useFakeTimers({
|
|
237
|
+
now: expectedTime,
|
|
238
|
+
});
|
|
239
|
+
const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(EntityQueryContext_1.EntityQueryContext));
|
|
240
|
+
const databaseAdapter = new StubDatabaseAdapter_1.default(TestEntity_1.testEntityConfiguration, new Map());
|
|
241
|
+
const result = await databaseAdapter.insertAsync(queryContext, {
|
|
242
|
+
stringField: 'hello',
|
|
243
|
+
});
|
|
244
|
+
const ts = getTimeFromUUIDv7(result.customIdField);
|
|
245
|
+
expect(ts).toEqual(expectedTime);
|
|
246
|
+
});
|
|
234
247
|
});
|
|
235
248
|
describe('updateAsync', () => {
|
|
236
249
|
it('updates a record', async () => {
|
|
@@ -258,6 +271,25 @@ describe(StubDatabaseAdapter_1.default, () => {
|
|
|
258
271
|
testIndexedField: 'h1',
|
|
259
272
|
});
|
|
260
273
|
});
|
|
274
|
+
it('throws error when empty update to match common DBMS behavior', async () => {
|
|
275
|
+
const queryContext = (0, ts_mockito_1.instance)((0, ts_mockito_1.mock)(EntityQueryContext_1.EntityQueryContext));
|
|
276
|
+
const databaseAdapter = new StubDatabaseAdapter_1.default(TestEntity_1.testEntityConfiguration, StubDatabaseAdapter_1.default.convertFieldObjectsToDataStore(TestEntity_1.testEntityConfiguration, new Map([
|
|
277
|
+
[
|
|
278
|
+
TestEntity_1.testEntityConfiguration.tableName,
|
|
279
|
+
[
|
|
280
|
+
{
|
|
281
|
+
customIdField: 'hello',
|
|
282
|
+
testIndexedField: 'h1',
|
|
283
|
+
intField: 3,
|
|
284
|
+
stringField: 'a',
|
|
285
|
+
dateField: new Date(),
|
|
286
|
+
nullableField: null,
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
],
|
|
290
|
+
])));
|
|
291
|
+
await expect(databaseAdapter.updateAsync(queryContext, 'customIdField', 'hello', {})).rejects.toThrowError(`Empty update (custom_id = hello)`);
|
|
292
|
+
});
|
|
261
293
|
});
|
|
262
294
|
describe('deleteAsync', () => {
|
|
263
295
|
it('deletes an object', async () => {
|
|
@@ -325,6 +357,13 @@ describe(StubDatabaseAdapter_1.default, () => {
|
|
|
325
357
|
hello: v2,
|
|
326
358
|
})).toEqual(expectedResult);
|
|
327
359
|
});
|
|
360
|
+
it('works for empty', () => {
|
|
361
|
+
expect(StubDatabaseAdapter_1.default['compareByOrderBys']([], {
|
|
362
|
+
hello: 'test',
|
|
363
|
+
}, {
|
|
364
|
+
hello: 'blah',
|
|
365
|
+
})).toEqual(0);
|
|
366
|
+
});
|
|
328
367
|
});
|
|
329
368
|
describe('recursing', () => {
|
|
330
369
|
expect(StubDatabaseAdapter_1.default['compareByOrderBys']([
|
|
@@ -346,4 +385,18 @@ describe(StubDatabaseAdapter_1.default, () => {
|
|
|
346
385
|
});
|
|
347
386
|
});
|
|
348
387
|
});
|
|
388
|
+
const UUIDV7_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
389
|
+
/**
|
|
390
|
+
* Returns the Date object encoded in the first 48 bits of the given UUIDv7.
|
|
391
|
+
* @throws TypeError if the UUID is not version 7
|
|
392
|
+
*/
|
|
393
|
+
function getTimeFromUUIDv7(uuid) {
|
|
394
|
+
if (!UUIDV7_REGEX.test(uuid)) {
|
|
395
|
+
throw new TypeError(`UUID must be version 7 to get its timestamp`);
|
|
396
|
+
}
|
|
397
|
+
// The first 48 bits = 12 hex characters of the UUID encode the timestamp in big endian
|
|
398
|
+
const hexCharacters = uuid.replaceAll('-', '').split('', 12);
|
|
399
|
+
const milliseconds = hexCharacters.reduce((milliseconds, character) => milliseconds * 16 + parseInt(character, 16), 0);
|
|
400
|
+
return new Date(milliseconds);
|
|
401
|
+
}
|
|
349
402
|
//# sourceMappingURL=StubDatabaseAdapter-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StubDatabaseAdapter-test.js","sourceRoot":"","sources":["../../../../src/utils/testing/__tests__/StubDatabaseAdapter-test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StubDatabaseAdapter-test.js","sourceRoot":"","sources":["../../../../src/utils/testing/__tests__/StubDatabaseAdapter-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describeFieldTestCase.js","sourceRoot":"","sources":["../../../src/utils/testing/describeFieldTestCase.ts"],"names":[],"mappings":";;AAEA,SAAwB,qBAAqB,CAC3C,eAAyC,EACzC,WAAgB,EAChB,aAAoB;IAEpB,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;QAC9C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"describeFieldTestCase.js","sourceRoot":"","sources":["../../../src/utils/testing/describeFieldTestCase.ts"],"names":[],"mappings":";;AAEA,SAAwB,qBAAqB,CAC3C,eAAyC,EACzC,WAAgB,EAChB,aAAoB;IAEpB,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;QAC9C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC/E,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;gBACnF,MAAM,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChE,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAlBD,wCAkBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/entity",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0",
|
|
4
4
|
"description": "A privacy-first data model",
|
|
5
5
|
"files": [
|
|
6
6
|
"build",
|
|
@@ -31,7 +31,8 @@
|
|
|
31
31
|
"dataloader": "^2.0.0",
|
|
32
32
|
"es6-error": "^4.1.1",
|
|
33
33
|
"invariant": "^2.2.4",
|
|
34
|
-
"uuid": "^8.3.0"
|
|
34
|
+
"uuid": "^8.3.0",
|
|
35
|
+
"uuidv7": "^1.0.0"
|
|
35
36
|
},
|
|
36
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "f17a33c42874c0d9c46311d19847074ddafeb04e"
|
|
37
38
|
}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import { Result, result } from '@expo/results';
|
|
2
|
+
import invariant from 'invariant';
|
|
3
|
+
import nullthrows from 'nullthrows';
|
|
4
|
+
|
|
5
|
+
import { IEntityClass } from './Entity';
|
|
6
|
+
import EntityConfiguration from './EntityConfiguration';
|
|
7
|
+
import {
|
|
8
|
+
FieldEqualityCondition,
|
|
9
|
+
QuerySelectionModifiers,
|
|
10
|
+
isSingleValueFieldEqualityCondition,
|
|
11
|
+
QuerySelectionModifiersWithOrderByRaw,
|
|
12
|
+
} from './EntityDatabaseAdapter';
|
|
13
|
+
import EntityLoaderUtils from './EntityLoaderUtils';
|
|
14
|
+
import EntityPrivacyPolicy from './EntityPrivacyPolicy';
|
|
15
|
+
import { EntityQueryContext } from './EntityQueryContext';
|
|
16
|
+
import ReadonlyEntity from './ReadonlyEntity';
|
|
17
|
+
import ViewerContext from './ViewerContext';
|
|
18
|
+
import EntityInvalidFieldValueError from './errors/EntityInvalidFieldValueError';
|
|
19
|
+
import EntityNotFoundError from './errors/EntityNotFoundError';
|
|
20
|
+
import EntityDataManager from './internal/EntityDataManager';
|
|
21
|
+
import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
|
|
22
|
+
import { mapMap } from './utils/collections/maps';
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Authorization-result-based entity loader. All normal loads are batched,
|
|
26
|
+
* cached, and authorized against the entity's EntityPrivacyPolicy. All loads through this
|
|
27
|
+
* loader are are results (or null for some loader methods), where an unsuccessful result
|
|
28
|
+
* means an authorization error or entity construction error occurred. Other errors are thrown.
|
|
29
|
+
*/
|
|
30
|
+
export default class AuthorizationResultBasedEntityLoader<
|
|
31
|
+
TFields extends object,
|
|
32
|
+
TID extends NonNullable<TFields[TSelectedFields]>,
|
|
33
|
+
TViewerContext extends ViewerContext,
|
|
34
|
+
TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>,
|
|
35
|
+
TPrivacyPolicy extends EntityPrivacyPolicy<
|
|
36
|
+
TFields,
|
|
37
|
+
TID,
|
|
38
|
+
TViewerContext,
|
|
39
|
+
TEntity,
|
|
40
|
+
TSelectedFields
|
|
41
|
+
>,
|
|
42
|
+
TSelectedFields extends keyof TFields,
|
|
43
|
+
> {
|
|
44
|
+
constructor(
|
|
45
|
+
private readonly queryContext: EntityQueryContext,
|
|
46
|
+
private readonly entityConfiguration: EntityConfiguration<TFields>,
|
|
47
|
+
private readonly entityClass: IEntityClass<
|
|
48
|
+
TFields,
|
|
49
|
+
TID,
|
|
50
|
+
TViewerContext,
|
|
51
|
+
TEntity,
|
|
52
|
+
TPrivacyPolicy,
|
|
53
|
+
TSelectedFields
|
|
54
|
+
>,
|
|
55
|
+
private readonly dataManager: EntityDataManager<TFields>,
|
|
56
|
+
protected readonly metricsAdapter: IEntityMetricsAdapter,
|
|
57
|
+
private readonly utils: EntityLoaderUtils<
|
|
58
|
+
TFields,
|
|
59
|
+
TID,
|
|
60
|
+
TViewerContext,
|
|
61
|
+
TEntity,
|
|
62
|
+
TPrivacyPolicy,
|
|
63
|
+
TSelectedFields
|
|
64
|
+
>,
|
|
65
|
+
) {}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Load many entities where fieldName is one of fieldValues.
|
|
69
|
+
* @param fieldName - entity field being queried
|
|
70
|
+
* @param fieldValues - fieldName field values being queried
|
|
71
|
+
* @returns map from fieldValue to entity results that match the query for that fieldValue,
|
|
72
|
+
* where result errors can be UnauthorizedError
|
|
73
|
+
*/
|
|
74
|
+
async loadManyByFieldEqualingManyAsync<N extends keyof Pick<TFields, TSelectedFields>>(
|
|
75
|
+
fieldName: N,
|
|
76
|
+
fieldValues: readonly NonNullable<TFields[N]>[],
|
|
77
|
+
): Promise<ReadonlyMap<NonNullable<TFields[N]>, readonly Result<TEntity>[]>> {
|
|
78
|
+
this.validateFieldValues(fieldName, fieldValues);
|
|
79
|
+
|
|
80
|
+
const fieldValuesToFieldObjects = await this.dataManager.loadManyByFieldEqualingAsync(
|
|
81
|
+
this.queryContext,
|
|
82
|
+
fieldName,
|
|
83
|
+
fieldValues,
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
return await this.utils.constructAndAuthorizeEntitiesAsync(fieldValuesToFieldObjects);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Load many entities where fieldName equals fieldValue.
|
|
91
|
+
* @param fieldName - entity field being queried
|
|
92
|
+
* @param fieldValue - fieldName field value being queried
|
|
93
|
+
* @returns array of entity results that match the query for fieldValue, where result error can be UnauthorizedError
|
|
94
|
+
*/
|
|
95
|
+
async loadManyByFieldEqualingAsync<N extends keyof Pick<TFields, TSelectedFields>>(
|
|
96
|
+
fieldName: N,
|
|
97
|
+
fieldValue: NonNullable<TFields[N]>,
|
|
98
|
+
): Promise<readonly Result<TEntity>[]> {
|
|
99
|
+
const entityResults = await this.loadManyByFieldEqualingManyAsync(fieldName, [fieldValue]);
|
|
100
|
+
const entityResultsForFieldValue = entityResults.get(fieldValue);
|
|
101
|
+
invariant(
|
|
102
|
+
entityResultsForFieldValue !== undefined,
|
|
103
|
+
`${fieldValue} should be guaranteed to be present in returned map of entities`,
|
|
104
|
+
);
|
|
105
|
+
return entityResultsForFieldValue!;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Load an entity where fieldName equals fieldValue, or null if no entity exists.
|
|
110
|
+
* @param uniqueFieldName - entity field being queried
|
|
111
|
+
* @param fieldValue - uniqueFieldName field value being queried
|
|
112
|
+
* @returns entity result where uniqueFieldName equals fieldValue, or null if no entity matches the condition.
|
|
113
|
+
* @throws when multiple entities match the condition
|
|
114
|
+
*/
|
|
115
|
+
async loadByFieldEqualingAsync<N extends keyof Pick<TFields, TSelectedFields>>(
|
|
116
|
+
uniqueFieldName: N,
|
|
117
|
+
fieldValue: NonNullable<TFields[N]>,
|
|
118
|
+
): Promise<Result<TEntity> | null> {
|
|
119
|
+
const entityResults = await this.loadManyByFieldEqualingAsync(uniqueFieldName, fieldValue);
|
|
120
|
+
invariant(
|
|
121
|
+
entityResults.length <= 1,
|
|
122
|
+
`loadByFieldEqualing: Multiple entities of type ${this.entityClass.name} found for ${String(
|
|
123
|
+
uniqueFieldName,
|
|
124
|
+
)}=${fieldValue}`,
|
|
125
|
+
);
|
|
126
|
+
return entityResults[0] ?? null;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Loads an entity by a specified ID.
|
|
131
|
+
* @param id - ID of the entity
|
|
132
|
+
* @returns entity result for matching ID, where result error can be UnauthorizedError or EntityNotFoundError.
|
|
133
|
+
*/
|
|
134
|
+
async loadByIDAsync(id: TID): Promise<Result<TEntity>> {
|
|
135
|
+
const entityResults = await this.loadManyByIDsAsync([id]);
|
|
136
|
+
// loadManyByIDsAsync is always populated for each id supplied
|
|
137
|
+
return nullthrows(entityResults.get(id));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Load an entity by a specified ID, or return null if non-existent.
|
|
142
|
+
* @param id - ID of the entity
|
|
143
|
+
* @returns entity result for matching ID, or null if no entity exists for ID.
|
|
144
|
+
*/
|
|
145
|
+
async loadByIDNullableAsync(id: TID): Promise<Result<TEntity> | null> {
|
|
146
|
+
return await this.loadByFieldEqualingAsync(
|
|
147
|
+
this.entityConfiguration.idField as TSelectedFields,
|
|
148
|
+
id,
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Loads many entities for a list of IDs.
|
|
154
|
+
* @param ids - IDs of the entities to load
|
|
155
|
+
* @returns map from ID to corresponding entity result, where result error can be UnauthorizedError or EntityNotFoundError.
|
|
156
|
+
*/
|
|
157
|
+
async loadManyByIDsAsync(ids: readonly TID[]): Promise<ReadonlyMap<TID, Result<TEntity>>> {
|
|
158
|
+
const entityResults = (await this.loadManyByFieldEqualingManyAsync(
|
|
159
|
+
this.entityConfiguration.idField as TSelectedFields,
|
|
160
|
+
ids,
|
|
161
|
+
)) as ReadonlyMap<TID, readonly Result<TEntity>[]>;
|
|
162
|
+
return mapMap(entityResults, (entityResultsForId, id) => {
|
|
163
|
+
const entityResult = entityResultsForId[0];
|
|
164
|
+
return (
|
|
165
|
+
entityResult ??
|
|
166
|
+
result(new EntityNotFoundError(this.entityClass, this.entityConfiguration.idField, id))
|
|
167
|
+
);
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Loads many entities for a list of IDs, returning null for any IDs that are non-existent.
|
|
173
|
+
* @param ids - IDs of the entities to load
|
|
174
|
+
* @returns map from ID to nullable corresponding entity result, where result error can be UnauthorizedError or EntityNotFoundError.
|
|
175
|
+
*/
|
|
176
|
+
async loadManyByIDsNullableAsync(
|
|
177
|
+
ids: readonly TID[],
|
|
178
|
+
): Promise<ReadonlyMap<TID, Result<TEntity> | null>> {
|
|
179
|
+
const entityResults = (await this.loadManyByFieldEqualingManyAsync(
|
|
180
|
+
this.entityConfiguration.idField as TSelectedFields,
|
|
181
|
+
ids,
|
|
182
|
+
)) as ReadonlyMap<TID, readonly Result<TEntity>[]>;
|
|
183
|
+
return mapMap(entityResults, (entityResultsForId) => {
|
|
184
|
+
return entityResultsForId[0] ?? null;
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Loads the first entity matching the selection constructed from the conjunction of specified
|
|
190
|
+
* operands, or null if no matching entity exists. Entities loaded using this method are not
|
|
191
|
+
* batched or cached.
|
|
192
|
+
*
|
|
193
|
+
* This is a convenience method for {@link loadManyByFieldEqualityConjunctionAsync}. However, the
|
|
194
|
+
* `orderBy` option must be specified to define what "first" means. If ordering doesn't matter,
|
|
195
|
+
* explicitly pass in an empty array.
|
|
196
|
+
*
|
|
197
|
+
* @param fieldEqualityOperands - list of field equality selection operand specifications
|
|
198
|
+
* @param querySelectionModifiers - orderBy and optional offset for the query
|
|
199
|
+
* @returns the first entity results that matches the query, where result error can be
|
|
200
|
+
* UnauthorizedError
|
|
201
|
+
*/
|
|
202
|
+
async loadFirstByFieldEqualityConjunctionAsync<N extends keyof Pick<TFields, TSelectedFields>>(
|
|
203
|
+
fieldEqualityOperands: FieldEqualityCondition<TFields, N>[],
|
|
204
|
+
querySelectionModifiers: Omit<QuerySelectionModifiers<TFields>, 'limit'> &
|
|
205
|
+
Required<Pick<QuerySelectionModifiers<TFields>, 'orderBy'>>,
|
|
206
|
+
): Promise<Result<TEntity> | null> {
|
|
207
|
+
const results = await this.loadManyByFieldEqualityConjunctionAsync(fieldEqualityOperands, {
|
|
208
|
+
...querySelectionModifiers,
|
|
209
|
+
limit: 1,
|
|
210
|
+
});
|
|
211
|
+
return results[0] ?? null;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* Loads many entities matching the selection constructed from the conjunction of specified operands.
|
|
216
|
+
* Entities loaded using this method are not batched or cached.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* fieldEqualityOperands:
|
|
220
|
+
* `[{fieldName: 'hello', fieldValue: 1}, {fieldName: 'world', fieldValues: [2, 3]}]`
|
|
221
|
+
* Entities returned with a SQL EntityDatabaseAdapter:
|
|
222
|
+
* `WHERE hello = 1 AND world = ANY({2, 3})`
|
|
223
|
+
*
|
|
224
|
+
* @param fieldEqualityOperands - list of field equality selection operand specifications
|
|
225
|
+
* @param querySelectionModifiers - limit, offset, and orderBy for the query
|
|
226
|
+
* @returns array of entity results that match the query, where result error can be UnauthorizedError
|
|
227
|
+
*/
|
|
228
|
+
async loadManyByFieldEqualityConjunctionAsync<N extends keyof Pick<TFields, TSelectedFields>>(
|
|
229
|
+
fieldEqualityOperands: FieldEqualityCondition<TFields, N>[],
|
|
230
|
+
querySelectionModifiers: QuerySelectionModifiers<TFields> = {},
|
|
231
|
+
): Promise<readonly Result<TEntity>[]> {
|
|
232
|
+
for (const fieldEqualityOperand of fieldEqualityOperands) {
|
|
233
|
+
const fieldValues = isSingleValueFieldEqualityCondition(fieldEqualityOperand)
|
|
234
|
+
? [fieldEqualityOperand.fieldValue]
|
|
235
|
+
: fieldEqualityOperand.fieldValues;
|
|
236
|
+
this.validateFieldValues(fieldEqualityOperand.fieldName, fieldValues);
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
const fieldObjects = await this.dataManager.loadManyByFieldEqualityConjunctionAsync(
|
|
240
|
+
this.queryContext,
|
|
241
|
+
fieldEqualityOperands,
|
|
242
|
+
querySelectionModifiers,
|
|
243
|
+
);
|
|
244
|
+
return await this.utils.constructAndAuthorizeEntitiesArrayAsync(fieldObjects);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Loads many entities matching the raw WHERE clause. Corresponds to the knex `whereRaw` argument format.
|
|
249
|
+
*
|
|
250
|
+
* @remarks
|
|
251
|
+
* Important notes:
|
|
252
|
+
* - Fields in clause are database column names instead of transformed entity field names.
|
|
253
|
+
* - Entities loaded using this method are not batched or cached.
|
|
254
|
+
* - Not all database adapters implement the ability to execute this method of fetching entities.
|
|
255
|
+
*
|
|
256
|
+
* @example
|
|
257
|
+
* rawWhereClause: `id = ?`
|
|
258
|
+
* bindings: `[1]`
|
|
259
|
+
* Entites returned `WHERE id = 1`
|
|
260
|
+
*
|
|
261
|
+
* http://knexjs.org/#Builder-whereRaw
|
|
262
|
+
* http://knexjs.org/#Raw-Bindings
|
|
263
|
+
*
|
|
264
|
+
* @param rawWhereClause - parameterized SQL WHERE clause with positional binding placeholders or named binding placeholders
|
|
265
|
+
* @param bindings - array of positional bindings or object of named bindings
|
|
266
|
+
* @param querySelectionModifiers - limit, offset, orderBy, and orderByRaw for the query
|
|
267
|
+
* @returns array of entity results that match the query, where result error can be UnauthorizedError
|
|
268
|
+
* @throws Error when rawWhereClause or bindings are invalid
|
|
269
|
+
*/
|
|
270
|
+
async loadManyByRawWhereClauseAsync(
|
|
271
|
+
rawWhereClause: string,
|
|
272
|
+
bindings: any[] | object,
|
|
273
|
+
querySelectionModifiers: QuerySelectionModifiersWithOrderByRaw<TFields> = {},
|
|
274
|
+
): Promise<readonly Result<TEntity>[]> {
|
|
275
|
+
const fieldObjects = await this.dataManager.loadManyByRawWhereClauseAsync(
|
|
276
|
+
this.queryContext,
|
|
277
|
+
rawWhereClause,
|
|
278
|
+
bindings,
|
|
279
|
+
querySelectionModifiers,
|
|
280
|
+
);
|
|
281
|
+
return await this.utils.constructAndAuthorizeEntitiesArrayAsync(fieldObjects);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
private validateFieldValues<N extends keyof Pick<TFields, TSelectedFields>>(
|
|
285
|
+
fieldName: N,
|
|
286
|
+
fieldValues: readonly TFields[N][],
|
|
287
|
+
): void {
|
|
288
|
+
const fieldDefinition = this.entityConfiguration.schema.get(fieldName);
|
|
289
|
+
invariant(fieldDefinition, `must have field definition for field = ${String(fieldName)}`);
|
|
290
|
+
for (const fieldValue of fieldValues) {
|
|
291
|
+
const isInputValid = fieldDefinition.validateInputValue(fieldValue);
|
|
292
|
+
if (!isInputValid) {
|
|
293
|
+
throw new EntityInvalidFieldValueError(this.entityClass, fieldName, fieldValue);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
@@ -17,12 +17,12 @@ export default class ComposedEntityCacheAdapter<TFields> implements IEntityCache
|
|
|
17
17
|
|
|
18
18
|
public async loadManyAsync<N extends keyof TFields>(
|
|
19
19
|
fieldName: N,
|
|
20
|
-
fieldValues: readonly NonNullable<TFields[N]>[]
|
|
20
|
+
fieldValues: readonly NonNullable<TFields[N]>[],
|
|
21
21
|
): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>> {
|
|
22
22
|
const retMap = new Map<NonNullable<TFields[N]>, CacheLoadResult<TFields>>();
|
|
23
23
|
const fulfilledFieldValuesByCacheIndex: NonNullable<TFields[N]>[][] = Array.from(
|
|
24
24
|
{ length: this.cacheAdapters.length },
|
|
25
|
-
() => []
|
|
25
|
+
() => [],
|
|
26
26
|
);
|
|
27
27
|
|
|
28
28
|
let unfulfilledFieldValues = fieldValues;
|
|
@@ -30,7 +30,7 @@ export default class ComposedEntityCacheAdapter<TFields> implements IEntityCache
|
|
|
30
30
|
const cacheAdapter = nullthrows(this.cacheAdapters[i]);
|
|
31
31
|
const cacheResultsFromAdapter = await cacheAdapter.loadManyAsync(
|
|
32
32
|
fieldName,
|
|
33
|
-
unfulfilledFieldValues
|
|
33
|
+
unfulfilledFieldValues,
|
|
34
34
|
);
|
|
35
35
|
|
|
36
36
|
const newUnfulfilledFieldValues = [];
|
|
@@ -87,7 +87,7 @@ export default class ComposedEntityCacheAdapter<TFields> implements IEntityCache
|
|
|
87
87
|
|
|
88
88
|
public async cacheManyAsync<N extends keyof TFields>(
|
|
89
89
|
fieldName: N,
|
|
90
|
-
objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields
|
|
90
|
+
objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>,
|
|
91
91
|
): Promise<void> {
|
|
92
92
|
// write to lower layers first
|
|
93
93
|
for (let i = this.cacheAdapters.length - 1; i >= 0; i--) {
|
|
@@ -98,7 +98,7 @@ export default class ComposedEntityCacheAdapter<TFields> implements IEntityCache
|
|
|
98
98
|
|
|
99
99
|
public async cacheDBMissesAsync<N extends keyof TFields>(
|
|
100
100
|
fieldName: N,
|
|
101
|
-
fieldValues: readonly NonNullable<TFields[N]>[]
|
|
101
|
+
fieldValues: readonly NonNullable<TFields[N]>[],
|
|
102
102
|
): Promise<void> {
|
|
103
103
|
// write to lower layers first
|
|
104
104
|
for (let i = this.cacheAdapters.length - 1; i >= 0; i--) {
|
|
@@ -109,7 +109,7 @@ export default class ComposedEntityCacheAdapter<TFields> implements IEntityCache
|
|
|
109
109
|
|
|
110
110
|
public async invalidateManyAsync<N extends keyof TFields>(
|
|
111
111
|
fieldName: N,
|
|
112
|
-
fieldValues: readonly NonNullable<TFields[N]>[]
|
|
112
|
+
fieldValues: readonly NonNullable<TFields[N]>[],
|
|
113
113
|
): Promise<void> {
|
|
114
114
|
// delete from lower layers first
|
|
115
115
|
for (let i = this.cacheAdapters.length - 1; i >= 0; i--) {
|