@expo/entity 0.25.3 → 0.27.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/LICENSE +21 -0
- package/build/ComposedEntityCacheAdapter.d.ts +4 -2
- package/build/ComposedEntityCacheAdapter.js +39 -3
- package/build/ComposedEntityCacheAdapter.js.map +1 -1
- package/build/ComposedSecondaryEntityCache.d.ts +3 -2
- package/build/ComposedSecondaryEntityCache.js +3 -2
- package/build/ComposedSecondaryEntityCache.js.map +1 -1
- package/build/EnforcingEntityLoader.d.ts +10 -10
- package/build/EnforcingEntityLoader.js +8 -8
- package/build/EnforcingEntityLoader.js.map +1 -1
- package/build/Entity.d.ts +5 -5
- package/build/Entity.js +9 -9
- package/build/Entity.js.map +1 -1
- package/build/EntityAssociationLoader.d.ts +9 -4
- package/build/EntityAssociationLoader.js +5 -0
- package/build/EntityAssociationLoader.js.map +1 -1
- package/build/EntityCacheAdapter.d.ts +1 -1
- package/build/EntityCompanion.d.ts +1 -1
- package/build/EntityCompanion.js +1 -1
- package/build/EntityCompanionProvider.d.ts +9 -9
- package/build/EntityCompanionProvider.js +3 -3
- package/build/EntityConfiguration.d.ts +2 -2
- package/build/EntityDatabaseAdapter.d.ts +15 -6
- package/build/EntityDatabaseAdapter.js +8 -2
- package/build/EntityDatabaseAdapter.js.map +1 -1
- package/build/EntityFieldDefinition.d.ts +16 -8
- package/build/EntityFieldDefinition.js +12 -5
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityFields.d.ts +11 -11
- package/build/EntityFields.js +11 -11
- package/build/EntityLoader.d.ts +7 -7
- package/build/EntityLoader.js +7 -7
- package/build/EntityLoader.js.map +1 -1
- package/build/EntityMutationInfo.d.ts +2 -0
- package/build/EntityMutationTriggerConfiguration.d.ts +1 -1
- package/build/EntityMutationTriggerConfiguration.js +1 -1
- package/build/EntityMutator.d.ts +7 -9
- package/build/EntityMutator.js +59 -47
- package/build/EntityMutator.js.map +1 -1
- package/build/EntityMutatorFactory.d.ts +4 -4
- package/build/EntityMutatorFactory.js +6 -6
- package/build/EntityMutatorFactory.js.map +1 -1
- package/build/EntityPrivacyPolicy.d.ts +18 -5
- package/build/EntityPrivacyPolicy.js +18 -5
- package/build/EntityPrivacyPolicy.js.map +1 -1
- package/build/EntityQueryContext.d.ts +12 -1
- package/build/EntityQueryContext.js +12 -1
- package/build/EntityQueryContext.js.map +1 -1
- package/build/EntityQueryContextProvider.d.ts +1 -1
- package/build/EntitySecondaryCacheLoader.d.ts +1 -1
- package/build/EntitySecondaryCacheLoader.js +1 -1
- package/build/GenericSecondaryEntityCache.d.ts +1 -1
- package/build/GenericSecondaryEntityCache.js +1 -1
- package/build/ReadonlyEntity.d.ts +1 -1
- package/build/ReadonlyEntity.js +1 -1
- package/build/ViewerContext.d.ts +2 -2
- package/build/ViewerContext.js +2 -2
- package/build/ViewerScopedEntityCompanion.d.ts +2 -2
- package/build/ViewerScopedEntityCompanion.js +2 -2
- package/build/ViewerScopedEntityLoaderFactory.d.ts +1 -1
- package/build/ViewerScopedEntityLoaderFactory.js +1 -1
- package/build/ViewerScopedEntityMutatorFactory.d.ts +5 -5
- package/build/ViewerScopedEntityMutatorFactory.js +7 -7
- package/build/ViewerScopedEntityMutatorFactory.js.map +1 -1
- package/build/__tests__/ComposedCacheAdapter-test.js +37 -4
- package/build/__tests__/ComposedCacheAdapter-test.js.map +1 -1
- package/build/__tests__/EntityCommonUseCases-test.js +5 -1
- package/build/__tests__/EntityCommonUseCases-test.js.map +1 -1
- package/build/__tests__/EntityCompanion-test.js +5 -1
- package/build/__tests__/EntityCompanion-test.js.map +1 -1
- package/build/__tests__/EntityCompanionProvider-test.js +5 -1
- package/build/__tests__/EntityCompanionProvider-test.js.map +1 -1
- package/build/__tests__/EntityEdges-test.js +199 -33
- package/build/__tests__/EntityEdges-test.js.map +1 -1
- package/build/__tests__/EntityLoader-test.js +5 -1
- package/build/__tests__/EntityLoader-test.js.map +1 -1
- package/build/__tests__/EntityMutator-test.js +38 -53
- package/build/__tests__/EntityMutator-test.js.map +1 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js +5 -1
- package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
- package/build/__tests__/EntitySelfReferentialEdges-test.js +2 -2
- package/build/__tests__/EntitySelfReferentialEdges-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js +5 -1
- package/build/__tests__/ViewerScopedEntityCompanionProvider-test.js.map +1 -1
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js +2 -3
- package/build/__tests__/ViewerScopedEntityMutatorFactory-test.js.map +1 -1
- package/build/errors/EntityCacheAdapterError.js +5 -1
- package/build/errors/EntityCacheAdapterError.js.map +1 -1
- package/build/errors/EntityDatabaseAdapterError.js +5 -1
- package/build/errors/EntityDatabaseAdapterError.js.map +1 -1
- package/build/errors/EntityInvalidFieldValueError.js +6 -2
- package/build/errors/EntityInvalidFieldValueError.js.map +1 -1
- package/build/errors/EntityNotAuthorizedError.js +5 -1
- package/build/errors/EntityNotAuthorizedError.js.map +1 -1
- package/build/errors/EntityNotFoundError.js +6 -2
- package/build/errors/EntityNotFoundError.js.map +1 -1
- package/build/index.js +5 -1
- package/build/index.js.map +1 -1
- package/build/internal/EntityDataManager.d.ts +5 -5
- package/build/internal/EntityDataManager.js +10 -7
- package/build/internal/EntityDataManager.js.map +1 -1
- package/build/internal/EntityFieldTransformationUtils.js +1 -1
- package/build/internal/EntityFieldTransformationUtils.js.map +1 -1
- package/build/internal/ReadThroughEntityCache.d.ts +2 -2
- package/build/internal/ReadThroughEntityCache.js +3 -3
- package/build/internal/ReadThroughEntityCache.js.map +1 -1
- package/build/internal/__tests__/EntityDataManager-test.js +12 -7
- package/build/internal/__tests__/EntityDataManager-test.js.map +1 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +5 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
- package/build/metrics/IEntityMetricsAdapter.d.ts +63 -18
- package/build/metrics/IEntityMetricsAdapter.js +17 -1
- package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
- package/build/metrics/NoOpEntityMetricsAdapter.d.ts +1 -3
- package/build/metrics/NoOpEntityMetricsAdapter.js +1 -3
- package/build/metrics/NoOpEntityMetricsAdapter.js.map +1 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js +5 -1
- package/build/rules/AlwaysAllowPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js +5 -1
- package/build/rules/AlwaysDenyPrivacyPolicyRule.js.map +1 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js +5 -1
- package/build/rules/AlwaysSkipPrivacyPolicyRule.js.map +1 -1
- package/build/rules/PrivacyPolicyRule.d.ts +1 -1
- package/build/rules/PrivacyPolicyRule.js +1 -1
- package/build/utils/collections/maps.d.ts +1 -1
- package/build/utils/collections/maps.js +1 -1
- package/build/utils/testing/PrivacyPolicyRuleTestUtils.d.ts +1 -2
- package/build/utils/testing/StubDatabaseAdapter.js +6 -2
- package/build/utils/testing/StubDatabaseAdapter.js.map +1 -1
- package/build/utils/testing/StubQueryContextProvider.d.ts +1 -1
- package/build/utils/testing/StubQueryContextProvider.js +2 -0
- package/build/utils/testing/StubQueryContextProvider.js.map +1 -1
- package/package.json +3 -2
- package/src/ComposedEntityCacheAdapter.ts +44 -3
- package/src/ComposedSecondaryEntityCache.ts +3 -2
- package/src/EnforcingEntityLoader.ts +14 -10
- package/src/Entity.ts +9 -9
- package/src/EntityAssociationLoader.ts +9 -4
- package/src/EntityCacheAdapter.ts +1 -1
- package/src/EntityCompanion.ts +1 -1
- package/src/EntityCompanionProvider.ts +9 -9
- package/src/EntityConfiguration.ts +2 -2
- package/src/EntityDatabaseAdapter.ts +33 -6
- package/src/EntityFieldDefinition.ts +15 -6
- package/src/EntityFields.ts +11 -11
- package/src/EntityLoader.ts +11 -8
- package/src/EntityMutationInfo.ts +2 -0
- package/src/EntityMutationTriggerConfiguration.ts +1 -1
- package/src/EntityMutator.ts +99 -68
- package/src/EntityMutatorFactory.ts +4 -10
- package/src/EntityPrivacyPolicy.ts +20 -5
- package/src/EntityQueryContext.ts +12 -1
- package/src/EntityQueryContextProvider.ts +1 -1
- package/src/EntitySecondaryCacheLoader.ts +1 -1
- package/src/GenericSecondaryEntityCache.ts +1 -1
- package/src/ReadonlyEntity.ts +1 -1
- package/src/ViewerContext.ts +2 -2
- package/src/ViewerScopedEntityCompanion.ts +2 -2
- package/src/ViewerScopedEntityLoaderFactory.ts +1 -1
- package/src/ViewerScopedEntityMutatorFactory.ts +8 -23
- package/src/__tests__/ComposedCacheAdapter-test.ts +43 -4
- package/src/__tests__/EntityEdges-test.ts +287 -32
- package/src/__tests__/EntityMutator-test.ts +33 -54
- package/src/__tests__/EntitySelfReferentialEdges-test.ts +2 -2
- package/src/__tests__/ViewerScopedEntityMutatorFactory-test.ts +2 -6
- package/src/errors/EntityInvalidFieldValueError.ts +1 -1
- package/src/errors/EntityNotFoundError.ts +1 -1
- package/src/internal/EntityDataManager.ts +18 -9
- package/src/internal/EntityFieldTransformationUtils.ts +1 -1
- package/src/internal/ReadThroughEntityCache.ts +5 -3
- package/src/internal/__tests__/EntityDataManager-test.ts +11 -8
- package/src/metrics/IEntityMetricsAdapter.ts +73 -20
- package/src/metrics/NoOpEntityMetricsAdapter.ts +1 -5
- package/src/rules/PrivacyPolicyRule.ts +1 -1
- package/src/utils/collections/maps.ts +1 -1
- package/src/utils/testing/PrivacyPolicyRuleTestUtils.ts +1 -1
- package/src/utils/testing/StubDatabaseAdapter.ts +4 -1
- package/src/utils/testing/StubQueryContextProvider.ts +1 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import EntityConfiguration from './EntityConfiguration';
|
|
2
2
|
import { EntityQueryContext } from './EntityQueryContext';
|
|
3
3
|
import { FieldTransformerMap } from './internal/EntityFieldTransformationUtils';
|
|
4
|
-
interface SingleValueFieldEqualityCondition<TFields, N extends keyof TFields = keyof TFields> {
|
|
4
|
+
export interface SingleValueFieldEqualityCondition<TFields, N extends keyof TFields = keyof TFields> {
|
|
5
5
|
fieldName: N;
|
|
6
6
|
fieldValue: TFields[N];
|
|
7
7
|
}
|
|
8
|
-
interface MultiValueFieldEqualityCondition<TFields, N extends keyof TFields = keyof TFields> {
|
|
8
|
+
export interface MultiValueFieldEqualityCondition<TFields, N extends keyof TFields = keyof TFields> {
|
|
9
9
|
fieldName: N;
|
|
10
10
|
fieldValues: readonly TFields[N][];
|
|
11
11
|
}
|
|
@@ -43,6 +43,12 @@ export interface QuerySelectionModifiers<TFields> {
|
|
|
43
43
|
*/
|
|
44
44
|
limit?: number;
|
|
45
45
|
}
|
|
46
|
+
export interface QuerySelectionModifiersWithOrderByRaw<TFields> extends QuerySelectionModifiers<TFields> {
|
|
47
|
+
/**
|
|
48
|
+
* Order the entities by a raw SQL `ORDER BY` clause.
|
|
49
|
+
*/
|
|
50
|
+
orderByRaw?: string;
|
|
51
|
+
}
|
|
46
52
|
export interface TableQuerySelectionModifiers {
|
|
47
53
|
orderBy: {
|
|
48
54
|
columnName: string;
|
|
@@ -51,6 +57,9 @@ export interface TableQuerySelectionModifiers {
|
|
|
51
57
|
offset: number | undefined;
|
|
52
58
|
limit: number | undefined;
|
|
53
59
|
}
|
|
60
|
+
export interface TableQuerySelectionModifiersWithOrderByRaw extends TableQuerySelectionModifiers {
|
|
61
|
+
orderByRaw: string | undefined;
|
|
62
|
+
}
|
|
54
63
|
/**
|
|
55
64
|
* A database adapter is an interface by which entity objects can be
|
|
56
65
|
* fetched, inserted, updated, and deleted from a database. This base class
|
|
@@ -83,7 +92,7 @@ export default abstract class EntityDatabaseAdapter<TFields> {
|
|
|
83
92
|
*
|
|
84
93
|
* @param queryContext - query context with which to perform the fetch
|
|
85
94
|
* @param fieldEqualityOperands - list of field equality where clause operand specifications
|
|
86
|
-
* @param querySelectionModifiers - limit, offset, and
|
|
95
|
+
* @param querySelectionModifiers - limit, offset, orderBy, and orderByRaw for the query
|
|
87
96
|
* @returns array of objects matching the query
|
|
88
97
|
*/
|
|
89
98
|
fetchManyByFieldEqualityConjunctionAsync<N extends keyof TFields>(queryContext: EntityQueryContext, fieldEqualityOperands: FieldEqualityCondition<TFields, N>[], querySelectionModifiers: QuerySelectionModifiers<TFields>): Promise<readonly Readonly<TFields>[]>;
|
|
@@ -97,8 +106,8 @@ export default abstract class EntityDatabaseAdapter<TFields> {
|
|
|
97
106
|
* @param querySelectionModifiers - limit, offset, and orderBy for the query
|
|
98
107
|
* @returns array of objects matching the query
|
|
99
108
|
*/
|
|
100
|
-
fetchManyByRawWhereClauseAsync(queryContext: EntityQueryContext, rawWhereClause: string, bindings: any[] | object, querySelectionModifiers:
|
|
101
|
-
protected abstract fetchManyByRawWhereClauseInternalAsync(queryInterface: any, tableName: string, rawWhereClause: string, bindings: any[] | object, querySelectionModifiers:
|
|
109
|
+
fetchManyByRawWhereClauseAsync(queryContext: EntityQueryContext, rawWhereClause: string, bindings: any[] | object, querySelectionModifiers: QuerySelectionModifiersWithOrderByRaw<TFields>): Promise<readonly Readonly<TFields>[]>;
|
|
110
|
+
protected abstract fetchManyByRawWhereClauseInternalAsync(queryInterface: any, tableName: string, rawWhereClause: string, bindings: any[] | object, querySelectionModifiers: TableQuerySelectionModifiersWithOrderByRaw): Promise<object[]>;
|
|
102
111
|
/**
|
|
103
112
|
* Insert an object.
|
|
104
113
|
*
|
|
@@ -128,6 +137,6 @@ export default abstract class EntityDatabaseAdapter<TFields> {
|
|
|
128
137
|
*/
|
|
129
138
|
deleteAsync<K extends keyof TFields>(queryContext: EntityQueryContext, idField: K, id: any): Promise<void>;
|
|
130
139
|
protected abstract deleteInternalAsync(queryInterface: any, tableName: string, tableIdField: string, id: any): Promise<number>;
|
|
140
|
+
private convertToTableQueryModifiersWithOrderByRaw;
|
|
131
141
|
private convertToTableQueryModifiers;
|
|
132
142
|
}
|
|
133
|
-
export {};
|
|
@@ -50,7 +50,7 @@ class EntityDatabaseAdapter {
|
|
|
50
50
|
*
|
|
51
51
|
* @param queryContext - query context with which to perform the fetch
|
|
52
52
|
* @param fieldEqualityOperands - list of field equality where clause operand specifications
|
|
53
|
-
* @param querySelectionModifiers - limit, offset, and
|
|
53
|
+
* @param querySelectionModifiers - limit, offset, orderBy, and orderByRaw for the query
|
|
54
54
|
* @returns array of objects matching the query
|
|
55
55
|
*/
|
|
56
56
|
async fetchManyByFieldEqualityConjunctionAsync(queryContext, fieldEqualityOperands, querySelectionModifiers) {
|
|
@@ -83,7 +83,7 @@ class EntityDatabaseAdapter {
|
|
|
83
83
|
* @returns array of objects matching the query
|
|
84
84
|
*/
|
|
85
85
|
async fetchManyByRawWhereClauseAsync(queryContext, rawWhereClause, bindings, querySelectionModifiers) {
|
|
86
|
-
const results = await this.fetchManyByRawWhereClauseInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, rawWhereClause, bindings, this.
|
|
86
|
+
const results = await this.fetchManyByRawWhereClauseInternalAsync(queryContext.getQueryInterface(), this.entityConfiguration.tableName, rawWhereClause, bindings, this.convertToTableQueryModifiersWithOrderByRaw(querySelectionModifiers));
|
|
87
87
|
return results.map((result) => (0, EntityFieldTransformationUtils_1.transformDatabaseObjectToFields)(this.entityConfiguration, this.fieldTransformerMap, result));
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
@@ -139,6 +139,12 @@ class EntityDatabaseAdapter {
|
|
|
139
139
|
throw new Error(`Excessive deletions from database adapter delete: ${this.entityConfiguration.tableName}(id = ${id})`);
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
|
+
convertToTableQueryModifiersWithOrderByRaw(querySelectionModifiers) {
|
|
143
|
+
return {
|
|
144
|
+
...this.convertToTableQueryModifiers(querySelectionModifiers),
|
|
145
|
+
orderByRaw: querySelectionModifiers.orderByRaw,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
142
148
|
convertToTableQueryModifiers(querySelectionModifiers) {
|
|
143
149
|
const orderBy = querySelectionModifiers.orderBy;
|
|
144
150
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/EntityDatabaseAdapter.ts"],"names":[],"mappings":";;;AAEA,8FAKmD;
|
|
1
|
+
{"version":3,"file":"EntityDatabaseAdapter.js","sourceRoot":"","sources":["../src/EntityDatabaseAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,25 +4,32 @@ import ReadonlyEntity from './ReadonlyEntity';
|
|
|
4
4
|
import ViewerContext from './ViewerContext';
|
|
5
5
|
export declare enum EntityEdgeDeletionBehavior {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Invalidate the cache for all entities that reference the entity
|
|
8
8
|
* being deleted through this field, and transitively run deletions on those entities.
|
|
9
9
|
* This is most useful when the database itself expresses foreign
|
|
10
|
-
* keys and cascading deletes
|
|
10
|
+
* keys and cascading deletes and the entity framework just needs to
|
|
11
11
|
* be kept consistent with the state of the database.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
CASCADE_DELETE_INVALIDATE_CACHE_ONLY = 0,
|
|
14
|
+
/**
|
|
15
|
+
* Invalidate the cache for all entities that reference the entity
|
|
16
|
+
* being deleted through this field. This is most useful when the database itself expresses
|
|
17
|
+
* foreign keys and cascading "SET NULL"s and the entity framework just needs to be
|
|
18
|
+
* kept consistent with the state of the database.
|
|
19
|
+
*/
|
|
20
|
+
SET_NULL_INVALIDATE_CACHE_ONLY = 1,
|
|
14
21
|
/**
|
|
15
22
|
* Delete all entities that reference the entity being deleted through this field. This is very similar
|
|
16
23
|
* to SQL `ON DELETE CASCADE` but is done in the Entity framework instead of at the underlying level.
|
|
17
24
|
* This will also invalidate the cached referencing entities.
|
|
18
25
|
*/
|
|
19
|
-
CASCADE_DELETE =
|
|
26
|
+
CASCADE_DELETE = 2,
|
|
20
27
|
/**
|
|
21
28
|
* Set this field to null when the referenced entity is deleted. This is very similar
|
|
22
29
|
* to SQL `ON DELETE SET NULL` but is done in the Entity framework instead of at the underlying level.
|
|
23
30
|
* This will also invalidate the cached referencing entities.
|
|
24
31
|
*/
|
|
25
|
-
SET_NULL =
|
|
32
|
+
SET_NULL = 3
|
|
26
33
|
}
|
|
27
34
|
/**
|
|
28
35
|
* Defines an association between entities. An association is primarily used to define cascading deletion behavior.
|
|
@@ -43,16 +50,17 @@ export interface EntityAssociationDefinition<TViewerContext extends ViewerContex
|
|
|
43
50
|
*
|
|
44
51
|
* @remarks
|
|
45
52
|
* The entity framework doesn't prescribe a one-size-fits-all solution for referential
|
|
46
|
-
* integrity; instead it exposes mechanisms that
|
|
53
|
+
* integrity; instead it exposes mechanisms that support both database foreign key constraints
|
|
47
54
|
* and implicit entity-specified foreign keys. Choosing which approach to use often depends on
|
|
48
55
|
* application requirements, and sometimes even a mix-and-match is the right choice.
|
|
49
56
|
*
|
|
50
57
|
* - If referential integrity is critical to your application, database foreign key constraints
|
|
51
|
-
* combined with
|
|
58
|
+
* combined with EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE_ONLY or
|
|
59
|
+
* EntityEdgeDeletionBehavior.SET_NULL_INVALIDATE_CACHE_ONLY are recommended.
|
|
52
60
|
* - If the database being used doesn't support foreign keys, then using the entity framework for referential
|
|
53
61
|
* integrity is recommended.
|
|
54
62
|
*/
|
|
55
|
-
edgeDeletionBehavior
|
|
63
|
+
edgeDeletionBehavior: EntityEdgeDeletionBehavior;
|
|
56
64
|
}
|
|
57
65
|
/**
|
|
58
66
|
* Definition for a field referencing a column in the underlying database. Specifies things like
|
|
@@ -4,25 +4,32 @@ exports.EntityFieldDefinition = exports.EntityEdgeDeletionBehavior = void 0;
|
|
|
4
4
|
var EntityEdgeDeletionBehavior;
|
|
5
5
|
(function (EntityEdgeDeletionBehavior) {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Invalidate the cache for all entities that reference the entity
|
|
8
8
|
* being deleted through this field, and transitively run deletions on those entities.
|
|
9
9
|
* This is most useful when the database itself expresses foreign
|
|
10
|
-
* keys and cascading deletes
|
|
10
|
+
* keys and cascading deletes and the entity framework just needs to
|
|
11
11
|
* be kept consistent with the state of the database.
|
|
12
12
|
*/
|
|
13
|
-
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["
|
|
13
|
+
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["CASCADE_DELETE_INVALIDATE_CACHE_ONLY"] = 0] = "CASCADE_DELETE_INVALIDATE_CACHE_ONLY";
|
|
14
|
+
/**
|
|
15
|
+
* Invalidate the cache for all entities that reference the entity
|
|
16
|
+
* being deleted through this field. This is most useful when the database itself expresses
|
|
17
|
+
* foreign keys and cascading "SET NULL"s and the entity framework just needs to be
|
|
18
|
+
* kept consistent with the state of the database.
|
|
19
|
+
*/
|
|
20
|
+
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["SET_NULL_INVALIDATE_CACHE_ONLY"] = 1] = "SET_NULL_INVALIDATE_CACHE_ONLY";
|
|
14
21
|
/**
|
|
15
22
|
* Delete all entities that reference the entity being deleted through this field. This is very similar
|
|
16
23
|
* to SQL `ON DELETE CASCADE` but is done in the Entity framework instead of at the underlying level.
|
|
17
24
|
* This will also invalidate the cached referencing entities.
|
|
18
25
|
*/
|
|
19
|
-
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["CASCADE_DELETE"] =
|
|
26
|
+
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["CASCADE_DELETE"] = 2] = "CASCADE_DELETE";
|
|
20
27
|
/**
|
|
21
28
|
* Set this field to null when the referenced entity is deleted. This is very similar
|
|
22
29
|
* to SQL `ON DELETE SET NULL` but is done in the Entity framework instead of at the underlying level.
|
|
23
30
|
* This will also invalidate the cached referencing entities.
|
|
24
31
|
*/
|
|
25
|
-
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["SET_NULL"] =
|
|
32
|
+
EntityEdgeDeletionBehavior[EntityEdgeDeletionBehavior["SET_NULL"] = 3] = "SET_NULL";
|
|
26
33
|
})(EntityEdgeDeletionBehavior = exports.EntityEdgeDeletionBehavior || (exports.EntityEdgeDeletionBehavior = {}));
|
|
27
34
|
/**
|
|
28
35
|
* Definition for a field referencing a column in the underlying database. Specifies things like
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityFieldDefinition.js","sourceRoot":"","sources":["../src/EntityFieldDefinition.ts"],"names":[],"mappings":";;;AAKA,IAAY,
|
|
1
|
+
{"version":3,"file":"EntityFieldDefinition.js","sourceRoot":"","sources":["../src/EntityFieldDefinition.ts"],"names":[],"mappings":";;;AAKA,IAAY,0BA+BX;AA/BD,WAAY,0BAA0B;IACpC;;;;;;OAMG;IACH,2IAAoC,CAAA;IAEpC;;;;;OAKG;IACH,+HAA8B,CAAA;IAE9B;;;;OAIG;IACH,+FAAc,CAAA;IAEd;;;;OAIG;IACH,mFAAQ,CAAA;AACV,CAAC,EA/BW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QA+BrC;AA6DD;;;GAGG;AACH,MAAsB,qBAAqB;IAIzC;;;;;;;OAOG;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;AAvCD,sDAuCC"}
|
package/build/EntityFields.d.ts
CHANGED
|
@@ -1,70 +1,70 @@
|
|
|
1
1
|
import { EntityFieldDefinition } from './EntityFieldDefinition';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* EntityFieldDefinition for a column with a JS string type.
|
|
4
4
|
*/
|
|
5
5
|
export declare class StringField extends EntityFieldDefinition<string> {
|
|
6
6
|
protected validateInputValueInternal(value: string): boolean;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* EntityFieldDefinition for a column with a JS string type.
|
|
10
10
|
* Enforces that the string is a valid UUID.
|
|
11
11
|
*/
|
|
12
12
|
export declare class UUIDField extends StringField {
|
|
13
13
|
protected validateInputValueInternal(value: string): boolean;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* EntityFieldDefinition for a column with a JS Date type.
|
|
17
17
|
*/
|
|
18
18
|
export declare class DateField extends EntityFieldDefinition<Date> {
|
|
19
19
|
protected validateInputValueInternal(value: Date): boolean;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* EntityFieldDefinition for a column with a JS boolean type.
|
|
23
23
|
*/
|
|
24
24
|
export declare class BooleanField extends EntityFieldDefinition<boolean> {
|
|
25
25
|
protected validateInputValueInternal(value: boolean): boolean;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
28
|
+
* EntityFieldDefinition for a column with a JS number type.
|
|
29
29
|
* Enforces that the number is an integer.
|
|
30
30
|
*/
|
|
31
31
|
export declare class IntField extends EntityFieldDefinition<number> {
|
|
32
32
|
protected validateInputValueInternal(value: number): boolean;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* EntityFieldDefinition for a column with a JS number type.
|
|
36
36
|
* Enforces that the number is a float (which includes integers in JS).
|
|
37
37
|
*/
|
|
38
38
|
export declare class FloatField extends EntityFieldDefinition<number> {
|
|
39
39
|
protected validateInputValueInternal(value: number): boolean;
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
*
|
|
42
|
+
* EntityFieldDefinition for a column with a JS string array type.
|
|
43
43
|
* Enforces that every member of the string array is a string.
|
|
44
44
|
*/
|
|
45
45
|
export declare class StringArrayField extends EntityFieldDefinition<string[]> {
|
|
46
46
|
protected validateInputValueInternal(value: string[]): boolean;
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
*
|
|
49
|
+
* EntityFieldDefinition for a column with a JS JSON object type.
|
|
50
50
|
*/
|
|
51
51
|
export declare class JSONObjectField extends EntityFieldDefinition<object> {
|
|
52
52
|
protected validateInputValueInternal(value: object): boolean;
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
55
|
+
* EntityFieldDefinition for a enum column with a JS string or number type.
|
|
56
56
|
*/
|
|
57
57
|
export declare class EnumField extends EntityFieldDefinition<string | number> {
|
|
58
58
|
protected validateInputValueInternal(value: string | number): boolean;
|
|
59
59
|
}
|
|
60
60
|
/**
|
|
61
|
-
*
|
|
61
|
+
* EntityFieldDefinition for a column with a JS JSON array type.
|
|
62
62
|
*/
|
|
63
63
|
export declare class JSONArrayField extends EntityFieldDefinition<any[]> {
|
|
64
64
|
protected validateInputValueInternal(value: any[]): boolean;
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
67
|
+
* EntityFieldDefinition for a column that may be a JS JSON array type.
|
|
68
68
|
* Does not do any validation.
|
|
69
69
|
*/
|
|
70
70
|
export declare class MaybeJSONArrayField extends EntityFieldDefinition<any | any[]> {
|
package/build/EntityFields.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.MaybeJSONArrayField = exports.JSONArrayField = exports.EnumField = expor
|
|
|
4
4
|
const uuid_1 = require("uuid");
|
|
5
5
|
const EntityFieldDefinition_1 = require("./EntityFieldDefinition");
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* EntityFieldDefinition for a column with a JS string type.
|
|
8
8
|
*/
|
|
9
9
|
class StringField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
10
10
|
validateInputValueInternal(value) {
|
|
@@ -13,7 +13,7 @@ class StringField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
13
13
|
}
|
|
14
14
|
exports.StringField = StringField;
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
16
|
+
* EntityFieldDefinition for a column with a JS string type.
|
|
17
17
|
* Enforces that the string is a valid UUID.
|
|
18
18
|
*/
|
|
19
19
|
class UUIDField extends StringField {
|
|
@@ -23,7 +23,7 @@ class UUIDField extends StringField {
|
|
|
23
23
|
}
|
|
24
24
|
exports.UUIDField = UUIDField;
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* EntityFieldDefinition for a column with a JS Date type.
|
|
27
27
|
*/
|
|
28
28
|
class DateField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
29
29
|
validateInputValueInternal(value) {
|
|
@@ -32,7 +32,7 @@ class DateField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
32
32
|
}
|
|
33
33
|
exports.DateField = DateField;
|
|
34
34
|
/**
|
|
35
|
-
*
|
|
35
|
+
* EntityFieldDefinition for a column with a JS boolean type.
|
|
36
36
|
*/
|
|
37
37
|
class BooleanField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
38
38
|
validateInputValueInternal(value) {
|
|
@@ -41,7 +41,7 @@ class BooleanField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
41
41
|
}
|
|
42
42
|
exports.BooleanField = BooleanField;
|
|
43
43
|
/**
|
|
44
|
-
*
|
|
44
|
+
* EntityFieldDefinition for a column with a JS number type.
|
|
45
45
|
* Enforces that the number is an integer.
|
|
46
46
|
*/
|
|
47
47
|
class IntField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
@@ -51,7 +51,7 @@ class IntField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
51
51
|
}
|
|
52
52
|
exports.IntField = IntField;
|
|
53
53
|
/**
|
|
54
|
-
*
|
|
54
|
+
* EntityFieldDefinition for a column with a JS number type.
|
|
55
55
|
* Enforces that the number is a float (which includes integers in JS).
|
|
56
56
|
*/
|
|
57
57
|
class FloatField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
@@ -61,7 +61,7 @@ class FloatField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
61
61
|
}
|
|
62
62
|
exports.FloatField = FloatField;
|
|
63
63
|
/**
|
|
64
|
-
*
|
|
64
|
+
* EntityFieldDefinition for a column with a JS string array type.
|
|
65
65
|
* Enforces that every member of the string array is a string.
|
|
66
66
|
*/
|
|
67
67
|
class StringArrayField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
@@ -71,7 +71,7 @@ class StringArrayField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
71
71
|
}
|
|
72
72
|
exports.StringArrayField = StringArrayField;
|
|
73
73
|
/**
|
|
74
|
-
*
|
|
74
|
+
* EntityFieldDefinition for a column with a JS JSON object type.
|
|
75
75
|
*/
|
|
76
76
|
class JSONObjectField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
77
77
|
validateInputValueInternal(value) {
|
|
@@ -80,7 +80,7 @@ class JSONObjectField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
80
80
|
}
|
|
81
81
|
exports.JSONObjectField = JSONObjectField;
|
|
82
82
|
/**
|
|
83
|
-
*
|
|
83
|
+
* EntityFieldDefinition for a enum column with a JS string or number type.
|
|
84
84
|
*/
|
|
85
85
|
class EnumField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
86
86
|
validateInputValueInternal(value) {
|
|
@@ -89,7 +89,7 @@ class EnumField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
89
89
|
}
|
|
90
90
|
exports.EnumField = EnumField;
|
|
91
91
|
/**
|
|
92
|
-
*
|
|
92
|
+
* EntityFieldDefinition for a column with a JS JSON array type.
|
|
93
93
|
*/
|
|
94
94
|
class JSONArrayField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
95
95
|
validateInputValueInternal(value) {
|
|
@@ -98,7 +98,7 @@ class JSONArrayField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
|
|
98
98
|
}
|
|
99
99
|
exports.JSONArrayField = JSONArrayField;
|
|
100
100
|
/**
|
|
101
|
-
*
|
|
101
|
+
* EntityFieldDefinition for a column that may be a JS JSON array type.
|
|
102
102
|
* Does not do any validation.
|
|
103
103
|
*/
|
|
104
104
|
class MaybeJSONArrayField extends EntityFieldDefinition_1.EntityFieldDefinition {
|
package/build/EntityLoader.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Result } from '@expo/results';
|
|
|
2
2
|
import EnforcingEntityLoader from './EnforcingEntityLoader';
|
|
3
3
|
import { IEntityClass } from './Entity';
|
|
4
4
|
import EntityConfiguration from './EntityConfiguration';
|
|
5
|
-
import { FieldEqualityCondition, QuerySelectionModifiers } from './EntityDatabaseAdapter';
|
|
5
|
+
import { FieldEqualityCondition, QuerySelectionModifiers, QuerySelectionModifiersWithOrderByRaw } from './EntityDatabaseAdapter';
|
|
6
6
|
import EntityPrivacyPolicy, { EntityPrivacyPolicyEvaluationContext } from './EntityPrivacyPolicy';
|
|
7
7
|
import { EntityQueryContext } from './EntityQueryContext';
|
|
8
8
|
import ReadonlyEntity from './ReadonlyEntity';
|
|
@@ -11,7 +11,7 @@ import EntityDataManager from './internal/EntityDataManager';
|
|
|
11
11
|
import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
|
|
12
12
|
/**
|
|
13
13
|
* The primary interface for loading entities. All normal loads are batched,
|
|
14
|
-
* cached, and authorized against the entity's
|
|
14
|
+
* cached, and authorized against the entity's EntityPrivacyPolicy.
|
|
15
15
|
*/
|
|
16
16
|
export default class EntityLoader<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> {
|
|
17
17
|
private readonly viewerContext;
|
|
@@ -100,20 +100,20 @@ export default class EntityLoader<TFields, TID extends NonNullable<TFields[TSele
|
|
|
100
100
|
* bindings: `[1]`
|
|
101
101
|
* Entites returned `WHERE id = 1`
|
|
102
102
|
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
103
|
+
* http://knexjs.org/#Builder-whereRaw
|
|
104
|
+
* http://knexjs.org/#Raw-Bindings
|
|
105
105
|
*
|
|
106
106
|
* @param rawWhereClause - parameterized SQL WHERE clause with positional binding placeholders or named binding placeholders
|
|
107
107
|
* @param bindings - array of positional bindings or object of named bindings
|
|
108
|
-
* @param querySelectionModifiers - limit, offset, and
|
|
108
|
+
* @param querySelectionModifiers - limit, offset, orderBy, and orderByRaw for the query
|
|
109
109
|
* @returns array of entity results that match the query, where result error can be UnauthorizedError
|
|
110
110
|
* @throws Error when rawWhereClause or bindings are invalid
|
|
111
111
|
*
|
|
112
112
|
* @deprecated prefer caching loaders
|
|
113
113
|
*/
|
|
114
|
-
loadManyByRawWhereClauseAsync(rawWhereClause: string, bindings: any[] | object, querySelectionModifiers?:
|
|
114
|
+
loadManyByRawWhereClauseAsync(rawWhereClause: string, bindings: any[] | object, querySelectionModifiers?: QuerySelectionModifiersWithOrderByRaw<TFields>): Promise<readonly Result<TEntity>[]>;
|
|
115
115
|
/**
|
|
116
|
-
* Invalidate all caches for an entity's fields. Exposed primarily for internal use by
|
|
116
|
+
* Invalidate all caches for an entity's fields. Exposed primarily for internal use by EntityMutator.
|
|
117
117
|
* @param objectFields - entity data object to be invalidated
|
|
118
118
|
*/
|
|
119
119
|
invalidateFieldsAsync(objectFields: Readonly<TFields>): Promise<void>;
|
package/build/EntityLoader.js
CHANGED
|
@@ -12,7 +12,7 @@ const EntityNotFoundError_1 = __importDefault(require("./errors/EntityNotFoundEr
|
|
|
12
12
|
const maps_1 = require("./utils/collections/maps");
|
|
13
13
|
/**
|
|
14
14
|
* The primary interface for loading entities. All normal loads are batched,
|
|
15
|
-
* cached, and authorized against the entity's
|
|
15
|
+
* cached, and authorized against the entity's EntityPrivacyPolicy.
|
|
16
16
|
*/
|
|
17
17
|
class EntityLoader {
|
|
18
18
|
constructor(viewerContext, queryContext, privacyPolicyEvaluationContext, entityConfiguration, entityClass, privacyPolicy, dataManager, metricsAdapter) {
|
|
@@ -67,7 +67,7 @@ class EntityLoader {
|
|
|
67
67
|
async loadByFieldEqualingAsync(uniqueFieldName, fieldValue) {
|
|
68
68
|
var _a;
|
|
69
69
|
const entityResults = await this.loadManyByFieldEqualingAsync(uniqueFieldName, fieldValue);
|
|
70
|
-
(0, invariant_1.default)(entityResults.length <= 1, `loadByFieldEqualing: Multiple entities of type ${this.entityClass.name} found for ${uniqueFieldName}=${fieldValue}`);
|
|
70
|
+
(0, invariant_1.default)(entityResults.length <= 1, `loadByFieldEqualing: Multiple entities of type ${this.entityClass.name} found for ${String(uniqueFieldName)}=${fieldValue}`);
|
|
71
71
|
return (_a = entityResults[0]) !== null && _a !== void 0 ? _a : null;
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
@@ -148,12 +148,12 @@ class EntityLoader {
|
|
|
148
148
|
* bindings: `[1]`
|
|
149
149
|
* Entites returned `WHERE id = 1`
|
|
150
150
|
*
|
|
151
|
-
*
|
|
152
|
-
*
|
|
151
|
+
* http://knexjs.org/#Builder-whereRaw
|
|
152
|
+
* http://knexjs.org/#Raw-Bindings
|
|
153
153
|
*
|
|
154
154
|
* @param rawWhereClause - parameterized SQL WHERE clause with positional binding placeholders or named binding placeholders
|
|
155
155
|
* @param bindings - array of positional bindings or object of named bindings
|
|
156
|
-
* @param querySelectionModifiers - limit, offset, and
|
|
156
|
+
* @param querySelectionModifiers - limit, offset, orderBy, and orderByRaw for the query
|
|
157
157
|
* @returns array of entity results that match the query, where result error can be UnauthorizedError
|
|
158
158
|
* @throws Error when rawWhereClause or bindings are invalid
|
|
159
159
|
*
|
|
@@ -170,7 +170,7 @@ class EntityLoader {
|
|
|
170
170
|
}));
|
|
171
171
|
}
|
|
172
172
|
/**
|
|
173
|
-
* Invalidate all caches for an entity's fields. Exposed primarily for internal use by
|
|
173
|
+
* Invalidate all caches for an entity's fields. Exposed primarily for internal use by EntityMutator.
|
|
174
174
|
* @param objectFields - entity data object to be invalidated
|
|
175
175
|
*/
|
|
176
176
|
async invalidateFieldsAsync(objectFields) {
|
|
@@ -216,7 +216,7 @@ class EntityLoader {
|
|
|
216
216
|
}
|
|
217
217
|
validateFieldValues(fieldName, fieldValues) {
|
|
218
218
|
const fieldDefinition = this.entityConfiguration.schema.get(fieldName);
|
|
219
|
-
(0, invariant_1.default)(fieldDefinition, `must have field definition for field = ${fieldName}`);
|
|
219
|
+
(0, invariant_1.default)(fieldDefinition, `must have field definition for field = ${String(fieldName)}`);
|
|
220
220
|
for (const fieldValue of fieldValues) {
|
|
221
221
|
const isInputValid = fieldDefinition.validateInputValue(fieldValue);
|
|
222
222
|
if (!isInputValid) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityLoader.js","sourceRoot":"","sources":["../src/EntityLoader.ts"],"names":[],"mappings":";;;;;AAAA,2CAA4D;AAC5D,0DAAkC;AAElC,oFAA4D;AAG5D,
|
|
1
|
+
{"version":3,"file":"EntityLoader.js","sourceRoot":"","sources":["../src/EntityLoader.ts"],"names":[],"mappings":";;;;;AAAA,2CAA4D;AAC5D,0DAAkC;AAElC,oFAA4D;AAG5D,mEAKiC;AAKjC,yGAAiF;AACjF,uFAA+D;AAG/D,mDAA+D;AAE/D;;;GAGG;AACH,MAAqB,YAAY;IAc/B,YACmB,aAA6B,EAC7B,YAAgC,EAChC,8BAAoE,EACpE,mBAAiD,EACjD,WAOhB,EACgB,aAA6B,EAC7B,WAAuC,EACrC,cAAqC;QAdvC,kBAAa,GAAb,aAAa,CAAgB;QAC7B,iBAAY,GAAZ,YAAY,CAAoB;QAChC,mCAA8B,GAA9B,8BAA8B,CAAsC;QACpE,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO3B;QACgB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,gBAAW,GAAX,WAAW,CAA4B;QACrC,mBAAc,GAAd,cAAc,CAAuB;IACvD,CAAC;IAEJ;;;;OAIG;IACH,SAAS;QAQP,OAAO,IAAI,+BAAqB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gCAAgC,CACpC,SAAY,EACZ,WAA+C;QAE/C,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAEjD,MAAM,yBAAyB,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,4BAA4B,CACnF,IAAI,CAAC,YAAY,EACjB,SAAS,EACT,WAAW,CACZ,CAAC;QAEF,OAAO,MAAM,IAAI,CAAC,kCAAkC,CAAC,yBAAyB,CAAC,CAAC;IAClF,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,4BAA4B,CAChC,SAAY,EACZ,UAAmC;QAEnC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gCAAgC,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3F,MAAM,0BAA0B,GAAG,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjE,IAAA,mBAAS,EACP,0BAA0B,KAAK,SAAS,EACxC,GAAG,UAAU,iEAAiE,CAC/E,CAAC;QACF,OAAO,0BAA2B,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,wBAAwB,CAC5B,eAAkB,EAClB,UAAmC;;QAEnC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,4BAA4B,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;QAC3F,IAAA,mBAAS,EACP,aAAa,CAAC,MAAM,IAAI,CAAC,EACzB,kDAAkD,IAAI,CAAC,WAAW,CAAC,IAAI,cAAc,MAAM,CACzF,eAAe,CAChB,IAAI,UAAU,EAAE,CAClB,CAAC;QACF,OAAO,MAAA,aAAa,CAAC,CAAC,CAAC,mCAAI,IAAI,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,EAAO;QACzB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,IAAI,YAAY,KAAK,SAAS,EAAE;YAC9B,OAAO,IAAA,gBAAM,EACX,IAAI,6BAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAChF,CAAC;SACH;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CAAC,EAAO;QACjC,OAAO,MAAM,IAAI,CAAC,wBAAwB,CACxC,IAAI,CAAC,mBAAmB,CAAC,OAA0B,EACnD,EAAE,CACH,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB,CAAC,GAAmB;QAC1C,MAAM,aAAa,GAAG,CAAC,MAAM,IAAI,CAAC,gCAAgC,CAChE,IAAI,CAAC,mBAAmB,CAAC,OAA0B,EACnD,GAAG,CACJ,CAAiD,CAAC;QACnD,OAAO,IAAA,aAAM,EAAC,aAAa,EAAE,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE;YACtD,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;YAC3C,OAAO,CACL,YAAY,aAAZ,YAAY,cAAZ,YAAY,GACZ,IAAA,gBAAM,EAAC,IAAI,6BAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CACxF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,uCAAuC,CAC3C,qBAA2D,EAC3D,0BAA4D,EAAE;QAE9D,KAAK,MAAM,oBAAoB,IAAI,qBAAqB,EAAE;YACxD,MAAM,WAAW,GAAG,IAAA,2DAAmC,EAAC,oBAAoB,CAAC;gBAC3E,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,CAAC;gBACnC,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC;YACrC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SACvE;QAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,uCAAuC,CACjF,IAAI,CAAC,YAAY,EACjB,qBAAqB,EACrB,uBAAuB,CACxB,CAAC;QACF,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACvE,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE;YACzD,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE;gBAC7B,OAAO,qBAAqB,CAAC;aAC9B;YACD,OAAO,MAAM,IAAA,qBAAW,EACtB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,8BAA8B,EACnC,qBAAqB,CAAC,KAAK,EAC3B,IAAI,CAAC,cAAc,CACpB,CACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,CAAC,6BAA6B,CACjC,cAAsB,EACtB,QAAwB,EACxB,0BAA0E,EAAE;QAE5E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,6BAA6B,CACvE,IAAI,CAAC,YAAY,EACjB,cAAc,EACd,QAAQ,EACR,uBAAuB,CACxB,CAAC;QACF,MAAM,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACvE,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE;YACzD,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE;gBAC7B,OAAO,qBAAqB,CAAC;aAC9B;YACD,OAAO,MAAM,IAAA,qBAAW,EACtB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,8BAA8B,EACnC,qBAAqB,CAAC,KAAK,EAC3B,IAAI,CAAC,cAAc,CACpB,CACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CAAC,YAA+B;QACzD,MAAM,IAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,qBAAqB,CAAC,MAAe;QACzC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAClE,CAAC;IAEO,oBAAoB,CAAC,aAAiC;QAC5D,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;YACxC,IAAI;gBACF,OAAO,IAAA,gBAAM,EAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;aACvE;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,EAAE;oBACzB,MAAM,CAAC,CAAC;iBACT;gBACD,OAAO,IAAA,gBAAM,EAAC,CAAC,CAAC,CAAC;aAClB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,kCAAkC,CAC7C,GAAiD;QAEjD,MAAM,yBAAyB,GAAG,IAAA,aAAM,EAAC,GAAG,EAAE,CAAC,YAAY,EAAE,EAAE,CAC7D,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CACxC,CAAC;QACF,OAAO,MAAM,IAAA,kBAAW,EAAC,yBAAyB,EAAE,KAAK,EAAE,sBAAsB,EAAE,EAAE;YACnF,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE;gBACzD,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE;oBAC7B,OAAO,qBAAqB,CAAC;iBAC9B;gBACD,OAAO,MAAM,IAAA,qBAAW,EACtB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CACnC,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,8BAA8B,EACnC,qBAAqB,CAAC,KAAK,EAC3B,IAAI,CAAC,cAAc,CACpB,CACF,CAAC;YACJ,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CACzB,SAAY,EACZ,WAAkC;QAElC,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvE,IAAA,mBAAS,EAAC,eAAe,EAAE,0CAA0C,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1F,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,YAAY,EAAE;gBACjB,MAAM,IAAI,sCAA4B,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;aACjF;SACF;IACH,CAAC;CACF;AAjVD,+BAiVC"}
|
|
@@ -10,6 +10,7 @@ export declare type EntityValidatorMutationInfo<TFields, TID extends NonNullable
|
|
|
10
10
|
} | {
|
|
11
11
|
type: EntityMutationType.UPDATE;
|
|
12
12
|
previousValue: TEntity;
|
|
13
|
+
cascadingDeleteCause: EntityCascadingDeletionInfo | null;
|
|
13
14
|
};
|
|
14
15
|
/**
|
|
15
16
|
* Information about a cascading deletion.
|
|
@@ -29,6 +30,7 @@ export declare type EntityTriggerMutationInfo<TFields, TID extends NonNullable<T
|
|
|
29
30
|
} | {
|
|
30
31
|
type: EntityMutationType.UPDATE;
|
|
31
32
|
previousValue: TEntity;
|
|
33
|
+
cascadingDeleteCause: EntityCascadingDeletionInfo | null;
|
|
32
34
|
} | {
|
|
33
35
|
type: EntityMutationType.DELETE;
|
|
34
36
|
cascadingDeleteCause: EntityCascadingDeletionInfo | null;
|
|
@@ -55,7 +55,7 @@ export declare abstract class EntityMutationTrigger<TFields, TID extends NonNull
|
|
|
55
55
|
abstract executeAsync(viewerContext: TViewerContext, queryContext: EntityTransactionalQueryContext, entity: TEntity, mutationInfo: EntityTriggerMutationInfo<TFields, TID, TViewerContext, TEntity, TSelectedFields>): Promise<void>;
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
|
-
* A non-transactional trigger is like a
|
|
58
|
+
* A non-transactional trigger is like a EntityMutationTrigger but used for afterCommit triggers
|
|
59
59
|
* since they explicitly occur outside of the transaction.
|
|
60
60
|
*/
|
|
61
61
|
export declare abstract class EntityNonTransactionalMutationTrigger<TFields, TID extends NonNullable<TFields[TSelectedFields]>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TID, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> {
|
|
@@ -10,7 +10,7 @@ class EntityMutationTrigger {
|
|
|
10
10
|
}
|
|
11
11
|
exports.EntityMutationTrigger = EntityMutationTrigger;
|
|
12
12
|
/**
|
|
13
|
-
* A non-transactional trigger is like a
|
|
13
|
+
* A non-transactional trigger is like a EntityMutationTrigger but used for afterCommit triggers
|
|
14
14
|
* since they explicitly occur outside of the transaction.
|
|
15
15
|
*/
|
|
16
16
|
class EntityNonTransactionalMutationTrigger {
|