@expo/entity 0.17.0 → 0.21.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/EnforcingEntityLoader.js +2 -2
- package/build/EnforcingEntityLoader.js.map +1 -1
- package/build/Entity.js +8 -2
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.js +3 -3
- package/build/EntityAssociationLoader.js.map +1 -1
- package/build/EntityCompanion.d.ts +5 -0
- package/build/EntityCompanion.js +8 -1
- package/build/EntityCompanion.js.map +1 -1
- package/build/EntityCompanionProvider.d.ts +1 -1
- package/build/EntityCompanionProvider.js +5 -5
- package/build/EntityCompanionProvider.js.map +1 -1
- package/build/EntityConfiguration.d.ts +1 -1
- package/build/EntityConfiguration.js +3 -3
- package/build/EntityConfiguration.js.map +1 -1
- package/build/EntityDatabaseAdapter.d.ts +4 -4
- package/build/EntityDatabaseAdapter.js +13 -13
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityFieldDefinition.d.ts +77 -0
- package/build/EntityFieldDefinition.js +53 -0
- package/build/EntityFieldDefinition.js.map +1 -0
- package/build/EntityFields.d.ts +1 -77
- package/build/EntityFields.js +13 -61
- package/build/EntityFields.js.map +1 -1
- package/build/EntityLoader.d.ts +3 -1
- package/build/EntityLoader.js +19 -15
- package/build/EntityLoader.js.map +1 -1
- package/build/EntityLoaderFactory.d.ts +3 -1
- package/build/EntityLoaderFactory.js +3 -2
- package/build/EntityLoaderFactory.js.map +1 -1
- package/build/EntityMutationInfo.d.ts +26 -0
- package/build/EntityMutationInfo.js +10 -0
- package/build/EntityMutationInfo.js.map +1 -0
- package/build/EntityMutationTriggerConfiguration.d.ts +4 -4
- package/build/EntityMutationValidator.d.ts +3 -3
- package/build/EntityMutationValidator.js.map +1 -1
- package/build/EntityMutator.d.ts +5 -16
- package/build/EntityMutator.js +62 -58
- package/build/EntityMutator.js.map +1 -1
- package/build/EntityPrivacyPolicy.d.ts +5 -4
- package/build/EntityPrivacyPolicy.js +60 -12
- package/build/EntityPrivacyPolicy.js.map +1 -1
- package/build/EntityQueryContext.d.ts +24 -0
- package/build/EntityQueryContext.js +43 -0
- package/build/EntityQueryContext.js.map +1 -1
- package/build/EntityQueryContextProvider.js +1 -0
- package/build/EntityQueryContextProvider.js.map +1 -1
- package/build/EntitySecondaryCacheLoader.js +2 -2
- package/build/EntitySecondaryCacheLoader.js.map +1 -1
- package/build/ReadonlyEntity.js +3 -4
- package/build/ReadonlyEntity.js.map +1 -1
- package/build/ViewerScopedEntityCompanion.d.ts +5 -0
- package/build/ViewerScopedEntityCompanion.js +6 -0
- package/build/ViewerScopedEntityCompanion.js.map +1 -1
- package/build/__tests__/EnforcingEntityLoader-test.js +82 -82
- package/build/__tests__/EnforcingEntityLoader-test.js.map +1 -1
- package/build/__tests__/Entity-test.js +6 -6
- package/build/__tests__/Entity-test.js.map +1 -1
- package/build/__tests__/EntityAssociationLoader-test.js +40 -40
- package/build/__tests__/EntityAssociationLoader-test.js.map +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js +11 -11
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityCompanion-test.js +3 -3
- package/build/__tests__/EntityCompanion-test.js.map +1 -1
- package/build/__tests__/EntityCompanionProvider-test.js +1 -1
- package/build/__tests__/EntityCompanionProvider-test.js.map +1 -1
- package/build/__tests__/EntityDatabaseAdapter-test.js +12 -12
- package/build/__tests__/EntityDatabaseAdapter-test.js.map +1 -1
- package/build/__tests__/EntityEdges-test.js +103 -6
- package/build/__tests__/EntityEdges-test.js.map +1 -1
- package/build/__tests__/EntityFields-test.js +18 -27
- package/build/__tests__/EntityFields-test.js.map +1 -1
- package/build/__tests__/EntityLoader-constructor-test.d.ts +22 -0
- package/build/__tests__/EntityLoader-constructor-test.js +111 -0
- package/build/__tests__/EntityLoader-constructor-test.js.map +1 -0
- package/build/__tests__/EntityLoader-test.js +72 -64
- package/build/__tests__/EntityLoader-test.js.map +1 -1
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +1 -0
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +81 -0
- package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -0
- package/build/__tests__/EntityMutator-test.js +116 -114
- package/build/__tests__/EntityMutator-test.js.map +1 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +143 -67
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
- package/build/__tests__/EntityQueryContext-test.d.ts +1 -0
- package/build/__tests__/EntityQueryContext-test.js +56 -0
- package/build/__tests__/EntityQueryContext-test.js.map +1 -0
- package/build/__tests__/EntitySecondaryCacheLoader-test.js +15 -15
- package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +13 -12
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
- package/build/__tests__/ReadonlyEntity-test.js +11 -11
- package/build/__tests__/ReadonlyEntity-test.js.map +1 -1
- package/build/__tests__/ViewerContext-test.js +2 -2
- package/build/__tests__/ViewerContext-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityCompanion-test.js +2 -2
- package/build/__tests__/ViewerScopedEntityCompanion-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +2 -2
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js +5 -5
- package/build/__tests__/ViewerScopedEntityLoaderFactory-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +5 -5
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js +5 -5
- package/build/__tests__/cases/TwoEntitySameTableDisjointRows-test.js.map +1 -1
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js +2 -2
- package/build/__tests__/cases/TwoEntitySameTableOverlappingRows-test.js.map +1 -1
- package/build/__tests__/entityUtils-test.js +21 -21
- package/build/__tests__/entityUtils-test.js.map +1 -1
- package/build/index.d.ts +3 -0
- package/build/index.js +5 -1
- package/build/index.js.map +1 -1
- package/build/internal/EntityDataManager.js +8 -7
- package/build/internal/EntityDataManager.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.js +2 -2
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/ReadThroughEntityCache.js +4 -4
- package/build/internal/ReadThroughEntityCache.js.map +1 -1
- package/build/internal/__tests__/EntityDataManager-test.js +17 -17
- package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js +8 -8
- package/build/internal/__tests__/EntityFieldTransformationUtils-test.js.map +1 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +48 -48
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
- package/build/metrics/EntityMetricsUtils.js +1 -1
- package/build/metrics/EntityMetricsUtils.js.map +1 -1
- package/build/metrics/IEntityMetricsAdapter.d.ts +16 -0
- package/build/metrics/IEntityMetricsAdapter.js +6 -1
- package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
- package/build/metrics/NoOpEntityMetricsAdapter.d.ts +2 -1
- package/build/metrics/NoOpEntityMetricsAdapter.js +1 -0
- package/build/metrics/NoOpEntityMetricsAdapter.js.map +1 -1
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js +4 -4
- package/build/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.js.map +1 -1
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js +4 -4
- package/build/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.js.map +1 -1
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js +4 -4
- package/build/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.js.map +1 -1
- package/build/testfixtures/DateIDTestEntity.js.map +1 -1
- package/build/testfixtures/SimpleTestEntity.js.map +1 -1
- package/build/testfixtures/TestEntity.d.ts +5 -5
- package/build/testfixtures/TestEntity.js +2 -2
- package/build/testfixtures/TestEntity.js.map +1 -1
- package/build/testfixtures/TestEntity2.d.ts +5 -5
- package/build/testfixtures/TestEntity2.js.map +1 -1
- package/build/testfixtures/TestEntityNumberKey.js.map +1 -1
- package/build/utils/collections/__tests__/maps-test.js +13 -13
- package/build/utils/collections/__tests__/maps-test.js.map +1 -1
- package/build/utils/collections/maps.js +1 -1
- package/build/utils/collections/maps.js.map +1 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +6 -6
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js +1 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.js.map +1 -1
- package/build/utils/testing/StubCacheAdapter.js +1 -1
- package/build/utils/testing/StubCacheAdapter.js.map +1 -1
- package/build/utils/testing/StubDatabaseAdapter.js +6 -6
- package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js +9 -9
- package/build/utils/testing/__tests__/StubDatabaseAdapter-test.js.map +1 -1
- package/build/utils/testing/describeFieldTestCase.d.ts +2 -0
- package/build/utils/testing/describeFieldTestCase.js +18 -0
- package/build/utils/testing/describeFieldTestCase.js.map +1 -0
- package/package.json +2 -1
- package/src/Entity.ts +10 -2
- package/src/EntityAssociationLoader.ts +1 -1
- package/src/EntityCompanion.ts +10 -2
- package/src/EntityCompanionProvider.ts +5 -9
- package/src/EntityConfiguration.ts +1 -1
- package/src/EntityDatabaseAdapter.ts +10 -8
- package/src/EntityFieldDefinition.ts +124 -0
- package/src/EntityFields.ts +2 -125
- package/src/EntityLoader.ts +12 -4
- package/src/EntityLoaderFactory.ts +5 -2
- package/src/EntityMutationInfo.ts +47 -0
- package/src/EntityMutationTriggerConfiguration.ts +5 -5
- package/src/EntityMutationValidator.ts +10 -4
- package/src/EntityMutator.ts +98 -76
- package/src/EntityPrivacyPolicy.ts +77 -19
- package/src/EntityQueryContext.ts +54 -0
- package/src/EntityQueryContextProvider.ts +1 -0
- package/src/ReadonlyEntity.ts +3 -2
- package/src/ViewerScopedEntityCompanion.ts +8 -0
- package/src/__tests__/Entity-test.ts +8 -8
- package/src/__tests__/EntityCommonUseCases-test.ts +4 -4
- package/src/__tests__/EntityEdges-test.ts +169 -14
- package/src/__tests__/EntityFields-test.ts +2 -21
- package/src/__tests__/EntityLoader-constructor-test.ts +177 -0
- package/src/__tests__/EntityLoader-test.ts +39 -11
- package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +105 -0
- package/src/__tests__/EntityMutator-test.ts +140 -133
- package/src/__tests__/EntityPrivacyPolicy-test.ts +215 -78
- package/src/__tests__/EntityQueryContext-test.ts +82 -0
- package/src/__tests__/EntitySecondaryCacheLoader-test.ts +7 -9
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +6 -5
- package/src/__tests__/ViewerContext-test.ts +7 -6
- package/src/__tests__/ViewerScopedEntityCompanion-test.ts +11 -10
- package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +4 -3
- package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +6 -6
- package/src/__tests__/cases/TwoEntitySameTableOverlappingRows-test.ts +4 -4
- package/src/index.ts +3 -0
- package/src/internal/EntityDataManager.ts +2 -1
- package/src/internal/__tests__/EntityDataManager-test.ts +2 -2
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +15 -13
- package/src/metrics/EntityMetricsUtils.ts +56 -50
- package/src/metrics/IEntityMetricsAdapter.ts +23 -0
- package/src/metrics/NoOpEntityMetricsAdapter.ts +2 -0
- package/src/testfixtures/DateIDTestEntity.ts +4 -4
- package/src/testfixtures/SimpleTestEntity.ts +4 -4
- package/src/testfixtures/TestEntity.ts +4 -4
- package/src/testfixtures/TestEntity2.ts +4 -4
- package/src/testfixtures/TestEntityNumberKey.ts +4 -4
- package/src/utils/testing/StubDatabaseAdapter.ts +2 -2
- package/src/utils/testing/__tests__/StubDatabaseAdapter-test.ts +1 -1
- package/src/utils/testing/describeFieldTestCase.ts +21 -0
- package/CHANGELOG.md +0 -252
|
@@ -15,7 +15,7 @@ class EnforcingEntityLoader {
|
|
|
15
15
|
*/
|
|
16
16
|
async loadManyByFieldEqualingManyAsync(fieldName, fieldValues) {
|
|
17
17
|
const fieldValuesToResults = await this.entityLoader.loadManyByFieldEqualingManyAsync(fieldName, fieldValues);
|
|
18
|
-
return maps_1.mapMap(fieldValuesToResults, (results) => results.map((result) => result.enforceValue()));
|
|
18
|
+
return (0, maps_1.mapMap)(fieldValuesToResults, (results) => results.map((result) => result.enforceValue()));
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
21
|
* Enforcing version of entity loader method by the same name.
|
|
@@ -57,7 +57,7 @@ class EnforcingEntityLoader {
|
|
|
57
57
|
*/
|
|
58
58
|
async loadManyByIDsAsync(ids) {
|
|
59
59
|
const entityResults = await this.entityLoader.loadManyByIDsAsync(ids);
|
|
60
|
-
return maps_1.mapMap(entityResults, (result) => result.enforceValue());
|
|
60
|
+
return (0, maps_1.mapMap)(entityResults, (result) => result.enforceValue());
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
63
|
* Enforcing version of entity loader method by the same name.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnforcingEntityLoader.js","sourceRoot":"","sources":["../src/EnforcingEntityLoader.ts"],"names":[],"mappings":";;AAKA,mDAAkD;AAElD;;;GAGG;AACH,MAAqB,qBAAqB;IAcxC,YACmB,YAOhB;QAPgB,iBAAY,GAAZ,YAAY,CAO5B;IACA,CAAC;IAEJ;;;OAGG;IACH,KAAK,CAAC,gCAAgC,CACpC,SAAY,EACZ,WAA+C;QAE/C,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gCAAgC,CACnF,SAAS,EACT,WAAW,CACZ,CAAC;QACF,OAAO,aAAM,
|
|
1
|
+
{"version":3,"file":"EnforcingEntityLoader.js","sourceRoot":"","sources":["../src/EnforcingEntityLoader.ts"],"names":[],"mappings":";;AAKA,mDAAkD;AAElD;;;GAGG;AACH,MAAqB,qBAAqB;IAcxC,YACmB,YAOhB;QAPgB,iBAAY,GAAZ,YAAY,CAO5B;IACA,CAAC;IAEJ;;;OAGG;IACH,KAAK,CAAC,gCAAgC,CACpC,SAAY,EACZ,WAA+C;QAE/C,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gCAAgC,CACnF,SAAS,EACT,WAAW,CACZ,CAAC;QACF,OAAO,IAAA,aAAM,EAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,CAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAC/C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,4BAA4B,CAChC,SAAY,EACZ,UAAmC;QAEnC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,4BAA4B,CACxE,SAAS,EACT,UAAU,CACX,CAAC;QACF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,wBAAwB,CAC5B,eAAkB,EAClB,UAAmC;QAEnC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,wBAAwB,CACnE,eAAe,EACf,UAAU,CACX,CAAC;QACF,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,EAAO;QACzB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC/D,OAAO,YAAY,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CAAC,EAAO;QACjC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACvE,OAAO,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,GAAmB;QAC1C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACtE,OAAO,IAAA,aAAM,EAAC,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,uCAAuC,CAC3C,qBAA2D,EAC3D,0BAA4D,EAAE;QAE9D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,uCAAuC,CACnF,qBAAqB,EACrB,uBAAuB,CACxB,CAAC;QACF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,6BAA6B,CACjC,cAAsB,EACtB,QAAwB,EACxB,0BAA4D,EAAE;QAE9D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,6BAA6B,CACzE,cAAc,EACd,QAAQ,EACR,uBAAuB,CACxB,CAAC;QACF,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,CAAC;CACF;AApID,wCAoIC"}
|
package/build/Entity.js
CHANGED
|
@@ -111,8 +111,11 @@ class Entity extends ReadonlyEntity_1.default {
|
|
|
111
111
|
.getViewerScopedEntityCompanionForClass(this)
|
|
112
112
|
.getQueryContextProvider()
|
|
113
113
|
.getQueryContext()) {
|
|
114
|
+
const companion = existingEntity
|
|
115
|
+
.getViewerContext()
|
|
116
|
+
.getViewerScopedEntityCompanionForClass(this);
|
|
114
117
|
const privacyPolicy = new (this.getCompanionDefinition().privacyPolicyClass)();
|
|
115
|
-
const evaluationResult = await results_1.asyncResult(privacyPolicy.authorizeUpdateAsync(existingEntity.getViewerContext(), queryContext, existingEntity));
|
|
118
|
+
const evaluationResult = await (0, results_1.asyncResult)(privacyPolicy.authorizeUpdateAsync(existingEntity.getViewerContext(), queryContext, existingEntity, companion.getMetricsAdapter()));
|
|
116
119
|
return evaluationResult.ok;
|
|
117
120
|
}
|
|
118
121
|
/**
|
|
@@ -129,8 +132,11 @@ class Entity extends ReadonlyEntity_1.default {
|
|
|
129
132
|
.getViewerScopedEntityCompanionForClass(this)
|
|
130
133
|
.getQueryContextProvider()
|
|
131
134
|
.getQueryContext()) {
|
|
135
|
+
const companion = existingEntity
|
|
136
|
+
.getViewerContext()
|
|
137
|
+
.getViewerScopedEntityCompanionForClass(this);
|
|
132
138
|
const privacyPolicy = new (this.getCompanionDefinition().privacyPolicyClass)();
|
|
133
|
-
const evaluationResult = await results_1.asyncResult(privacyPolicy.authorizeDeleteAsync(existingEntity.getViewerContext(), queryContext, existingEntity));
|
|
139
|
+
const evaluationResult = await (0, results_1.asyncResult)(privacyPolicy.authorizeDeleteAsync(existingEntity.getViewerContext(), queryContext, existingEntity, companion.getMetricsAdapter()));
|
|
134
140
|
return evaluationResult.ok;
|
|
135
141
|
}
|
|
136
142
|
}
|
package/build/Entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":";;;;;AAAA,2CAAoD;AAMpD,sEAA8C;AAG9C;;;;;;;;;;;;;;;;;GAiBG;AACH,MAA8B,MAK5B,SAAQ,wBAA6D;IACrE;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAuBZ,aAA+B,EAC/B,eAAmC,aAAa;SAC7C,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QAEpB,OAAO,aAAa;aACjB,sCAAsC,CAAC,IAAI,CAAC;aAC5C,iBAAiB,EAAE;aACnB,SAAS,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAsBZ,cAAwB,EACxB,eAAmC,cAAc;SAC9C,gBAAgB,EAAE;SAClB,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QAEpB,OAAO,cAAc;aAClB,gBAAgB,EAAE;aAClB,sCAAsC,CAAC,IAAI,CAAC;aAC5C,iBAAiB,EAAE;aACnB,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAsBhB,cAAwB,EACxB,eAAmC,cAAc;SAC9C,gBAAgB,EAAE;SAClB,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QAEpB,OAAO,cAAc;aAClB,gBAAgB,EAAE;aAClB,sCAAsC,CAAC,IAAI,CAAC;aAC5C,iBAAiB,EAAE;aACnB,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC;aACvC,WAAW,EAAE,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAsBvB,cAAwB,EACxB,eAAmC,cAAc;SAC9C,gBAAgB,EAAE;SAClB,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QAEpB,OAAO,cAAc;aAClB,gBAAgB,EAAE;aAClB,sCAAsC,CAAC,IAAI,CAAC;aAC5C,iBAAiB,EAAE;aACnB,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC;aACvC,kBAAkB,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAsB/B,cAAwB,EACxB,eAAmC,cAAc;SAC9C,gBAAgB,EAAE;SAClB,sCAAsC,CAAC,IAAI,CAAC;SAC5C,uBAAuB,EAAE;SACzB,eAAe,EAAE;QAEpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC/E,MAAM,gBAAgB,GAAG,MAAM,qBAAW,
|
|
1
|
+
{"version":3,"file":"Entity.js","sourceRoot":"","sources":["../src/Entity.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ class EntityAssociationLoader {
|
|
|
19
19
|
.getQueryContext()) {
|
|
20
20
|
const associatedEntityID = this.entity.getField(fieldIdentifyingAssociatedEntity);
|
|
21
21
|
if (!associatedEntityID) {
|
|
22
|
-
return results_1.result(null);
|
|
22
|
+
return (0, results_1.result)(null);
|
|
23
23
|
}
|
|
24
24
|
const loader = this.entity
|
|
25
25
|
.getViewerContext()
|
|
@@ -123,11 +123,11 @@ class EntityAssociationLoader {
|
|
|
123
123
|
return null;
|
|
124
124
|
}
|
|
125
125
|
if (!associatedEntityResult.ok) {
|
|
126
|
-
return results_1.result(associatedEntityResult.reason);
|
|
126
|
+
return (0, results_1.result)(associatedEntityResult.reason);
|
|
127
127
|
}
|
|
128
128
|
currentEntity = associatedEntityResult.value;
|
|
129
129
|
}
|
|
130
|
-
return results_1.result(currentEntity);
|
|
130
|
+
return (0, results_1.result)(currentEntity);
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
exports.default = EntityAssociationLoader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityAssociationLoader.js","sourceRoot":"","sources":["../src/EntityAssociationLoader.ts"],"names":[],"mappings":";;AAAA,2CAA+C;AAQ/C,MAAqB,uBAAuB;IAO1C,YAA6B,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAEhD;;;;;;OAMG;IACH,KAAK,CAAC,yBAAyB,CAmB7B,gCAAmD,EACnD,qBAOC,EACD,eAAmC,IAAI,CAAC,MAAM;SAC3C,gBAAgB,EAAE;SAClB,sCAAsC,CAAC,qBAAqB,CAAC;SAC7D,uBAAuB,EAAE;SACzB,eAAe,EAAE;QAIpB,MAAM,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;QAClF,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO,gBAAM,
|
|
1
|
+
{"version":3,"file":"EntityAssociationLoader.js","sourceRoot":"","sources":["../src/EntityAssociationLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ export interface IPrivacyPolicyClass<TPrivacyPolicy> {
|
|
|
17
17
|
*/
|
|
18
18
|
export default class EntityCompanion<TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TPrivacyPolicy extends EntityPrivacyPolicy<TFields, TID, TViewerContext, TEntity, TSelectedFields>, TSelectedFields extends keyof TFields> {
|
|
19
19
|
private readonly tableDataCoordinator;
|
|
20
|
+
private readonly metricsAdapter;
|
|
20
21
|
private readonly entityLoaderFactory;
|
|
21
22
|
private readonly entityMutatorFactory;
|
|
22
23
|
constructor(entityClass: IEntityClass<TFields, TID, TViewerContext, TEntity, TPrivacyPolicy, TSelectedFields>, tableDataCoordinator: EntityTableDataCoordinator<TFields>, PrivacyPolicyClass: IPrivacyPolicyClass<TPrivacyPolicy>, mutationValidators: EntityMutationValidator<TFields, TID, TViewerContext, TEntity, TSelectedFields>[], mutationTriggers: EntityMutationTriggerConfiguration<TFields, TID, TViewerContext, TEntity, TSelectedFields>, metricsAdapter: IEntityMetricsAdapter);
|
|
@@ -26,4 +27,8 @@ export default class EntityCompanion<TFields, TID extends NonNullable<TFields[TS
|
|
|
26
27
|
* Get the query context provider for this entity.
|
|
27
28
|
*/
|
|
28
29
|
getQueryContextProvider(): EntityQueryContextProvider;
|
|
30
|
+
/**
|
|
31
|
+
* Get the {@link IEntityMetricsAdapter} for this companion.
|
|
32
|
+
*/
|
|
33
|
+
getMetricsAdapter(): IEntityMetricsAdapter;
|
|
29
34
|
}
|
package/build/EntityCompanion.js
CHANGED
|
@@ -11,8 +11,9 @@ const EntityMutatorFactory_1 = __importDefault(require("./EntityMutatorFactory")
|
|
|
11
11
|
class EntityCompanion {
|
|
12
12
|
constructor(entityClass, tableDataCoordinator, PrivacyPolicyClass, mutationValidators, mutationTriggers, metricsAdapter) {
|
|
13
13
|
this.tableDataCoordinator = tableDataCoordinator;
|
|
14
|
+
this.metricsAdapter = metricsAdapter;
|
|
14
15
|
const privacyPolicy = new PrivacyPolicyClass();
|
|
15
|
-
this.entityLoaderFactory = new EntityLoaderFactory_1.default(tableDataCoordinator.entityConfiguration, entityClass, privacyPolicy, tableDataCoordinator.dataManager);
|
|
16
|
+
this.entityLoaderFactory = new EntityLoaderFactory_1.default(tableDataCoordinator.entityConfiguration, entityClass, privacyPolicy, tableDataCoordinator.dataManager, metricsAdapter);
|
|
16
17
|
this.entityMutatorFactory = new EntityMutatorFactory_1.default(tableDataCoordinator.entityConfiguration, entityClass, privacyPolicy, mutationValidators, mutationTriggers, this.entityLoaderFactory, tableDataCoordinator.databaseAdapter, metricsAdapter);
|
|
17
18
|
}
|
|
18
19
|
getLoaderFactory() {
|
|
@@ -27,6 +28,12 @@ class EntityCompanion {
|
|
|
27
28
|
getQueryContextProvider() {
|
|
28
29
|
return this.tableDataCoordinator.getQueryContextProvider();
|
|
29
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Get the {@link IEntityMetricsAdapter} for this companion.
|
|
33
|
+
*/
|
|
34
|
+
getMetricsAdapter() {
|
|
35
|
+
return this.metricsAdapter;
|
|
36
|
+
}
|
|
30
37
|
}
|
|
31
38
|
exports.default = EntityCompanion;
|
|
32
39
|
//# sourceMappingURL=EntityCompanion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCompanion.js","sourceRoot":"","sources":["../src/EntityCompanion.ts"],"names":[],"mappings":";;;;;AACA,gFAAwD;AAGxD,kFAA0D;AAY1D;;GAEG;AACH,MAAqB,eAAe;IA+BlC,YACE,WAOC,EACgB,oBAAyD,EAC1E,kBAAuD,EACvD,kBAMG,EACH,gBAMC,
|
|
1
|
+
{"version":3,"file":"EntityCompanion.js","sourceRoot":"","sources":["../src/EntityCompanion.ts"],"names":[],"mappings":";;;;;AACA,gFAAwD;AAGxD,kFAA0D;AAY1D;;GAEG;AACH,MAAqB,eAAe;IA+BlC,YACE,WAOC,EACgB,oBAAyD,EAC1E,kBAAuD,EACvD,kBAMG,EACH,gBAMC,EACgB,cAAqC;QAhBrC,yBAAoB,GAApB,oBAAoB,CAAqC;QAgBzD,mBAAc,GAAd,cAAc,CAAuB;QAEtD,MAAM,aAAa,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC/C,IAAI,CAAC,mBAAmB,GAAG,IAAI,6BAAmB,CAQhD,oBAAoB,CAAC,mBAAmB,EACxC,WAAW,EACX,aAAa,EACb,oBAAoB,CAAC,WAAW,EAChC,cAAc,CACf,CAAC;QACF,IAAI,CAAC,oBAAoB,GAAG,IAAI,8BAAoB,CAClD,oBAAoB,CAAC,mBAAmB,EACxC,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,IAAI,CAAC,mBAAmB,EACxB,oBAAoB,CAAC,eAAe,EACpC,cAAc,CACf,CAAC;IACJ,CAAC;IAED,gBAAgB;QAQd,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,iBAAiB;QAQf,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF;AAxHD,kCAwHC"}
|
|
@@ -86,7 +86,7 @@ export declare class EntityCompanionDefinition<TFields, TID extends NonNullable<
|
|
|
86
86
|
* {@link EntityCompanion} for each type of {@link Entity}.
|
|
87
87
|
*/
|
|
88
88
|
export default class EntityCompanionProvider {
|
|
89
|
-
|
|
89
|
+
readonly metricsAdapter: IEntityMetricsAdapter;
|
|
90
90
|
private databaseAdapterFlavors;
|
|
91
91
|
private cacheAdapterFlavors;
|
|
92
92
|
private readonly companionMap;
|
|
@@ -55,21 +55,21 @@ class EntityCompanionProvider {
|
|
|
55
55
|
*/
|
|
56
56
|
getCompanionForEntity(entityClass, entityCompanionDefinition) {
|
|
57
57
|
const tableDataCoordinator = this.getTableDataCoordinatorForEntity(entityCompanionDefinition.entityConfiguration, entityClass.name);
|
|
58
|
-
return maps_1.computeIfAbsent(this.companionMap, entityClass.name, () => {
|
|
58
|
+
return (0, maps_1.computeIfAbsent)(this.companionMap, entityClass.name, () => {
|
|
59
59
|
return new EntityCompanion_1.default(entityCompanionDefinition.entityClass, tableDataCoordinator, entityCompanionDefinition.privacyPolicyClass, entityCompanionDefinition.mutationValidators(), entityCompanionDefinition.mutationTriggers(), this.metricsAdapter);
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
62
|
getQueryContextProviderForDatabaseAdaptorFlavor(databaseAdapterFlavor) {
|
|
63
63
|
const entityDatabaseAdapterFlavor = this.databaseAdapterFlavors.get(databaseAdapterFlavor);
|
|
64
|
-
invariant_1.default(entityDatabaseAdapterFlavor, `No database adaptor configuration found for flavor: ${databaseAdapterFlavor}`);
|
|
64
|
+
(0, invariant_1.default)(entityDatabaseAdapterFlavor, `No database adaptor configuration found for flavor: ${databaseAdapterFlavor}`);
|
|
65
65
|
return entityDatabaseAdapterFlavor.queryContextProvider;
|
|
66
66
|
}
|
|
67
67
|
getTableDataCoordinatorForEntity(entityConfiguration, entityClassName) {
|
|
68
|
-
return maps_1.computeIfAbsent(this.tableDataCoordinatorMap, entityConfiguration.tableName, () => {
|
|
68
|
+
return (0, maps_1.computeIfAbsent)(this.tableDataCoordinatorMap, entityConfiguration.tableName, () => {
|
|
69
69
|
const entityDatabaseAdapterFlavor = this.databaseAdapterFlavors.get(entityConfiguration.databaseAdapterFlavor);
|
|
70
|
-
invariant_1.default(entityDatabaseAdapterFlavor, `No database adaptor configuration found for flavor: ${entityConfiguration.databaseAdapterFlavor}`);
|
|
70
|
+
(0, invariant_1.default)(entityDatabaseAdapterFlavor, `No database adaptor configuration found for flavor: ${entityConfiguration.databaseAdapterFlavor}`);
|
|
71
71
|
const entityCacheAdapterFlavor = this.cacheAdapterFlavors.get(entityConfiguration.cacheAdapterFlavor);
|
|
72
|
-
invariant_1.default(entityCacheAdapterFlavor, `No cache adaptor configuration found for flavor: ${entityConfiguration.cacheAdapterFlavor}`);
|
|
72
|
+
(0, invariant_1.default)(entityCacheAdapterFlavor, `No cache adaptor configuration found for flavor: ${entityConfiguration.cacheAdapterFlavor}`);
|
|
73
73
|
return new EntityTableDataCoordinator_1.default(entityConfiguration, entityDatabaseAdapterFlavor.adapterProvider, entityCacheAdapterFlavor.cacheAdapterProvider, entityDatabaseAdapterFlavor.queryContextProvider, this.metricsAdapter, entityClassName);
|
|
74
74
|
});
|
|
75
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCompanionProvider.js","sourceRoot":"","sources":["../src/EntityCompanionProvider.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAGlC,wEAAyE;AAUzE,uGAA+E;AAE/E,mDAA2D;AAgC3D;;;GAGG;AACH,MAAa,yBAAyB;IAwCpC,YAAY,EACV,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GAAG,GAAG,EAAE,CAAC,EAAE,EAC7B,gBAAgB,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAC7B,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAsB,GA+C1F;QACC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,CAAC;CACF;AArGD,8DAqGC;AAED;;;;;;;;GAQG;AACH,MAAqB,uBAAuB;
|
|
1
|
+
{"version":3,"file":"EntityCompanionProvider.js","sourceRoot":"","sources":["../src/EntityCompanionProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IEntityClass } from './Entity';
|
|
2
2
|
import { DatabaseAdapterFlavor, CacheAdapterFlavor } from './EntityCompanionProvider';
|
|
3
|
-
import { EntityFieldDefinition } from './
|
|
3
|
+
import { EntityFieldDefinition } from './EntityFieldDefinition';
|
|
4
4
|
/**
|
|
5
5
|
* The data storage configuration for a type of Entity. Contains information relating to IDs,
|
|
6
6
|
* cachable fields, field mappings, and types of cache and database adapter.
|
|
@@ -19,10 +19,10 @@ class EntityConfiguration {
|
|
|
19
19
|
this.schema = new Map(Object.entries(schema));
|
|
20
20
|
this.cacheableKeys = EntityConfiguration.computeCacheableKeys(this.schema);
|
|
21
21
|
this.entityToDBFieldsKeyMapping = EntityConfiguration.computeEntityToDBFieldsKeyMapping(this.schema);
|
|
22
|
-
this.dbToEntityFieldsKeyMapping = maps_1.invertMap(this.entityToDBFieldsKeyMapping);
|
|
22
|
+
this.dbToEntityFieldsKeyMapping = (0, maps_1.invertMap)(this.entityToDBFieldsKeyMapping);
|
|
23
23
|
}
|
|
24
24
|
static computeCacheableKeys(schema) {
|
|
25
|
-
return maps_1.reduceMap(schema, (acc, v, k) => {
|
|
25
|
+
return (0, maps_1.reduceMap)(schema, (acc, v, k) => {
|
|
26
26
|
if (v.cache) {
|
|
27
27
|
acc.add(k);
|
|
28
28
|
}
|
|
@@ -30,7 +30,7 @@ class EntityConfiguration {
|
|
|
30
30
|
}, new Set());
|
|
31
31
|
}
|
|
32
32
|
static computeEntityToDBFieldsKeyMapping(schema) {
|
|
33
|
-
return maps_1.mapMap(schema, (v) => v.columnName);
|
|
33
|
+
return (0, maps_1.mapMap)(schema, (v) => v.columnName);
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
exports.default = EntityConfiguration;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityConfiguration.js","sourceRoot":"","sources":["../src/EntityConfiguration.ts"],"names":[],"mappings":";;AAGA,mDAAwE;AAExE;;;GAGG;AACH,MAAqB,mBAAmB;IActC,YAAY,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,eAAe,GAAG,GAAG,EAAE,CAAC,EAAE,EAC1B,eAAe,GAAG,CAAC,EACnB,qBAAqB,EACrB,kBAAkB,GAqCnB;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAE7C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEvC,kFAAkF;QAClF,qEAAqE;QACrE,mCAAmC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAQ,CAAC,CAAC;QAErD,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,0BAA0B,GAAG,mBAAmB,CAAC,iCAAiC,CACrF,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,0BAA0B,GAAG,gBAAS,
|
|
1
|
+
{"version":3,"file":"EntityConfiguration.js","sourceRoot":"","sources":["../src/EntityConfiguration.ts"],"names":[],"mappings":";;AAGA,mDAAwE;AAExE;;;GAGG;AACH,MAAqB,mBAAmB;IActC,YAAY,EACV,OAAO,EACP,SAAS,EACT,MAAM,EACN,eAAe,GAAG,GAAG,EAAE,CAAC,EAAE,EAC1B,eAAe,GAAG,CAAC,EACnB,qBAAqB,EACrB,kBAAkB,GAqCnB;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAE7C,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QAEvC,kFAAkF;QAClF,qEAAqE;QACrE,mCAAmC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAQ,CAAC,CAAC;QAErD,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,0BAA0B,GAAG,mBAAmB,CAAC,iCAAiC,CACrF,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,0BAA0B,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAC/E,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,MAA8D;QAE9D,OAAO,IAAA,gBAAS,EACd,MAAM,EACN,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,CAAC,KAAK,EAAE;gBACX,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACZ;YACD,OAAO,GAAG,CAAC;QACb,CAAC,EACD,IAAI,GAAG,EAAiB,CACzB,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,iCAAiC,CAC9C,MAA8D;QAE9D,OAAO,IAAA,aAAM,EAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;CACF;AAnGD,sCAmGC"}
|
|
@@ -44,12 +44,12 @@ export interface QuerySelectionModifiers<TFields> {
|
|
|
44
44
|
limit?: number;
|
|
45
45
|
}
|
|
46
46
|
export interface TableQuerySelectionModifiers {
|
|
47
|
-
orderBy
|
|
47
|
+
orderBy: {
|
|
48
48
|
columnName: string;
|
|
49
49
|
order: OrderByOrdering;
|
|
50
|
-
}[];
|
|
51
|
-
offset
|
|
52
|
-
limit
|
|
50
|
+
}[] | undefined;
|
|
51
|
+
offset: number | undefined;
|
|
52
|
+
limit: number | undefined;
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
55
|
* A database adapter is an interface by which entity objects can be
|
|
@@ -31,9 +31,9 @@ class EntityDatabaseAdapter {
|
|
|
31
31
|
* @returns map from fieldValue to objects that match the query for that fieldValue
|
|
32
32
|
*/
|
|
33
33
|
async fetchManyWhereAsync(queryContext, field, fieldValues) {
|
|
34
|
-
const fieldColumn = EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField(this.entityConfiguration, field);
|
|
34
|
+
const fieldColumn = (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(this.entityConfiguration, field);
|
|
35
35
|
const results = await this.fetchManyWhereInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, fieldColumn, fieldValues);
|
|
36
|
-
const objects = results.map((result) => EntityFieldTransformationUtils_1.transformDatabaseObjectToFields(this.entityConfiguration, this.fieldTransformerMap, result));
|
|
36
|
+
const objects = results.map((result) => (0, EntityFieldTransformationUtils_1.transformDatabaseObjectToFields)(this.entityConfiguration, this.fieldTransformerMap, result));
|
|
37
37
|
const objectMap = new Map();
|
|
38
38
|
for (const fieldValue of fieldValues) {
|
|
39
39
|
objectMap.set(fieldValue, []);
|
|
@@ -59,19 +59,19 @@ class EntityDatabaseAdapter {
|
|
|
59
59
|
for (const operand of fieldEqualityOperands) {
|
|
60
60
|
if (isSingleValueFieldEqualityCondition(operand)) {
|
|
61
61
|
tableFieldSingleValueOperands.push({
|
|
62
|
-
tableField: EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField(this.entityConfiguration, operand.fieldName),
|
|
62
|
+
tableField: (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(this.entityConfiguration, operand.fieldName),
|
|
63
63
|
tableValue: operand.fieldValue,
|
|
64
64
|
});
|
|
65
65
|
}
|
|
66
66
|
else {
|
|
67
67
|
tableFieldMultipleValueOperands.push({
|
|
68
|
-
tableField: EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField(this.entityConfiguration, operand.fieldName),
|
|
68
|
+
tableField: (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(this.entityConfiguration, operand.fieldName),
|
|
69
69
|
tableValues: operand.fieldValues,
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
const results = await this.fetchManyByFieldEqualityConjunctionInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, tableFieldSingleValueOperands, tableFieldMultipleValueOperands, this.convertToTableQueryModifiers(querySelectionModifiers));
|
|
74
|
-
return results.map((result) => EntityFieldTransformationUtils_1.transformDatabaseObjectToFields(this.entityConfiguration, this.fieldTransformerMap, result));
|
|
74
|
+
return results.map((result) => (0, EntityFieldTransformationUtils_1.transformDatabaseObjectToFields)(this.entityConfiguration, this.fieldTransformerMap, result));
|
|
75
75
|
}
|
|
76
76
|
/**
|
|
77
77
|
* Fetch many objects matching the raw WHERE clause.
|
|
@@ -84,7 +84,7 @@ class EntityDatabaseAdapter {
|
|
|
84
84
|
*/
|
|
85
85
|
async fetchManyByRawWhereClauseAsync(queryContext, rawWhereClause, bindings, querySelectionModifiers) {
|
|
86
86
|
const results = await this.fetchManyByRawWhereClauseInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, rawWhereClause, bindings, this.convertToTableQueryModifiers(querySelectionModifiers));
|
|
87
|
-
return results.map((result) => EntityFieldTransformationUtils_1.transformDatabaseObjectToFields(this.entityConfiguration, this.fieldTransformerMap, result));
|
|
87
|
+
return results.map((result) => (0, EntityFieldTransformationUtils_1.transformDatabaseObjectToFields)(this.entityConfiguration, this.fieldTransformerMap, result));
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* Insert an object.
|
|
@@ -94,7 +94,7 @@ class EntityDatabaseAdapter {
|
|
|
94
94
|
* @returns the inserted object
|
|
95
95
|
*/
|
|
96
96
|
async insertAsync(queryContext, object) {
|
|
97
|
-
const dbObject = EntityFieldTransformationUtils_1.transformFieldsToDatabaseObject(this.entityConfiguration, this.fieldTransformerMap, object);
|
|
97
|
+
const dbObject = (0, EntityFieldTransformationUtils_1.transformFieldsToDatabaseObject)(this.entityConfiguration, this.fieldTransformerMap, object);
|
|
98
98
|
const results = await this.insertInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, dbObject);
|
|
99
99
|
if (results.length > 1) {
|
|
100
100
|
throw new Error(`Excessive results from database adapter insert: ${this.entityConfiguration.tableName}`);
|
|
@@ -102,7 +102,7 @@ class EntityDatabaseAdapter {
|
|
|
102
102
|
else if (results.length === 0) {
|
|
103
103
|
throw new Error(`Empty results from database adapter insert: ${this.entityConfiguration.tableName}`);
|
|
104
104
|
}
|
|
105
|
-
return EntityFieldTransformationUtils_1.transformDatabaseObjectToFields(this.entityConfiguration, this.fieldTransformerMap, results[0]);
|
|
105
|
+
return (0, EntityFieldTransformationUtils_1.transformDatabaseObjectToFields)(this.entityConfiguration, this.fieldTransformerMap, results[0]);
|
|
106
106
|
}
|
|
107
107
|
/**
|
|
108
108
|
* Update an object.
|
|
@@ -114,8 +114,8 @@ class EntityDatabaseAdapter {
|
|
|
114
114
|
* @returns the updated object
|
|
115
115
|
*/
|
|
116
116
|
async updateAsync(queryContext, idField, id, object) {
|
|
117
|
-
const idColumn = EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField(this.entityConfiguration, idField);
|
|
118
|
-
const dbObject = EntityFieldTransformationUtils_1.transformFieldsToDatabaseObject(this.entityConfiguration, this.fieldTransformerMap, object);
|
|
117
|
+
const idColumn = (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(this.entityConfiguration, idField);
|
|
118
|
+
const dbObject = (0, EntityFieldTransformationUtils_1.transformFieldsToDatabaseObject)(this.entityConfiguration, this.fieldTransformerMap, object);
|
|
119
119
|
const results = await this.updateInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, idColumn, id, dbObject);
|
|
120
120
|
if (results.length > 1) {
|
|
121
121
|
throw new Error(`Excessive results from database adapter update: ${this.entityConfiguration.tableName}(id = ${id})`);
|
|
@@ -123,7 +123,7 @@ class EntityDatabaseAdapter {
|
|
|
123
123
|
else if (results.length === 0) {
|
|
124
124
|
throw new Error(`Empty results from database adapter update: ${this.entityConfiguration.tableName}(id = ${id})`);
|
|
125
125
|
}
|
|
126
|
-
return EntityFieldTransformationUtils_1.transformDatabaseObjectToFields(this.entityConfiguration, this.fieldTransformerMap, results[0]);
|
|
126
|
+
return (0, EntityFieldTransformationUtils_1.transformDatabaseObjectToFields)(this.entityConfiguration, this.fieldTransformerMap, results[0]);
|
|
127
127
|
}
|
|
128
128
|
/**
|
|
129
129
|
* Delete an object by ID.
|
|
@@ -133,7 +133,7 @@ class EntityDatabaseAdapter {
|
|
|
133
133
|
* @param id - the value of the ID field in the object
|
|
134
134
|
*/
|
|
135
135
|
async deleteAsync(queryContext, idField, id) {
|
|
136
|
-
const idColumn = EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField(this.entityConfiguration, idField);
|
|
136
|
+
const idColumn = (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(this.entityConfiguration, idField);
|
|
137
137
|
const numDeleted = await this.deleteInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, idColumn, id);
|
|
138
138
|
if (numDeleted > 1) {
|
|
139
139
|
throw new Error(`Excessive deletions from database adapter delete: ${this.entityConfiguration.tableName}(id = ${id})`);
|
|
@@ -144,7 +144,7 @@ class EntityDatabaseAdapter {
|
|
|
144
144
|
return {
|
|
145
145
|
orderBy: orderBy !== undefined
|
|
146
146
|
? orderBy.map((orderBySpecification) => ({
|
|
147
|
-
columnName: EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField(this.entityConfiguration, orderBySpecification.fieldName),
|
|
147
|
+
columnName: (0, EntityFieldTransformationUtils_1.getDatabaseFieldForEntityField)(this.entityConfiguration, orderBySpecification.fieldName),
|
|
148
148
|
order: orderBySpecification.order,
|
|
149
149
|
}))
|
|
150
150
|
: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/EntityDatabaseAdapter.ts"],"names":[],"mappings":";;;AAEA,8FAKmD;AAgBnD,SAAgB,mCAAmC,CAIjD,SAA6C;IAE7C,OAAQ,SAA2D,CAAC,UAAU,KAAK,SAAS,CAAC;AAC/F,CAAC;AAPD,kFAOC;AAYD,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oCAAiB,CAAA;IACjB,sCAAmB,CAAA;AACrB,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B;
|
|
1
|
+
{"version":3,"file":"EntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/EntityDatabaseAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { IEntityClass } from './Entity';
|
|
2
|
+
import EntityPrivacyPolicy from './EntityPrivacyPolicy';
|
|
3
|
+
import ReadonlyEntity from './ReadonlyEntity';
|
|
4
|
+
import ViewerContext from './ViewerContext';
|
|
5
|
+
export declare enum EntityEdgeDeletionBehavior {
|
|
6
|
+
/**
|
|
7
|
+
* Default. Invalidate the cache for all entities that reference the entity
|
|
8
|
+
* being deleted through this field, and transitively run deletions on those entities.
|
|
9
|
+
* This is most useful when the database itself expresses foreign
|
|
10
|
+
* keys and cascading deletes or set nulls and the entity framework just needs to
|
|
11
|
+
* be kept consistent with the state of the database.
|
|
12
|
+
*/
|
|
13
|
+
CASCADE_DELETE_INVALIDATE_CACHE = 0,
|
|
14
|
+
/**
|
|
15
|
+
* Delete all entities that reference the entity being deleted through this field. This is very similar
|
|
16
|
+
* to SQL `ON DELETE CASCADE` but is done in the Entity framework instead of at the underlying level.
|
|
17
|
+
* This will also invalidate the cached referencing entities.
|
|
18
|
+
*/
|
|
19
|
+
CASCADE_DELETE = 1,
|
|
20
|
+
/**
|
|
21
|
+
* Set this field to null when the referenced entity is deleted. This is very similar
|
|
22
|
+
* to SQL `ON DELETE SET NULL` but is done in the Entity framework instead of at the underlying level.
|
|
23
|
+
* This will also invalidate the cached referencing entities.
|
|
24
|
+
*/
|
|
25
|
+
SET_NULL = 2
|
|
26
|
+
}
|
|
27
|
+
export interface EntityAssociationDefinition<TViewerContext extends ViewerContext, TAssociatedFields, TAssociatedID extends NonNullable<TAssociatedFields[TAssociatedSelectedFields]>, TAssociatedEntity extends ReadonlyEntity<TAssociatedFields, TAssociatedID, TViewerContext, TAssociatedSelectedFields>, TAssociatedPrivacyPolicy extends EntityPrivacyPolicy<TAssociatedFields, TAssociatedID, TViewerContext, TAssociatedEntity, TAssociatedSelectedFields>, TAssociatedSelectedFields extends keyof TAssociatedFields = keyof TAssociatedFields> {
|
|
28
|
+
/**
|
|
29
|
+
* Class of entity on the other end of this edge.
|
|
30
|
+
*/
|
|
31
|
+
getAssociatedEntityClass: () => IEntityClass<TAssociatedFields, TAssociatedID, TViewerContext, TAssociatedEntity, TAssociatedPrivacyPolicy, TAssociatedSelectedFields>;
|
|
32
|
+
/**
|
|
33
|
+
* Field by which to load the instance of associatedEntityClass. If not provided, the
|
|
34
|
+
* associatedEntityClass instance is fetched by its ID.
|
|
35
|
+
*/
|
|
36
|
+
associatedEntityLookupByField?: keyof TAssociatedFields;
|
|
37
|
+
/**
|
|
38
|
+
* What action to perform on the current entity when the entity on the referencing end of
|
|
39
|
+
* this edge is deleted.
|
|
40
|
+
*
|
|
41
|
+
* @remarks
|
|
42
|
+
* The entity framework doesn't prescribe a one-size-fits-all solution for referential
|
|
43
|
+
* integrity; instead it exposes mechanisms that supports both database foreign key constraints
|
|
44
|
+
* and implicit entity-specified foreign keys. Choosing which approach to use often depends on
|
|
45
|
+
* application requirements, and sometimes even a mix-and-match is the right choice.
|
|
46
|
+
*
|
|
47
|
+
* - If referential integrity is critical to your application, database foreign key constraints
|
|
48
|
+
* combined with {@link EntityEdgeDeletionBehavior.CASACDE_DELETE_INVALIDATE_CACHE} are recommended.
|
|
49
|
+
* - If the database being used doesn't support foreign keys, then using the entity framework for referential
|
|
50
|
+
* integrity is recommended.
|
|
51
|
+
*/
|
|
52
|
+
edgeDeletionBehavior?: EntityEdgeDeletionBehavior;
|
|
53
|
+
}
|
|
54
|
+
export declare abstract class EntityFieldDefinition<T> {
|
|
55
|
+
readonly columnName: string;
|
|
56
|
+
readonly cache: boolean;
|
|
57
|
+
readonly association: EntityAssociationDefinition<any, any, any, any, any, any> | undefined;
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
* @param columnName - Column name in the database.
|
|
61
|
+
* @param cache - Whether or not to cache loaded instances of the entity by this field. The column name is
|
|
62
|
+
* used to derive a cache key for the cache entry. If true, this column must be able uniquely
|
|
63
|
+
* identify the entity.
|
|
64
|
+
*/
|
|
65
|
+
constructor({ columnName, cache, association, }: {
|
|
66
|
+
columnName: string;
|
|
67
|
+
cache?: boolean;
|
|
68
|
+
association?: EntityAssociationDefinition<any, any, any, any, any, any>;
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Validates input value for a field of this type. Null and undefined are considered valid by default. This is used for things like:
|
|
72
|
+
* - EntityLoader.loadByFieldValue - to ensure the value being loaded by is a valid value
|
|
73
|
+
* - EntityMutator.setField - to ensure the value being set is a valid value
|
|
74
|
+
*/
|
|
75
|
+
validateInputValue(value: T | null | undefined): boolean;
|
|
76
|
+
protected abstract validateInputValueInternal(value: T): boolean;
|
|
77
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EntityFieldDefinition = exports.EntityEdgeDeletionBehavior = void 0;
|
|
4
|
+
var EntityEdgeDeletionBehavior;
|
|
5
|
+
(function (EntityEdgeDeletionBehavior) {
|
|
6
|
+
/**
|
|
7
|
+
* Default. Invalidate the cache for all entities that reference the entity
|
|
8
|
+
* being deleted through this field, and transitively run deletions on those entities.
|
|
9
|
+
* This is most useful when the database itself expresses foreign
|
|
10
|
+
* keys and cascading deletes or set nulls and the entity framework just needs to
|
|
11
|
+
* be kept consistent with the state of the database.
|
|
12
|
+
*/
|
|
13
|
+
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["CASCADE_DELETE_INVALIDATE_CACHE"] = 0] = "CASCADE_DELETE_INVALIDATE_CACHE";
|
|
14
|
+
/**
|
|
15
|
+
* Delete all entities that reference the entity being deleted through this field. This is very similar
|
|
16
|
+
* to SQL `ON DELETE CASCADE` but is done in the Entity framework instead of at the underlying level.
|
|
17
|
+
* This will also invalidate the cached referencing entities.
|
|
18
|
+
*/
|
|
19
|
+
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["CASCADE_DELETE"] = 1] = "CASCADE_DELETE";
|
|
20
|
+
/**
|
|
21
|
+
* Set this field to null when the referenced entity is deleted. This is very similar
|
|
22
|
+
* to SQL `ON DELETE SET NULL` but is done in the Entity framework instead of at the underlying level.
|
|
23
|
+
* This will also invalidate the cached referencing entities.
|
|
24
|
+
*/
|
|
25
|
+
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["SET_NULL"] = 2] = "SET_NULL";
|
|
26
|
+
})(EntityEdgeDeletionBehavior = exports.EntityEdgeDeletionBehavior || (exports.EntityEdgeDeletionBehavior = {}));
|
|
27
|
+
class EntityFieldDefinition {
|
|
28
|
+
/**
|
|
29
|
+
*
|
|
30
|
+
* @param columnName - Column name in the database.
|
|
31
|
+
* @param cache - Whether or not to cache loaded instances of the entity by this field. The column name is
|
|
32
|
+
* used to derive a cache key for the cache entry. If true, this column must be able uniquely
|
|
33
|
+
* identify the entity.
|
|
34
|
+
*/
|
|
35
|
+
constructor({ columnName, cache = false, association, }) {
|
|
36
|
+
this.columnName = columnName;
|
|
37
|
+
this.cache = cache;
|
|
38
|
+
this.association = association;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Validates input value for a field of this type. Null and undefined are considered valid by default. This is used for things like:
|
|
42
|
+
* - EntityLoader.loadByFieldValue - to ensure the value being loaded by is a valid value
|
|
43
|
+
* - EntityMutator.setField - to ensure the value being set is a valid value
|
|
44
|
+
*/
|
|
45
|
+
validateInputValue(value) {
|
|
46
|
+
if (value === null || value === undefined) {
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return this.validateInputValueInternal(value);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.EntityFieldDefinition = EntityFieldDefinition;
|
|
53
|
+
//# sourceMappingURL=EntityFieldDefinition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EntityFieldDefinition.js","sourceRoot":"","sources":["../src/EntityFieldDefinition.ts"],"names":[],"mappings":";;;AAKA,IAAY,0BAuBX;AAvBD,WAAY,0BAA0B;IACpC;;;;;;OAMG;IACH,iIAA+B,CAAA;IAE/B;;;;OAIG;IACH,+FAAc,CAAA;IAEd;;;;OAIG;IACH,mFAAQ,CAAA;AACV,CAAC,EAvBW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAuBrC;AAyDD,MAAsB,qBAAqB;IAIzC;;;;;;OAMG;IACH,YAAY,EACV,UAAU,EACV,KAAK,GAAG,KAAK,EACb,WAAW,GAKZ;QACC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACI,kBAAkB,CAAC,KAA2B;QACnD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;YACzC,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;CAEF;AAtCD,sDAsCC"}
|
package/build/EntityFields.d.ts
CHANGED
|
@@ -1,80 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import EntityPrivacyPolicy from './EntityPrivacyPolicy';
|
|
3
|
-
import ReadonlyEntity from './ReadonlyEntity';
|
|
4
|
-
import ViewerContext from './ViewerContext';
|
|
5
|
-
export declare enum EntityEdgeDeletionBehavior {
|
|
6
|
-
/**
|
|
7
|
-
* Default. Invalidate the cache for all entities that reference the entity
|
|
8
|
-
* being deleted through this field, and transitively run deletions on those entities.
|
|
9
|
-
* This is most useful when the database itself expresses foreign
|
|
10
|
-
* keys and cascading deletes or set nulls and the entity framework just needs to
|
|
11
|
-
* be kept consistent with the state of the database.
|
|
12
|
-
*/
|
|
13
|
-
CASCADE_DELETE_INVALIDATE_CACHE = 0,
|
|
14
|
-
/**
|
|
15
|
-
* Delete all entities that reference the entity being deleted through this field. This is very similar
|
|
16
|
-
* to SQL `ON DELETE CASCADE` but is done in the Entity framework instead of at the underlying level.
|
|
17
|
-
* This will also invalidate the cached referencing entities.
|
|
18
|
-
*/
|
|
19
|
-
CASCADE_DELETE = 1,
|
|
20
|
-
/**
|
|
21
|
-
* Set this field to null when the referenced entity is deleted. This is very similar
|
|
22
|
-
* to SQL `ON DELETE SET NULL` but is done in the Entity framework instead of at the underlying level.
|
|
23
|
-
* This will also invalidate the cached referencing entities.
|
|
24
|
-
*/
|
|
25
|
-
SET_NULL = 2
|
|
26
|
-
}
|
|
27
|
-
export interface EntityAssociationDefinition<TViewerContext extends ViewerContext, TAssociatedFields, TAssociatedID extends NonNullable<TAssociatedFields[TAssociatedSelectedFields]>, TAssociatedEntity extends ReadonlyEntity<TAssociatedFields, TAssociatedID, TViewerContext, TAssociatedSelectedFields>, TAssociatedPrivacyPolicy extends EntityPrivacyPolicy<TAssociatedFields, TAssociatedID, TViewerContext, TAssociatedEntity, TAssociatedSelectedFields>, TAssociatedSelectedFields extends keyof TAssociatedFields = keyof TAssociatedFields> {
|
|
28
|
-
/**
|
|
29
|
-
* Class of entity on the other end of this edge.
|
|
30
|
-
*/
|
|
31
|
-
getAssociatedEntityClass: () => IEntityClass<TAssociatedFields, TAssociatedID, TViewerContext, TAssociatedEntity, TAssociatedPrivacyPolicy, TAssociatedSelectedFields>;
|
|
32
|
-
/**
|
|
33
|
-
* Field by which to load the instance of associatedEntityClass. If not provided, the
|
|
34
|
-
* associatedEntityClass instance is fetched by its ID.
|
|
35
|
-
*/
|
|
36
|
-
associatedEntityLookupByField?: keyof TAssociatedFields;
|
|
37
|
-
/**
|
|
38
|
-
* What action to perform on the current entity when the entity on the referencing end of
|
|
39
|
-
* this edge is deleted.
|
|
40
|
-
*
|
|
41
|
-
* @remarks
|
|
42
|
-
* The entity framework doesn't prescribe a one-size-fits-all solution for referential
|
|
43
|
-
* integrity; instead it exposes mechanisms that supports both database foreign key constraints
|
|
44
|
-
* and implicit entity-specified foreign keys. Choosing which approach to use often depends on
|
|
45
|
-
* application requirements, and sometimes even a mix-and-match is the right choice.
|
|
46
|
-
*
|
|
47
|
-
* - If referential integrity is critical to your application, database foreign key constraints
|
|
48
|
-
* combined with {@link EntityEdgeDeletionBehavior.CASACDE_DELETE_INVALIDATE_CACHE} are recommended.
|
|
49
|
-
* - If the database being used doesn't support foreign keys, then using the entity framework for referential
|
|
50
|
-
* integrity is recommended.
|
|
51
|
-
*/
|
|
52
|
-
edgeDeletionBehavior?: EntityEdgeDeletionBehavior;
|
|
53
|
-
}
|
|
54
|
-
export declare abstract class EntityFieldDefinition<T> {
|
|
55
|
-
readonly columnName: string;
|
|
56
|
-
readonly cache: boolean;
|
|
57
|
-
readonly association?: EntityAssociationDefinition<any, any, any, any, any, any>;
|
|
58
|
-
/**
|
|
59
|
-
*
|
|
60
|
-
* @param columnName - Column name in the database.
|
|
61
|
-
* @param cache - Whether or not to cache loaded instances of the entity by this field. The column name is
|
|
62
|
-
* used to derive a cache key for the cache entry. If true, this column must be able uniquely
|
|
63
|
-
* identify the entity.
|
|
64
|
-
*/
|
|
65
|
-
constructor({ columnName, cache, association, }: {
|
|
66
|
-
columnName: string;
|
|
67
|
-
cache?: boolean;
|
|
68
|
-
association?: EntityAssociationDefinition<any, any, any, any, any, any>;
|
|
69
|
-
});
|
|
70
|
-
/**
|
|
71
|
-
* Validates input value for a field of this type. Null and undefined are considered valid by default. This is used for things like:
|
|
72
|
-
* - EntityLoader.loadByFieldValue - to ensure the value being loaded by is a valid value
|
|
73
|
-
* - EntityMutator.setField - to ensure the value being set is a valid value
|
|
74
|
-
*/
|
|
75
|
-
validateInputValue(value: T | null | undefined): boolean;
|
|
76
|
-
protected abstract validateInputValueInternal(value: T): boolean;
|
|
77
|
-
}
|
|
1
|
+
import { EntityFieldDefinition } from './EntityFieldDefinition';
|
|
78
2
|
export declare class StringField extends EntityFieldDefinition<string> {
|
|
79
3
|
protected validateInputValueInternal(value: string): boolean;
|
|
80
4
|
}
|