@expo/entity 0.22.0 → 0.23.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/EntityCacheAdapter.d.ts +2 -9
- package/build/EntityCacheAdapter.js.map +1 -1
- package/build/internal/ReadThroughEntityCache.d.ts +2 -3
- package/build/internal/ReadThroughEntityCache.js +2 -6
- package/build/internal/ReadThroughEntityCache.js.map +1 -1
- package/build/internal/__tests__/ReadThroughEntityCache-test.js +0 -32
- package/build/internal/__tests__/ReadThroughEntityCache-test.js.map +1 -1
- package/build/utils/testing/StubCacheAdapter.d.ts +6 -9
- package/build/utils/testing/StubCacheAdapter.js +0 -6
- package/build/utils/testing/StubCacheAdapter.js.map +1 -1
- package/package.json +1 -1
- package/src/EntityCacheAdapter.ts +2 -10
- package/src/internal/ReadThroughEntityCache.ts +6 -28
- package/src/internal/__tests__/ReadThroughEntityCache-test.ts +0 -44
- package/src/utils/testing/StubCacheAdapter.ts +11 -17
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import EntityConfiguration from './EntityConfiguration';
|
|
2
|
-
import { FieldTransformerMap } from './internal/EntityFieldTransformationUtils';
|
|
3
2
|
import { CacheLoadResult } from './internal/ReadThroughEntityCache';
|
|
4
3
|
/**
|
|
5
4
|
* A cache adapter is an interface by which objects can be
|
|
@@ -8,25 +7,19 @@ import { CacheLoadResult } from './internal/ReadThroughEntityCache';
|
|
|
8
7
|
export default abstract class EntityCacheAdapter<TFields> {
|
|
9
8
|
protected readonly entityConfiguration: EntityConfiguration<TFields>;
|
|
10
9
|
constructor(entityConfiguration: EntityConfiguration<TFields>);
|
|
11
|
-
/**
|
|
12
|
-
* Transformer definitions for field types. Used to modify values as they are read from or written to
|
|
13
|
-
* the cache. Override in concrete subclasses to change transformation behavior.
|
|
14
|
-
* If a field type is not present in the map, then fields of that type will not be transformed.
|
|
15
|
-
*/
|
|
16
|
-
abstract getFieldTransformerMap(): FieldTransformerMap;
|
|
17
10
|
/**
|
|
18
11
|
* Load many objects from cache.
|
|
19
12
|
* @param fieldName - object field being queried
|
|
20
13
|
* @param fieldValues - fieldName field values being queried
|
|
21
14
|
* @returns map from all field values to a CacheLoadResult for each input value
|
|
22
15
|
*/
|
|
23
|
-
abstract loadManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult
|
|
16
|
+
abstract loadManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>>;
|
|
24
17
|
/**
|
|
25
18
|
* Cache many objects fetched from the DB.
|
|
26
19
|
* @param fieldName - object field being queried
|
|
27
20
|
* @param objectMap - map from field value to object to cache
|
|
28
21
|
*/
|
|
29
|
-
abstract cacheManyAsync<N extends keyof TFields>(fieldName: N, objectMap: ReadonlyMap<NonNullable<TFields[N]>,
|
|
22
|
+
abstract cacheManyAsync<N extends keyof TFields>(fieldName: N, objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>): Promise<void>;
|
|
30
23
|
/**
|
|
31
24
|
* Negatively cache objects that could not be found in the cache or DB.
|
|
32
25
|
* @param fieldName - object field being queried
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityCacheAdapter.js","sourceRoot":"","sources":["../src/EntityCacheAdapter.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"EntityCacheAdapter.js","sourceRoot":"","sources":["../src/EntityCacheAdapter.ts"],"names":[],"mappings":";;AAGA;;;GAGG;AACH,MAA8B,kBAAkB;IAC9C,YAA+B,mBAAiD;QAAjD,wBAAmB,GAAnB,mBAAmB,CAA8B;IAAG,CAAC;CA2CrF;AA5CD,qCA4CC"}
|
|
@@ -5,9 +5,9 @@ export declare enum CacheStatus {
|
|
|
5
5
|
MISS = 1,
|
|
6
6
|
NEGATIVE = 2
|
|
7
7
|
}
|
|
8
|
-
export declare type CacheLoadResult = {
|
|
8
|
+
export declare type CacheLoadResult<TFields> = {
|
|
9
9
|
status: CacheStatus.HIT;
|
|
10
|
-
item: Readonly<
|
|
10
|
+
item: Readonly<TFields>;
|
|
11
11
|
} | {
|
|
12
12
|
status: CacheStatus.MISS;
|
|
13
13
|
} | {
|
|
@@ -20,7 +20,6 @@ export declare type CacheLoadResult = {
|
|
|
20
20
|
export default class ReadThroughEntityCache<TFields> {
|
|
21
21
|
private readonly entityConfiguration;
|
|
22
22
|
private readonly entityCacheAdapter;
|
|
23
|
-
private readonly fieldTransformerMap;
|
|
24
23
|
constructor(entityConfiguration: EntityConfiguration<TFields>, entityCacheAdapter: EntityCacheAdapter<TFields>);
|
|
25
24
|
private isFieldCacheable;
|
|
26
25
|
/**
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.CacheStatus = void 0;
|
|
7
7
|
const invariant_1 = __importDefault(require("invariant"));
|
|
8
8
|
const maps_1 = require("../utils/collections/maps");
|
|
9
|
-
const EntityFieldTransformationUtils_1 = require("./EntityFieldTransformationUtils");
|
|
10
9
|
var CacheStatus;
|
|
11
10
|
(function (CacheStatus) {
|
|
12
11
|
CacheStatus[CacheStatus["HIT"] = 0] = "HIT";
|
|
@@ -21,7 +20,6 @@ class ReadThroughEntityCache {
|
|
|
21
20
|
constructor(entityConfiguration, entityCacheAdapter) {
|
|
22
21
|
this.entityConfiguration = entityConfiguration;
|
|
23
22
|
this.entityCacheAdapter = entityCacheAdapter;
|
|
24
|
-
this.fieldTransformerMap = entityCacheAdapter.getFieldTransformerMap();
|
|
25
23
|
}
|
|
26
24
|
isFieldCacheable(fieldName) {
|
|
27
25
|
return this.entityConfiguration.cacheableKeys.has(fieldName);
|
|
@@ -54,9 +52,7 @@ class ReadThroughEntityCache {
|
|
|
54
52
|
const results = new Map();
|
|
55
53
|
cacheLoadResults.forEach((cacheLoadResult, fieldValue) => {
|
|
56
54
|
if (cacheLoadResult.status === CacheStatus.HIT) {
|
|
57
|
-
results.set(fieldValue, [
|
|
58
|
-
(0, EntityFieldTransformationUtils_1.transformCacheObjectToFields)(this.entityConfiguration, this.fieldTransformerMap, cacheLoadResult.item),
|
|
59
|
-
]);
|
|
55
|
+
results.set(fieldValue, [cacheLoadResult.item]);
|
|
60
56
|
}
|
|
61
57
|
});
|
|
62
58
|
// fetch any misses from DB, add DB objects to results, cache DB results, inform cache of any missing DB results
|
|
@@ -77,7 +73,7 @@ class ReadThroughEntityCache {
|
|
|
77
73
|
}
|
|
78
74
|
const uniqueObject = objects[0];
|
|
79
75
|
if (uniqueObject) {
|
|
80
|
-
objectsToCache.set(fieldValue,
|
|
76
|
+
objectsToCache.set(fieldValue, uniqueObject);
|
|
81
77
|
results.set(fieldValue, [uniqueObject]);
|
|
82
78
|
}
|
|
83
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadThroughEntityCache.js","sourceRoot":"","sources":["../../src/internal/ReadThroughEntityCache.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAIlC,oDAAsD;
|
|
1
|
+
{"version":3,"file":"ReadThroughEntityCache.js","sourceRoot":"","sources":["../../src/internal/ReadThroughEntityCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,7 +51,6 @@ describe(ReadThroughEntityCache_1.default, () => {
|
|
|
51
51
|
describe('readManyThroughAsync', () => {
|
|
52
52
|
it('fetches from DB upon cache miss and caches the result', async () => {
|
|
53
53
|
const cacheAdapterMock = (0, ts_mockito_1.mock)();
|
|
54
|
-
(0, ts_mockito_1.when)(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
55
54
|
const cacheAdapter = (0, ts_mockito_1.instance)(cacheAdapterMock);
|
|
56
55
|
const entityCache = new ReadThroughEntityCache_1.default(makeEntityConfiguration(true), cacheAdapter);
|
|
57
56
|
const fetcher = createIdFetcher(['wat', 'who']);
|
|
@@ -73,7 +72,6 @@ describe(ReadThroughEntityCache_1.default, () => {
|
|
|
73
72
|
});
|
|
74
73
|
it('does not fetch from the DB or cache results when all cache fetches are hits', async () => {
|
|
75
74
|
const cacheAdapterMock = (0, ts_mockito_1.mock)();
|
|
76
|
-
(0, ts_mockito_1.when)(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
77
75
|
const cacheAdapter = (0, ts_mockito_1.instance)(cacheAdapterMock);
|
|
78
76
|
const entityCache = new ReadThroughEntityCache_1.default(makeEntityConfiguration(true), cacheAdapter);
|
|
79
77
|
const fetcher = createIdFetcher(['wat', 'who']);
|
|
@@ -95,7 +93,6 @@ describe(ReadThroughEntityCache_1.default, () => {
|
|
|
95
93
|
});
|
|
96
94
|
it('negatively caches db misses', async () => {
|
|
97
95
|
const cacheAdapterMock = (0, ts_mockito_1.mock)();
|
|
98
|
-
(0, ts_mockito_1.when)(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
99
96
|
const cacheAdapter = (0, ts_mockito_1.instance)(cacheAdapterMock);
|
|
100
97
|
const entityCache = new ReadThroughEntityCache_1.default(makeEntityConfiguration(true), cacheAdapter);
|
|
101
98
|
// simulate db miss
|
|
@@ -109,7 +106,6 @@ describe(ReadThroughEntityCache_1.default, () => {
|
|
|
109
106
|
});
|
|
110
107
|
it('does not return or fetch negatively cached results from DB', async () => {
|
|
111
108
|
const cacheAdapterMock = (0, ts_mockito_1.mock)();
|
|
112
|
-
(0, ts_mockito_1.when)(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
113
109
|
const cacheAdapter = (0, ts_mockito_1.instance)(cacheAdapterMock);
|
|
114
110
|
const entityCache = new ReadThroughEntityCache_1.default(makeEntityConfiguration(true), cacheAdapter);
|
|
115
111
|
const fetcher = createIdFetcher([]);
|
|
@@ -122,7 +118,6 @@ describe(ReadThroughEntityCache_1.default, () => {
|
|
|
122
118
|
});
|
|
123
119
|
it('does a mix and match of hit, miss, and negative', async () => {
|
|
124
120
|
const cacheAdapterMock = (0, ts_mockito_1.mock)();
|
|
125
|
-
(0, ts_mockito_1.when)(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
126
121
|
const cacheAdapter = (0, ts_mockito_1.instance)(cacheAdapterMock);
|
|
127
122
|
const entityCache = new ReadThroughEntityCache_1.default(makeEntityConfiguration(true), cacheAdapter);
|
|
128
123
|
const fetcher = createIdFetcher(['wat', 'who', 'why']);
|
|
@@ -143,7 +138,6 @@ describe(ReadThroughEntityCache_1.default, () => {
|
|
|
143
138
|
});
|
|
144
139
|
it('does not call into cache for field that is not cacheable', async () => {
|
|
145
140
|
const cacheAdapterMock = (0, ts_mockito_1.mock)();
|
|
146
|
-
(0, ts_mockito_1.when)(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
147
141
|
const cacheAdapter = (0, ts_mockito_1.instance)(cacheAdapterMock);
|
|
148
142
|
const entityCache = new ReadThroughEntityCache_1.default(makeEntityConfiguration(false), cacheAdapter);
|
|
149
143
|
const fetcher = createIdFetcher(['wat']);
|
|
@@ -151,32 +145,6 @@ describe(ReadThroughEntityCache_1.default, () => {
|
|
|
151
145
|
(0, ts_mockito_1.verify)(cacheAdapterMock.loadManyAsync('id', (0, ts_mockito_1.anything)())).never();
|
|
152
146
|
expect(result).toEqual(new Map([['wat', [{ id: 'wat' }]]]));
|
|
153
147
|
});
|
|
154
|
-
it('transforms fields for cache storage', async () => {
|
|
155
|
-
const cacheAdapterMock = (0, ts_mockito_1.mock)();
|
|
156
|
-
(0, ts_mockito_1.when)(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map([
|
|
157
|
-
[
|
|
158
|
-
EntityFields_1.UUIDField.name,
|
|
159
|
-
{
|
|
160
|
-
read: (val) => val.split('-')[0],
|
|
161
|
-
write: (val) => `${val}-in-cache`,
|
|
162
|
-
},
|
|
163
|
-
],
|
|
164
|
-
]));
|
|
165
|
-
const cacheAdapter = (0, ts_mockito_1.instance)(cacheAdapterMock);
|
|
166
|
-
const entityCache = new ReadThroughEntityCache_1.default(makeEntityConfiguration(true), cacheAdapter);
|
|
167
|
-
const fetcher = createIdFetcher(['wat', 'who']);
|
|
168
|
-
(0, ts_mockito_1.when)(cacheAdapterMock.loadManyAsync('id', (0, ts_mockito_1.deepEqual)(['wat', 'who']))).thenResolve(new Map([
|
|
169
|
-
['wat', { status: ReadThroughEntityCache_1.CacheStatus.MISS }],
|
|
170
|
-
['who', { status: ReadThroughEntityCache_1.CacheStatus.HIT, item: { id: 'who-in-cache' } }],
|
|
171
|
-
]));
|
|
172
|
-
const result = await entityCache.readManyThroughAsync('id', ['wat', 'who'], fetcher);
|
|
173
|
-
(0, ts_mockito_1.verify)(cacheAdapterMock.loadManyAsync('id', (0, ts_mockito_1.deepEqual)(['wat', 'who']))).once();
|
|
174
|
-
(0, ts_mockito_1.verify)(cacheAdapterMock.cacheManyAsync('id', (0, ts_mockito_1.deepEqual)(new Map([['wat', { id: 'wat-in-cache' }]])))).once();
|
|
175
|
-
expect(result).toEqual(new Map([
|
|
176
|
-
['wat', [{ id: 'wat' }]],
|
|
177
|
-
['who', [{ id: 'who' }]],
|
|
178
|
-
]));
|
|
179
|
-
});
|
|
180
148
|
});
|
|
181
149
|
describe('invalidateManyAsync', () => {
|
|
182
150
|
it('calls cache adapter invalidate', async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReadThroughEntityCache-test.js","sourceRoot":"","sources":["../../../src/internal/__tests__/ReadThroughEntityCache-test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReadThroughEntityCache-test.js","sourceRoot":"","sources":["../../../src/internal/__tests__/ReadThroughEntityCache-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import EntityCacheAdapter from '../../EntityCacheAdapter';
|
|
2
2
|
import EntityConfiguration from '../../EntityConfiguration';
|
|
3
3
|
import IEntityCacheAdapterProvider from '../../IEntityCacheAdapterProvider';
|
|
4
|
-
import { FieldTransformerMap } from '../../internal/EntityFieldTransformationUtils';
|
|
5
4
|
import { CacheLoadResult } from '../../internal/ReadThroughEntityCache';
|
|
6
5
|
export declare class NoCacheStubCacheAdapterProvider implements IEntityCacheAdapterProvider {
|
|
7
6
|
getCacheAdapter<TFields>(entityConfiguration: EntityConfiguration<TFields>): EntityCacheAdapter<TFields>;
|
|
8
7
|
}
|
|
9
8
|
export declare class NoCacheStubCacheAdapter<TFields> extends EntityCacheAdapter<TFields> {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
cacheManyAsync<N extends keyof TFields>(_fieldName: N, _objectMap: ReadonlyMap<NonNullable<TFields[N]>, object>): Promise<void>;
|
|
9
|
+
loadManyAsync<N extends keyof TFields>(_fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>>;
|
|
10
|
+
cacheManyAsync<N extends keyof TFields>(_fieldName: N, _objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>): Promise<void>;
|
|
13
11
|
cacheDBMissesAsync<N extends keyof TFields>(_fieldName: N, _fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
|
|
14
12
|
invalidateManyAsync<N extends keyof TFields>(_fieldName: N, _fieldValues: readonly TFields[N][]): Promise<void>;
|
|
15
13
|
}
|
|
@@ -18,11 +16,10 @@ export declare class InMemoryFullCacheStubCacheAdapterProvider implements IEntit
|
|
|
18
16
|
getCacheAdapter<TFields>(entityConfiguration: EntityConfiguration<TFields>): EntityCacheAdapter<TFields>;
|
|
19
17
|
}
|
|
20
18
|
export declare class InMemoryFullCacheStubCacheAdapter<TFields> extends EntityCacheAdapter<TFields> {
|
|
21
|
-
readonly cache: Map<string, Readonly<
|
|
22
|
-
constructor(entityConfiguration: EntityConfiguration<TFields>, cache: Map<string, Readonly<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
cacheManyAsync<N extends keyof TFields>(fieldName: N, objectMap: ReadonlyMap<NonNullable<TFields[N]>, object>): Promise<void>;
|
|
19
|
+
readonly cache: Map<string, Readonly<TFields>>;
|
|
20
|
+
constructor(entityConfiguration: EntityConfiguration<TFields>, cache: Map<string, Readonly<TFields>>);
|
|
21
|
+
loadManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>>;
|
|
22
|
+
cacheManyAsync<N extends keyof TFields>(fieldName: N, objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>): Promise<void>;
|
|
26
23
|
cacheDBMissesAsync<N extends keyof TFields>(_fieldName: N, _fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
|
|
27
24
|
invalidateManyAsync<N extends keyof TFields>(fieldName: N, fieldValues: readonly NonNullable<TFields[N]>[]): Promise<void>;
|
|
28
25
|
private createCacheKey;
|
|
@@ -14,9 +14,6 @@ class NoCacheStubCacheAdapterProvider {
|
|
|
14
14
|
}
|
|
15
15
|
exports.NoCacheStubCacheAdapterProvider = NoCacheStubCacheAdapterProvider;
|
|
16
16
|
class NoCacheStubCacheAdapter extends EntityCacheAdapter_1.default {
|
|
17
|
-
getFieldTransformerMap() {
|
|
18
|
-
return new Map();
|
|
19
|
-
}
|
|
20
17
|
async loadManyAsync(_fieldName, fieldValues) {
|
|
21
18
|
return fieldValues.reduce((acc, v) => {
|
|
22
19
|
acc.set(v, {
|
|
@@ -44,9 +41,6 @@ class InMemoryFullCacheStubCacheAdapter extends EntityCacheAdapter_1.default {
|
|
|
44
41
|
super(entityConfiguration);
|
|
45
42
|
this.cache = cache;
|
|
46
43
|
}
|
|
47
|
-
getFieldTransformerMap() {
|
|
48
|
-
return new Map();
|
|
49
|
-
}
|
|
50
44
|
async loadManyAsync(fieldName, fieldValues) {
|
|
51
45
|
const results = new Map();
|
|
52
46
|
fieldValues.forEach((fieldValue) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StubCacheAdapter.js","sourceRoot":"","sources":["../../../src/utils/testing/StubCacheAdapter.ts"],"names":[],"mappings":";;;;;;AAAA,0DAAkC;AAElC,kFAA0D;
|
|
1
|
+
{"version":3,"file":"StubCacheAdapter.js","sourceRoot":"","sources":["../../../src/utils/testing/StubCacheAdapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import EntityConfiguration from './EntityConfiguration';
|
|
2
|
-
import { FieldTransformerMap } from './internal/EntityFieldTransformationUtils';
|
|
3
2
|
import { CacheLoadResult } from './internal/ReadThroughEntityCache';
|
|
4
3
|
|
|
5
4
|
/**
|
|
@@ -9,13 +8,6 @@ import { CacheLoadResult } from './internal/ReadThroughEntityCache';
|
|
|
9
8
|
export default abstract class EntityCacheAdapter<TFields> {
|
|
10
9
|
constructor(protected readonly entityConfiguration: EntityConfiguration<TFields>) {}
|
|
11
10
|
|
|
12
|
-
/**
|
|
13
|
-
* Transformer definitions for field types. Used to modify values as they are read from or written to
|
|
14
|
-
* the cache. Override in concrete subclasses to change transformation behavior.
|
|
15
|
-
* If a field type is not present in the map, then fields of that type will not be transformed.
|
|
16
|
-
*/
|
|
17
|
-
public abstract getFieldTransformerMap(): FieldTransformerMap;
|
|
18
|
-
|
|
19
11
|
/**
|
|
20
12
|
* Load many objects from cache.
|
|
21
13
|
* @param fieldName - object field being queried
|
|
@@ -25,7 +17,7 @@ export default abstract class EntityCacheAdapter<TFields> {
|
|
|
25
17
|
public abstract loadManyAsync<N extends keyof TFields>(
|
|
26
18
|
fieldName: N,
|
|
27
19
|
fieldValues: readonly NonNullable<TFields[N]>[]
|
|
28
|
-
): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult
|
|
20
|
+
): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>>;
|
|
29
21
|
|
|
30
22
|
/**
|
|
31
23
|
* Cache many objects fetched from the DB.
|
|
@@ -34,7 +26,7 @@ export default abstract class EntityCacheAdapter<TFields> {
|
|
|
34
26
|
*/
|
|
35
27
|
public abstract cacheManyAsync<N extends keyof TFields>(
|
|
36
28
|
fieldName: N,
|
|
37
|
-
objectMap: ReadonlyMap<NonNullable<TFields[N]>,
|
|
29
|
+
objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>
|
|
38
30
|
): Promise<void>;
|
|
39
31
|
|
|
40
32
|
/**
|
|
@@ -3,11 +3,6 @@ import invariant from 'invariant';
|
|
|
3
3
|
import EntityCacheAdapter from '../EntityCacheAdapter';
|
|
4
4
|
import EntityConfiguration from '../EntityConfiguration';
|
|
5
5
|
import { filterMap } from '../utils/collections/maps';
|
|
6
|
-
import {
|
|
7
|
-
FieldTransformerMap,
|
|
8
|
-
transformCacheObjectToFields,
|
|
9
|
-
transformFieldsToCacheObject,
|
|
10
|
-
} from './EntityFieldTransformationUtils';
|
|
11
6
|
|
|
12
7
|
export enum CacheStatus {
|
|
13
8
|
HIT,
|
|
@@ -15,10 +10,10 @@ export enum CacheStatus {
|
|
|
15
10
|
NEGATIVE,
|
|
16
11
|
}
|
|
17
12
|
|
|
18
|
-
export type CacheLoadResult =
|
|
13
|
+
export type CacheLoadResult<TFields> =
|
|
19
14
|
| {
|
|
20
15
|
status: CacheStatus.HIT;
|
|
21
|
-
item: Readonly<
|
|
16
|
+
item: Readonly<TFields>;
|
|
22
17
|
}
|
|
23
18
|
| {
|
|
24
19
|
status: CacheStatus.MISS;
|
|
@@ -32,14 +27,10 @@ export type CacheLoadResult =
|
|
|
32
27
|
* {@link EntityCacheAdapter} within the {@link EntityDataManager}.
|
|
33
28
|
*/
|
|
34
29
|
export default class ReadThroughEntityCache<TFields> {
|
|
35
|
-
private readonly fieldTransformerMap: FieldTransformerMap;
|
|
36
|
-
|
|
37
30
|
constructor(
|
|
38
31
|
private readonly entityConfiguration: EntityConfiguration<TFields>,
|
|
39
32
|
private readonly entityCacheAdapter: EntityCacheAdapter<TFields>
|
|
40
|
-
) {
|
|
41
|
-
this.fieldTransformerMap = entityCacheAdapter.getFieldTransformerMap();
|
|
42
|
-
}
|
|
33
|
+
) {}
|
|
43
34
|
|
|
44
35
|
private isFieldCacheable<N extends keyof TFields>(fieldName: N): boolean {
|
|
45
36
|
return this.entityConfiguration.cacheableKeys.has(fieldName);
|
|
@@ -91,13 +82,7 @@ export default class ReadThroughEntityCache<TFields> {
|
|
|
91
82
|
const results: Map<NonNullable<TFields[N]>, readonly Readonly<TFields>[]> = new Map();
|
|
92
83
|
cacheLoadResults.forEach((cacheLoadResult, fieldValue) => {
|
|
93
84
|
if (cacheLoadResult.status === CacheStatus.HIT) {
|
|
94
|
-
results.set(fieldValue, [
|
|
95
|
-
transformCacheObjectToFields(
|
|
96
|
-
this.entityConfiguration,
|
|
97
|
-
this.fieldTransformerMap,
|
|
98
|
-
cacheLoadResult.item
|
|
99
|
-
),
|
|
100
|
-
]);
|
|
85
|
+
results.set(fieldValue, [cacheLoadResult.item]);
|
|
101
86
|
}
|
|
102
87
|
});
|
|
103
88
|
|
|
@@ -110,7 +95,7 @@ export default class ReadThroughEntityCache<TFields> {
|
|
|
110
95
|
return !objectsFromFulfillerForFv || objectsFromFulfillerForFv.length === 0;
|
|
111
96
|
});
|
|
112
97
|
|
|
113
|
-
const objectsToCache: Map<NonNullable<TFields[N]>,
|
|
98
|
+
const objectsToCache: Map<NonNullable<TFields[N]>, Readonly<TFields>> = new Map();
|
|
114
99
|
for (const [fieldValue, objects] of dbFetchResults.entries()) {
|
|
115
100
|
if (objects.length > 1) {
|
|
116
101
|
// multiple objects received for what was supposed to be a unique query, don't add to return map nor cache
|
|
@@ -123,14 +108,7 @@ export default class ReadThroughEntityCache<TFields> {
|
|
|
123
108
|
}
|
|
124
109
|
const uniqueObject = objects[0];
|
|
125
110
|
if (uniqueObject) {
|
|
126
|
-
objectsToCache.set(
|
|
127
|
-
fieldValue,
|
|
128
|
-
transformFieldsToCacheObject(
|
|
129
|
-
this.entityConfiguration,
|
|
130
|
-
this.fieldTransformerMap,
|
|
131
|
-
uniqueObject
|
|
132
|
-
)
|
|
133
|
-
);
|
|
111
|
+
objectsToCache.set(fieldValue, uniqueObject);
|
|
134
112
|
results.set(fieldValue, [uniqueObject]);
|
|
135
113
|
}
|
|
136
114
|
}
|
|
@@ -40,7 +40,6 @@ describe(ReadThroughEntityCache, () => {
|
|
|
40
40
|
describe('readManyThroughAsync', () => {
|
|
41
41
|
it('fetches from DB upon cache miss and caches the result', async () => {
|
|
42
42
|
const cacheAdapterMock = mock<EntityCacheAdapter<BlahFields>>();
|
|
43
|
-
when(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
44
43
|
const cacheAdapter = instance(cacheAdapterMock);
|
|
45
44
|
const entityCache = new ReadThroughEntityCache(makeEntityConfiguration(true), cacheAdapter);
|
|
46
45
|
const fetcher = createIdFetcher(['wat', 'who']);
|
|
@@ -77,7 +76,6 @@ describe(ReadThroughEntityCache, () => {
|
|
|
77
76
|
|
|
78
77
|
it('does not fetch from the DB or cache results when all cache fetches are hits', async () => {
|
|
79
78
|
const cacheAdapterMock = mock<EntityCacheAdapter<BlahFields>>();
|
|
80
|
-
when(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
81
79
|
const cacheAdapter = instance(cacheAdapterMock);
|
|
82
80
|
const entityCache = new ReadThroughEntityCache(makeEntityConfiguration(true), cacheAdapter);
|
|
83
81
|
const fetcher = createIdFetcher(['wat', 'who']);
|
|
@@ -114,7 +112,6 @@ describe(ReadThroughEntityCache, () => {
|
|
|
114
112
|
|
|
115
113
|
it('negatively caches db misses', async () => {
|
|
116
114
|
const cacheAdapterMock = mock<EntityCacheAdapter<BlahFields>>();
|
|
117
|
-
when(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
118
115
|
const cacheAdapter = instance(cacheAdapterMock);
|
|
119
116
|
const entityCache = new ReadThroughEntityCache(makeEntityConfiguration(true), cacheAdapter);
|
|
120
117
|
|
|
@@ -135,7 +132,6 @@ describe(ReadThroughEntityCache, () => {
|
|
|
135
132
|
|
|
136
133
|
it('does not return or fetch negatively cached results from DB', async () => {
|
|
137
134
|
const cacheAdapterMock = mock<EntityCacheAdapter<BlahFields>>();
|
|
138
|
-
when(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
139
135
|
const cacheAdapter = instance(cacheAdapterMock);
|
|
140
136
|
const entityCache = new ReadThroughEntityCache(makeEntityConfiguration(true), cacheAdapter);
|
|
141
137
|
const fetcher = createIdFetcher([]);
|
|
@@ -153,7 +149,6 @@ describe(ReadThroughEntityCache, () => {
|
|
|
153
149
|
|
|
154
150
|
it('does a mix and match of hit, miss, and negative', async () => {
|
|
155
151
|
const cacheAdapterMock = mock<EntityCacheAdapter<BlahFields>>();
|
|
156
|
-
when(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
157
152
|
const cacheAdapter = instance(cacheAdapterMock);
|
|
158
153
|
const entityCache = new ReadThroughEntityCache(makeEntityConfiguration(true), cacheAdapter);
|
|
159
154
|
const fetcher = createIdFetcher(['wat', 'who', 'why']);
|
|
@@ -189,7 +184,6 @@ describe(ReadThroughEntityCache, () => {
|
|
|
189
184
|
|
|
190
185
|
it('does not call into cache for field that is not cacheable', async () => {
|
|
191
186
|
const cacheAdapterMock = mock<EntityCacheAdapter<BlahFields>>();
|
|
192
|
-
when(cacheAdapterMock.getFieldTransformerMap()).thenReturn(new Map());
|
|
193
187
|
const cacheAdapter = instance(cacheAdapterMock);
|
|
194
188
|
const entityCache = new ReadThroughEntityCache(makeEntityConfiguration(false), cacheAdapter);
|
|
195
189
|
const fetcher = createIdFetcher(['wat']);
|
|
@@ -197,44 +191,6 @@ describe(ReadThroughEntityCache, () => {
|
|
|
197
191
|
verify(cacheAdapterMock.loadManyAsync('id', anything())).never();
|
|
198
192
|
expect(result).toEqual(new Map([['wat', [{ id: 'wat' }]]]));
|
|
199
193
|
});
|
|
200
|
-
|
|
201
|
-
it('transforms fields for cache storage', async () => {
|
|
202
|
-
const cacheAdapterMock = mock<EntityCacheAdapter<BlahFields>>();
|
|
203
|
-
when(cacheAdapterMock.getFieldTransformerMap()).thenReturn(
|
|
204
|
-
new Map([
|
|
205
|
-
[
|
|
206
|
-
UUIDField.name,
|
|
207
|
-
{
|
|
208
|
-
read: (val) => val.split('-')[0],
|
|
209
|
-
write: (val) => `${val}-in-cache`,
|
|
210
|
-
},
|
|
211
|
-
],
|
|
212
|
-
])
|
|
213
|
-
);
|
|
214
|
-
const cacheAdapter = instance(cacheAdapterMock);
|
|
215
|
-
const entityCache = new ReadThroughEntityCache(makeEntityConfiguration(true), cacheAdapter);
|
|
216
|
-
const fetcher = createIdFetcher(['wat', 'who']);
|
|
217
|
-
|
|
218
|
-
when(cacheAdapterMock.loadManyAsync('id', deepEqual(['wat', 'who']))).thenResolve(
|
|
219
|
-
new Map([
|
|
220
|
-
['wat', { status: CacheStatus.MISS }],
|
|
221
|
-
['who', { status: CacheStatus.HIT, item: { id: 'who-in-cache' } }],
|
|
222
|
-
])
|
|
223
|
-
);
|
|
224
|
-
|
|
225
|
-
const result = await entityCache.readManyThroughAsync('id', ['wat', 'who'], fetcher);
|
|
226
|
-
|
|
227
|
-
verify(cacheAdapterMock.loadManyAsync('id', deepEqual(['wat', 'who']))).once();
|
|
228
|
-
verify(
|
|
229
|
-
cacheAdapterMock.cacheManyAsync('id', deepEqual(new Map([['wat', { id: 'wat-in-cache' }]])))
|
|
230
|
-
).once();
|
|
231
|
-
expect(result).toEqual(
|
|
232
|
-
new Map([
|
|
233
|
-
['wat', [{ id: 'wat' }]],
|
|
234
|
-
['who', [{ id: 'who' }]],
|
|
235
|
-
])
|
|
236
|
-
);
|
|
237
|
-
});
|
|
238
194
|
});
|
|
239
195
|
|
|
240
196
|
describe('invalidateManyAsync', () => {
|
|
@@ -3,7 +3,6 @@ import invariant from 'invariant';
|
|
|
3
3
|
import EntityCacheAdapter from '../../EntityCacheAdapter';
|
|
4
4
|
import EntityConfiguration from '../../EntityConfiguration';
|
|
5
5
|
import IEntityCacheAdapterProvider from '../../IEntityCacheAdapterProvider';
|
|
6
|
-
import { FieldTransformerMap } from '../../internal/EntityFieldTransformationUtils';
|
|
7
6
|
import { CacheStatus, CacheLoadResult } from '../../internal/ReadThroughEntityCache';
|
|
8
7
|
|
|
9
8
|
export class NoCacheStubCacheAdapterProvider implements IEntityCacheAdapterProvider {
|
|
@@ -15,15 +14,11 @@ export class NoCacheStubCacheAdapterProvider implements IEntityCacheAdapterProvi
|
|
|
15
14
|
}
|
|
16
15
|
|
|
17
16
|
export class NoCacheStubCacheAdapter<TFields> extends EntityCacheAdapter<TFields> {
|
|
18
|
-
public getFieldTransformerMap(): FieldTransformerMap {
|
|
19
|
-
return new Map();
|
|
20
|
-
}
|
|
21
|
-
|
|
22
17
|
public async loadManyAsync<N extends keyof TFields>(
|
|
23
18
|
_fieldName: N,
|
|
24
19
|
fieldValues: readonly NonNullable<TFields[N]>[]
|
|
25
|
-
): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult
|
|
26
|
-
return fieldValues.reduce((acc: Map<NonNullable<TFields[N]>, CacheLoadResult
|
|
20
|
+
): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>> {
|
|
21
|
+
return fieldValues.reduce((acc: Map<NonNullable<TFields[N]>, CacheLoadResult<TFields>>, v) => {
|
|
27
22
|
acc.set(v, {
|
|
28
23
|
status: CacheStatus.MISS,
|
|
29
24
|
});
|
|
@@ -33,7 +28,7 @@ export class NoCacheStubCacheAdapter<TFields> extends EntityCacheAdapter<TFields
|
|
|
33
28
|
|
|
34
29
|
public async cacheManyAsync<N extends keyof TFields>(
|
|
35
30
|
_fieldName: N,
|
|
36
|
-
_objectMap: ReadonlyMap<NonNullable<TFields[N]>,
|
|
31
|
+
_objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>
|
|
37
32
|
): Promise<void> {}
|
|
38
33
|
|
|
39
34
|
public async cacheDBMissesAsync<N extends keyof TFields>(
|
|
@@ -53,27 +48,26 @@ export class InMemoryFullCacheStubCacheAdapterProvider implements IEntityCacheAd
|
|
|
53
48
|
getCacheAdapter<TFields>(
|
|
54
49
|
entityConfiguration: EntityConfiguration<TFields>
|
|
55
50
|
): EntityCacheAdapter<TFields> {
|
|
56
|
-
return new InMemoryFullCacheStubCacheAdapter(
|
|
51
|
+
return new InMemoryFullCacheStubCacheAdapter(
|
|
52
|
+
entityConfiguration,
|
|
53
|
+
this.cache as Map<string, Readonly<TFields>>
|
|
54
|
+
);
|
|
57
55
|
}
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
export class InMemoryFullCacheStubCacheAdapter<TFields> extends EntityCacheAdapter<TFields> {
|
|
61
59
|
constructor(
|
|
62
60
|
entityConfiguration: EntityConfiguration<TFields>,
|
|
63
|
-
readonly cache: Map<string, Readonly<
|
|
61
|
+
readonly cache: Map<string, Readonly<TFields>>
|
|
64
62
|
) {
|
|
65
63
|
super(entityConfiguration);
|
|
66
64
|
}
|
|
67
65
|
|
|
68
|
-
public getFieldTransformerMap(): FieldTransformerMap {
|
|
69
|
-
return new Map();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
66
|
public async loadManyAsync<N extends keyof TFields>(
|
|
73
67
|
fieldName: N,
|
|
74
68
|
fieldValues: readonly NonNullable<TFields[N]>[]
|
|
75
|
-
): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult
|
|
76
|
-
const results = new Map<NonNullable<TFields[N]>, CacheLoadResult
|
|
69
|
+
): Promise<ReadonlyMap<NonNullable<TFields[N]>, CacheLoadResult<TFields>>> {
|
|
70
|
+
const results = new Map<NonNullable<TFields[N]>, CacheLoadResult<TFields>>();
|
|
77
71
|
fieldValues.forEach((fieldValue) => {
|
|
78
72
|
const cacheKey = this.createCacheKey(fieldName, fieldValue);
|
|
79
73
|
if (!this.cache.has(cacheKey)) {
|
|
@@ -94,7 +88,7 @@ export class InMemoryFullCacheStubCacheAdapter<TFields> extends EntityCacheAdapt
|
|
|
94
88
|
|
|
95
89
|
public async cacheManyAsync<N extends keyof TFields>(
|
|
96
90
|
fieldName: N,
|
|
97
|
-
objectMap: ReadonlyMap<NonNullable<TFields[N]>,
|
|
91
|
+
objectMap: ReadonlyMap<NonNullable<TFields[N]>, Readonly<TFields>>
|
|
98
92
|
): Promise<void> {
|
|
99
93
|
objectMap.forEach((obj, fieldValue) => {
|
|
100
94
|
const cacheKey = this.createCacheKey(fieldName, fieldValue);
|