@expo/entity-secondary-cache-redis 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.
|
@@ -6,7 +6,6 @@ import { GenericRedisCacheContext } from '@expo/entity-cache-adapter-redis';
|
|
|
6
6
|
* a call to {@link EntityLoader.loadManyByFieldEqualityConjunctionAsync} is guaranteed to return at most one entity.
|
|
7
7
|
*/
|
|
8
8
|
export default class RedisSecondaryEntityCache<TFields, TLoadParams> implements ISecondaryEntityCache<TFields, TLoadParams> {
|
|
9
|
-
private readonly entityConfiguration;
|
|
10
9
|
private readonly constructRedisKey;
|
|
11
10
|
private readonly genericRedisCacher;
|
|
12
11
|
constructor(entityConfiguration: EntityConfiguration<TFields>, genericRedisCacheContext: GenericRedisCacheContext, constructRedisKey: (params: Readonly<TLoadParams>) => string);
|
|
@@ -13,9 +13,8 @@ const invariant_1 = __importDefault(require("invariant"));
|
|
|
13
13
|
*/
|
|
14
14
|
class RedisSecondaryEntityCache {
|
|
15
15
|
constructor(entityConfiguration, genericRedisCacheContext, constructRedisKey) {
|
|
16
|
-
this.entityConfiguration = entityConfiguration;
|
|
17
16
|
this.constructRedisKey = constructRedisKey;
|
|
18
|
-
this.genericRedisCacher = new entity_cache_adapter_redis_1.GenericRedisCacher(genericRedisCacheContext);
|
|
17
|
+
this.genericRedisCacher = new entity_cache_adapter_redis_1.GenericRedisCacher(genericRedisCacheContext, entityConfiguration);
|
|
19
18
|
}
|
|
20
19
|
/**
|
|
21
20
|
* Read-through cache function. Steps:
|
|
@@ -42,7 +41,7 @@ class RedisSecondaryEntityCache {
|
|
|
42
41
|
if (cacheLoadResult.status === entity_1.CacheStatus.HIT) {
|
|
43
42
|
const loadParams = redisKeyToLoadParamsMap.get(redisKey);
|
|
44
43
|
(0, invariant_1.default)(loadParams !== undefined, 'load params should be in redis key map');
|
|
45
|
-
results.set(loadParams,
|
|
44
|
+
results.set(loadParams, cacheLoadResult.item);
|
|
46
45
|
}
|
|
47
46
|
});
|
|
48
47
|
// fetch any misses from DB, add DB objects to results, cache DB results, inform cache of any missing DB results
|
|
@@ -63,7 +62,7 @@ class RedisSecondaryEntityCache {
|
|
|
63
62
|
const objectsToCache = new Map();
|
|
64
63
|
for (const [loadParams, object] of fetchResults.entries()) {
|
|
65
64
|
if (object) {
|
|
66
|
-
objectsToCache.set(this.constructRedisKey(loadParams),
|
|
65
|
+
objectsToCache.set(this.constructRedisKey(loadParams), object);
|
|
67
66
|
results.set(loadParams, object);
|
|
68
67
|
}
|
|
69
68
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RedisSecondaryEntityCache.js","sourceRoot":"","sources":["../src/RedisSecondaryEntityCache.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"RedisSecondaryEntityCache.js","sourceRoot":"","sources":["../src/RedisSecondaryEntityCache.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/entity-secondary-cache-redis",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "Redis secondary cache for @expo/entity",
|
|
5
5
|
"files": [
|
|
6
6
|
"build",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"ioredis": "^4.17.3"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@expo/entity": "^0.
|
|
38
|
-
"@expo/entity-cache-adapter-redis": "^0.
|
|
37
|
+
"@expo/entity": "^0.23.0",
|
|
38
|
+
"@expo/entity-cache-adapter-redis": "^0.23.0",
|
|
39
39
|
"nullthrows": "^1.1.1"
|
|
40
40
|
}
|
|
41
41
|
}
|
|
@@ -3,15 +3,9 @@ import {
|
|
|
3
3
|
EntityConfiguration,
|
|
4
4
|
filterMap,
|
|
5
5
|
ISecondaryEntityCache,
|
|
6
|
-
transformCacheObjectToFields,
|
|
7
|
-
transformFieldsToCacheObject,
|
|
8
6
|
zipToMap,
|
|
9
7
|
} from '@expo/entity';
|
|
10
|
-
import {
|
|
11
|
-
GenericRedisCacheContext,
|
|
12
|
-
GenericRedisCacher,
|
|
13
|
-
redisTransformerMap,
|
|
14
|
-
} from '@expo/entity-cache-adapter-redis';
|
|
8
|
+
import { GenericRedisCacheContext, GenericRedisCacher } from '@expo/entity-cache-adapter-redis';
|
|
15
9
|
import invariant from 'invariant';
|
|
16
10
|
|
|
17
11
|
/**
|
|
@@ -22,14 +16,14 @@ import invariant from 'invariant';
|
|
|
22
16
|
export default class RedisSecondaryEntityCache<TFields, TLoadParams>
|
|
23
17
|
implements ISecondaryEntityCache<TFields, TLoadParams>
|
|
24
18
|
{
|
|
25
|
-
private readonly genericRedisCacher: GenericRedisCacher
|
|
19
|
+
private readonly genericRedisCacher: GenericRedisCacher<TFields>;
|
|
26
20
|
|
|
27
21
|
constructor(
|
|
28
|
-
|
|
22
|
+
entityConfiguration: EntityConfiguration<TFields>,
|
|
29
23
|
genericRedisCacheContext: GenericRedisCacheContext,
|
|
30
24
|
private readonly constructRedisKey: (params: Readonly<TLoadParams>) => string
|
|
31
25
|
) {
|
|
32
|
-
this.genericRedisCacher = new GenericRedisCacher(genericRedisCacheContext);
|
|
26
|
+
this.genericRedisCacher = new GenericRedisCacher(genericRedisCacheContext, entityConfiguration);
|
|
33
27
|
}
|
|
34
28
|
|
|
35
29
|
/**
|
|
@@ -74,14 +68,7 @@ export default class RedisSecondaryEntityCache<TFields, TLoadParams>
|
|
|
74
68
|
if (cacheLoadResult.status === CacheStatus.HIT) {
|
|
75
69
|
const loadParams = redisKeyToLoadParamsMap.get(redisKey);
|
|
76
70
|
invariant(loadParams !== undefined, 'load params should be in redis key map');
|
|
77
|
-
results.set(
|
|
78
|
-
loadParams,
|
|
79
|
-
transformCacheObjectToFields(
|
|
80
|
-
this.entityConfiguration,
|
|
81
|
-
redisTransformerMap,
|
|
82
|
-
cacheLoadResult.item
|
|
83
|
-
)
|
|
84
|
-
);
|
|
71
|
+
results.set(loadParams, cacheLoadResult.item);
|
|
85
72
|
}
|
|
86
73
|
});
|
|
87
74
|
|
|
@@ -103,13 +90,10 @@ export default class RedisSecondaryEntityCache<TFields, TLoadParams>
|
|
|
103
90
|
results.set(fetchMiss, null);
|
|
104
91
|
}
|
|
105
92
|
|
|
106
|
-
const objectsToCache: Map<string,
|
|
93
|
+
const objectsToCache: Map<string, Readonly<TFields>> = new Map();
|
|
107
94
|
for (const [loadParams, object] of fetchResults.entries()) {
|
|
108
95
|
if (object) {
|
|
109
|
-
objectsToCache.set(
|
|
110
|
-
this.constructRedisKey(loadParams),
|
|
111
|
-
transformFieldsToCacheObject(this.entityConfiguration, redisTransformerMap, object)
|
|
112
|
-
);
|
|
96
|
+
objectsToCache.set(this.constructRedisKey(loadParams), object);
|
|
113
97
|
results.set(loadParams, object);
|
|
114
98
|
}
|
|
115
99
|
}
|