@expo/entity-cache-adapter-redis 0.33.0 → 0.34.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/__integration-tests__/BatchedRedisCacheAdapter-integration-test.js +12 -8
- package/build/__integration-tests__/BatchedRedisCacheAdapter-integration-test.js.map +1 -1
- package/build/__integration-tests__/GenericRedisCacher-full-integration-test.js +17 -11
- package/build/__integration-tests__/GenericRedisCacher-full-integration-test.js.map +1 -1
- package/build/__integration-tests__/GenericRedisCacher-integration-test.js +2 -2
- package/build/__integration-tests__/GenericRedisCacher-integration-test.js.map +1 -1
- package/build/__integration-tests__/errors-test.js +3 -1
- package/build/__integration-tests__/errors-test.js.map +1 -1
- package/package.json +3 -3
- package/src/__integration-tests__/BatchedRedisCacheAdapter-integration-test.ts +36 -12
- package/src/__integration-tests__/GenericRedisCacher-full-integration-test.ts +50 -15
- package/src/__integration-tests__/GenericRedisCacher-integration-test.ts +8 -2
- package/src/__integration-tests__/errors-test.ts +6 -1
|
@@ -73,7 +73,7 @@ describe(GenericRedisCacher_1.default, () => {
|
|
|
73
73
|
const mgetSpy = jest.spyOn(redis, 'mget');
|
|
74
74
|
const genericCacher = viewerContext.entityCompanionProvider.getCompanionForEntity(RedisTestEntity_1.default)['tableDataCoordinator']['cacheAdapter']['genericCacher'];
|
|
75
75
|
const cacheKeyMaker = genericCacher['makeCacheKey'].bind(genericCacher);
|
|
76
|
-
const entity1Created = await RedisTestEntity_1.default.creator(viewerContext)
|
|
76
|
+
const entity1Created = await RedisTestEntity_1.default.creator(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
77
77
|
.setField('name', 'blah')
|
|
78
78
|
.enforceCreateAsync();
|
|
79
79
|
// loading an entity should put it in cache. load by multiple requests and multiple fields in same tick to ensure batch works
|
|
@@ -82,9 +82,13 @@ describe(GenericRedisCacher_1.default, () => {
|
|
|
82
82
|
const viewerContext2 = new entity_1.ViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
83
83
|
const viewerContext3 = new entity_1.ViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
84
84
|
const [entity1, entity2, entity3] = await Promise.all([
|
|
85
|
-
RedisTestEntity_1.default.loader(viewerContext1
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
RedisTestEntity_1.default.loader(viewerContext1, viewerContext1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
86
|
+
.enforcing()
|
|
87
|
+
.loadByIDAsync(entity1Created.getID()),
|
|
88
|
+
RedisTestEntity_1.default.loader(viewerContext2, viewerContext2.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
89
|
+
.enforcing()
|
|
90
|
+
.loadByIDAsync(entity1Created.getID()),
|
|
91
|
+
RedisTestEntity_1.default.loader(viewerContext3, viewerContext3.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
88
92
|
.enforcing()
|
|
89
93
|
.loadByFieldEqualingAsync('name', entity1Created.getField('name')),
|
|
90
94
|
]);
|
|
@@ -100,22 +104,22 @@ describe(GenericRedisCacher_1.default, () => {
|
|
|
100
104
|
name: 'blah',
|
|
101
105
|
});
|
|
102
106
|
const cacheKeyEntity1NameField = cacheKeyMaker('name', entity1Created.getField('name'));
|
|
103
|
-
await RedisTestEntity_1.default.loader(viewerContext)
|
|
107
|
+
await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
104
108
|
.enforcing()
|
|
105
109
|
.loadByFieldEqualingAsync('name', entity1Created.getField('name'));
|
|
106
110
|
await expect(redis.get(cacheKeyEntity1NameField)).resolves.toEqual(cachedJSON);
|
|
107
111
|
// simulate non existent db fetch, should write negative result ('') to cache
|
|
108
112
|
const nonExistentId = (0, uuid_1.v4)();
|
|
109
|
-
const entityNonExistentResult = await RedisTestEntity_1.default.loader(viewerContext).loadByIDAsync(nonExistentId);
|
|
113
|
+
const entityNonExistentResult = await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')).loadByIDAsync(nonExistentId);
|
|
110
114
|
expect(entityNonExistentResult.ok).toBe(false);
|
|
111
115
|
const cacheKeyNonExistent = cacheKeyMaker('id', nonExistentId);
|
|
112
116
|
const nonExistentCachedValue = await redis.get(cacheKeyNonExistent);
|
|
113
117
|
expect(nonExistentCachedValue).toEqual('');
|
|
114
118
|
// load again through entities framework to ensure it reads negative result
|
|
115
|
-
const entityNonExistentResult2 = await RedisTestEntity_1.default.loader(viewerContext).loadByIDAsync(nonExistentId);
|
|
119
|
+
const entityNonExistentResult2 = await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')).loadByIDAsync(nonExistentId);
|
|
116
120
|
expect(entityNonExistentResult2.ok).toBe(false);
|
|
117
121
|
// invalidate from cache to ensure it invalidates correctly in both caches
|
|
118
|
-
await RedisTestEntity_1.default.loader(viewerContext).invalidateFieldsAsync(entity1.getAllFields());
|
|
122
|
+
await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')).invalidateFieldsAsync(entity1.getAllFields());
|
|
119
123
|
await expect(redis.get(cacheKeyEntity1)).resolves.toBeNull();
|
|
120
124
|
await expect(redis.get(cacheKeyEntity1NameField)).resolves.toBeNull();
|
|
121
125
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchedRedisCacheAdapter-integration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/BatchedRedisCacheAdapter-integration-test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"BatchedRedisCacheAdapter-integration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/BatchedRedisCacheAdapter-integration-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,11 +38,11 @@ describe(GenericRedisCacher_1.default, () => {
|
|
|
38
38
|
const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
39
39
|
const genericCacher = viewerContext.entityCompanionProvider.getCompanionForEntity(RedisTestEntity_1.default)['tableDataCoordinator']['cacheAdapter']['genericCacher'];
|
|
40
40
|
const cacheKeyMaker = genericCacher['makeCacheKey'].bind(genericCacher);
|
|
41
|
-
const entity1Created = await RedisTestEntity_1.default.creator(viewerContext)
|
|
41
|
+
const entity1Created = await RedisTestEntity_1.default.creator(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
42
42
|
.setField('name', 'blah')
|
|
43
43
|
.enforceCreateAsync();
|
|
44
44
|
// loading an entity should put it in cache
|
|
45
|
-
const entity1 = await RedisTestEntity_1.default.loader(viewerContext)
|
|
45
|
+
const entity1 = await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
46
46
|
.enforcing()
|
|
47
47
|
.loadByIDAsync(entity1Created.getID());
|
|
48
48
|
const cachedJSON = await genericRedisCacheContext.redisClient.get(cacheKeyMaker('id', entity1.getID()));
|
|
@@ -53,42 +53,48 @@ describe(GenericRedisCacher_1.default, () => {
|
|
|
53
53
|
});
|
|
54
54
|
// simulate non existent db fetch, should write negative result ('') to cache
|
|
55
55
|
const nonExistentId = (0, uuid_1.v4)();
|
|
56
|
-
const entityNonExistentResult = await RedisTestEntity_1.default.loader(viewerContext).loadByIDAsync(nonExistentId);
|
|
56
|
+
const entityNonExistentResult = await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')).loadByIDAsync(nonExistentId);
|
|
57
57
|
expect(entityNonExistentResult.ok).toBe(false);
|
|
58
58
|
const nonExistentCachedValue = await genericRedisCacheContext.redisClient.get(cacheKeyMaker('id', nonExistentId));
|
|
59
59
|
expect(nonExistentCachedValue).toEqual('');
|
|
60
60
|
// load again through entities framework to ensure it reads negative result
|
|
61
|
-
const entityNonExistentResult2 = await RedisTestEntity_1.default.loader(viewerContext).loadByIDAsync(nonExistentId);
|
|
61
|
+
const entityNonExistentResult2 = await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')).loadByIDAsync(nonExistentId);
|
|
62
62
|
expect(entityNonExistentResult2.ok).toBe(false);
|
|
63
63
|
// invalidate from cache to ensure it invalidates correctly
|
|
64
|
-
await RedisTestEntity_1.default.loader(viewerContext).invalidateFieldsAsync(entity1.getAllFields());
|
|
64
|
+
await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')).invalidateFieldsAsync(entity1.getAllFields());
|
|
65
65
|
const cachedValueNull = await genericRedisCacheContext.redisClient.get(cacheKeyMaker('id', entity1.getID()));
|
|
66
66
|
expect(cachedValueNull).toBe(null);
|
|
67
67
|
});
|
|
68
68
|
it('caches and restores date fields', async () => {
|
|
69
69
|
const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
70
70
|
const date = new Date();
|
|
71
|
-
const entity1 = await (0, results_1.enforceAsyncResult)(RedisTestEntity_1.default.creator(viewerContext
|
|
71
|
+
const entity1 = await (0, results_1.enforceAsyncResult)(RedisTestEntity_1.default.creator(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
72
|
+
.setField('dateField', date)
|
|
73
|
+
.createAsync());
|
|
72
74
|
expect(entity1.getField('dateField')).toEqual(date);
|
|
73
|
-
const entity2 = await RedisTestEntity_1.default.loader(viewerContext)
|
|
75
|
+
const entity2 = await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
74
76
|
.enforcing()
|
|
75
77
|
.loadByIDAsync(entity1.getID());
|
|
76
78
|
expect(entity2.getField('dateField')).toEqual(date);
|
|
77
79
|
// simulate new request
|
|
78
80
|
const vc2 = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
79
|
-
const entity3 = await RedisTestEntity_1.default.loader(vc2
|
|
81
|
+
const entity3 = await RedisTestEntity_1.default.loader(vc2, vc2.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
82
|
+
.enforcing()
|
|
83
|
+
.loadByIDAsync(entity1.getID());
|
|
80
84
|
expect(entity3.getField('dateField')).toEqual(date);
|
|
81
85
|
});
|
|
82
86
|
it('caches and restores empty string field keys', async () => {
|
|
83
87
|
const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
84
|
-
const entity1 = await (0, results_1.enforceAsyncResult)(RedisTestEntity_1.default.creator(viewerContext
|
|
85
|
-
|
|
88
|
+
const entity1 = await (0, results_1.enforceAsyncResult)(RedisTestEntity_1.default.creator(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
89
|
+
.setField('name', '')
|
|
90
|
+
.createAsync());
|
|
91
|
+
const entity2 = await RedisTestEntity_1.default.loader(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
86
92
|
.enforcing()
|
|
87
93
|
.loadByFieldEqualingAsync('name', '');
|
|
88
94
|
expect(entity2?.getID()).toEqual(entity1.getID());
|
|
89
95
|
// simulate new request
|
|
90
96
|
const vc2 = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
91
|
-
const entity3 = await RedisTestEntity_1.default.loader(vc2)
|
|
97
|
+
const entity3 = await RedisTestEntity_1.default.loader(vc2, vc2.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
92
98
|
.enforcing()
|
|
93
99
|
.loadByFieldEqualingAsync('name', '');
|
|
94
100
|
expect(entity3?.getID()).toEqual(entity1.getID());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericRedisCacher-full-integration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/GenericRedisCacher-full-integration-test.ts"],"names":[],"mappings":";;;;;AAAA,yCAA6C;AAC7C,2CAAmD;AACnD,sDAA4B;AAC5B,6BAA0B;AAC1B,+BAAoC;AAEpC,+EAAqF;AACrF,sFAA8D;AAC9D,yIAAsI;AAEtI,MAAM,iBAAkB,SAAQ,sBAAa;CAAG;AAEhD,QAAQ,CAAC,4BAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,wBAAkD,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,wBAAwB,GAAG;YACzB,WAAW,EAAE,IAAI,iBAAK,CAAC,IAAI,SAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YACrE,SAAS,CAAC,GAAG,KAAe;gBAC1B,MAAM,SAAS,GAAG,GAAG,CAAC;gBACtB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,SAAS,EAAE,CAAC,CAChE,CAAC;gBACF,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YACD,cAAc,EAAE,OAAO;YACvB,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,GAAG,EAAE,aAAa;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAO,wBAAwB,CAAC,WAAqB,CAAC,OAAO,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,IAAI,EAAE;QACjB,wBAAwB,CAAC,WAAqB,CAAC,UAAU,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,aAAa,GAAG,IAAI,iBAAiB,CACzC,IAAA,qGAAiD,EAAC,wBAAwB,CAAC,CAC5E,CAAC;QACF,MAAM,aAAa,GACjB,aAAa,CAAC,uBAAuB,CAAC,qBAAqB,CAAC,yBAAe,CAAC,CAC1E,sBAAsB,CACvB,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;QACrC,MAAM,aAAa,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAExE,MAAM,cAAc,GAAG,MAAM,yBAAe,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"GenericRedisCacher-full-integration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/GenericRedisCacher-full-integration-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,7 @@ describe(GenericRedisCacher_1.default, () => {
|
|
|
59
59
|
const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
60
60
|
const genericRedisCacher = new GenericRedisCacher_1.default(genericRedisCacheContext, RedisTestEntity_1.redisTestEntityConfiguration);
|
|
61
61
|
const date = new Date();
|
|
62
|
-
const entity1Created = await RedisTestEntity_1.default.creator(viewerContext)
|
|
62
|
+
const entity1Created = await RedisTestEntity_1.default.creator(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
63
63
|
.setField('name', 'blah')
|
|
64
64
|
.setField('dateField', date)
|
|
65
65
|
.enforceCreateAsync();
|
|
@@ -94,7 +94,7 @@ describe(GenericRedisCacher_1.default, () => {
|
|
|
94
94
|
const viewerContext = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
95
95
|
const genericRedisCacher = new GenericRedisCacher_1.default(genericRedisCacheContext, RedisTestEntity_1.redisTestEntityConfiguration);
|
|
96
96
|
const date = new Date();
|
|
97
|
-
const entity1Created = await RedisTestEntity_1.default.creator(viewerContext)
|
|
97
|
+
const entity1Created = await RedisTestEntity_1.default.creator(viewerContext, viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
98
98
|
.setField('name', 'blah')
|
|
99
99
|
.setField('dateField', date)
|
|
100
100
|
.enforceCreateAsync();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenericRedisCacher-integration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/GenericRedisCacher-integration-test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA0D;AAC1D,sDAA4B;AAC5B,6BAA0B;AAE1B,+EAAqF;AACrF,mFAGyC;AACzC,yIAAsI;AAEtI,MAAM,iBAAkB,SAAQ,sBAAa;CAAG;AAEhD,QAAQ,CAAC,4BAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,wBAAkD,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,wBAAwB,GAAG;YACzB,WAAW,EAAE,IAAI,iBAAK,CAAC,IAAI,SAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;YACrE,SAAS,CAAC,GAAG,KAAe;gBAC1B,MAAM,SAAS,GAAG,GAAG,CAAC;gBACtB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,SAAS,EAAE,CAAC,CAChE,CAAC;gBACF,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YACD,cAAc,EAAE,OAAO;YACvB,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,GAAG,EAAE,aAAa;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAO,wBAAwB,CAAC,WAAqB,CAAC,OAAO,EAAE,CAAC;IAClE,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,IAAI,EAAE;QACjB,wBAAwB,CAAC,WAAqB,CAAC,UAAU,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QACxD,MAAM,aAAa,GAAG,IAAI,iBAAiB,CACzC,IAAA,qGAAiD,EAAC,wBAAwB,CAAC,CAC5E,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAI,4BAAkB,CAC/C,wBAAwB,EACxB,8CAA4B,CAC7B,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,MAAM,cAAc,GAAG,MAAM,yBAAe,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"GenericRedisCacher-integration-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/GenericRedisCacher-integration-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,9 @@ describe(GenericRedisCacher_1.default, () => {
|
|
|
33
33
|
it('throws when redis is disconnected', async () => {
|
|
34
34
|
redisClient.disconnect();
|
|
35
35
|
const vc1 = new TestViewerContext((0, createRedisIntegrationTestEntityCompanionProvider_1.createRedisIntegrationTestEntityCompanionProvider)(genericRedisCacheContext));
|
|
36
|
-
await expect(RedisTestEntity_1.default.creator(vc1
|
|
36
|
+
await expect(RedisTestEntity_1.default.creator(vc1, vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres'))
|
|
37
|
+
.setField('name', 'blah')
|
|
38
|
+
.enforceCreateAsync()).rejects.toThrow(entity_1.EntityCacheAdapterTransientError);
|
|
37
39
|
});
|
|
38
40
|
});
|
|
39
41
|
//# sourceMappingURL=errors-test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/errors-test.ts"],"names":[],"mappings":";;;;;AAAA,yCAA+E;AAC/E,sDAA4B;AAC5B,6BAA0B;AAE1B,+EAAqF;AACrF,sFAA8D;AAC9D,yIAAsI;AAEtI,MAAM,iBAAkB,SAAQ,sBAAa;CAAG;AAEhD,QAAQ,CAAC,4BAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,WAAW,GAAG,IAAI,iBAAK,CAAC,IAAI,SAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,IAAI,wBAAkD,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,wBAAwB,GAAG;YACzB,WAAW;YACX,SAAS,CAAC,GAAG,KAAe;gBAC1B,MAAM,SAAS,GAAG,GAAG,CAAC;gBACtB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,SAAS,EAAE,CAAC,CAChE,CAAC;gBACF,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YACD,cAAc,EAAE,OAAO;YACvB,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,GAAG,EAAE,aAAa;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,WAAW,CAAC,UAAU,EAAE,CAAC;QAEzB,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAC/B,IAAA,qGAAiD,EAAC,wBAAwB,CAAC,CAC5E,CAAC;QAEF,MAAM,MAAM,CACV,yBAAe,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"errors-test.js","sourceRoot":"","sources":["../../src/__integration-tests__/errors-test.ts"],"names":[],"mappings":";;;;;AAAA,yCAA+E;AAC/E,sDAA4B;AAC5B,6BAA0B;AAE1B,+EAAqF;AACrF,sFAA8D;AAC9D,yIAAsI;AAEtI,MAAM,iBAAkB,SAAQ,sBAAa;CAAG;AAEhD,QAAQ,CAAC,4BAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,WAAW,GAAG,IAAI,iBAAK,CAAC,IAAI,SAAG,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7E,IAAI,wBAAkD,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,wBAAwB,GAAG;YACzB,WAAW;YACX,SAAS,CAAC,GAAG,KAAe;gBAC1B,MAAM,SAAS,GAAG,GAAG,CAAC;gBACtB,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACtC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,SAAS,EAAE,CAAC,CAChE,CAAC;gBACF,OAAO,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC;YACD,cAAc,EAAE,OAAO;YACvB,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,GAAG,EAAE,aAAa;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,WAAW,CAAC,UAAU,EAAE,CAAC;QAEzB,MAAM,GAAG,GAAG,IAAI,iBAAiB,CAC/B,IAAA,qGAAiD,EAAC,wBAAwB,CAAC,CAC5E,CAAC;QAEF,MAAM,MAAM,CACV,yBAAe,CAAC,OAAO,CACrB,GAAG,EACH,GAAG,CAAC,uDAAuD,CAAC,UAAU,CAAC,CACxE;aACE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;aACxB,kBAAkB,EAAE,CACxB,CAAC,OAAO,CAAC,OAAO,CAAC,yCAAgC,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/entity-cache-adapter-redis",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"description": "Redis cache adapter for @expo/entity",
|
|
5
5
|
"files": [
|
|
6
6
|
"build",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"ioredis": ">=5"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@expo/entity": "^0.
|
|
34
|
+
"@expo/entity": "^0.34.0",
|
|
35
35
|
"ioredis": "^5.2.5"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "0fa6f554a27359aede6bd3f7d4578fadfda98bcb"
|
|
38
38
|
}
|
|
@@ -101,7 +101,10 @@ describe(GenericRedisCacher, () => {
|
|
|
101
101
|
]['cacheAdapter']['genericCacher'];
|
|
102
102
|
const cacheKeyMaker = genericCacher['makeCacheKey'].bind(genericCacher);
|
|
103
103
|
|
|
104
|
-
const entity1Created = await RedisTestEntity.creator(
|
|
104
|
+
const entity1Created = await RedisTestEntity.creator(
|
|
105
|
+
viewerContext,
|
|
106
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
107
|
+
)
|
|
105
108
|
.setField('name', 'blah')
|
|
106
109
|
.enforceCreateAsync();
|
|
107
110
|
|
|
@@ -117,9 +120,22 @@ describe(GenericRedisCacher, () => {
|
|
|
117
120
|
createRedisIntegrationTestEntityCompanionProvider(genericRedisCacheContext)
|
|
118
121
|
);
|
|
119
122
|
const [entity1, entity2, entity3] = await Promise.all([
|
|
120
|
-
RedisTestEntity.loader(
|
|
121
|
-
|
|
122
|
-
|
|
123
|
+
RedisTestEntity.loader(
|
|
124
|
+
viewerContext1,
|
|
125
|
+
viewerContext1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
126
|
+
)
|
|
127
|
+
.enforcing()
|
|
128
|
+
.loadByIDAsync(entity1Created.getID()),
|
|
129
|
+
RedisTestEntity.loader(
|
|
130
|
+
viewerContext2,
|
|
131
|
+
viewerContext2.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
132
|
+
)
|
|
133
|
+
.enforcing()
|
|
134
|
+
.loadByIDAsync(entity1Created.getID()),
|
|
135
|
+
RedisTestEntity.loader(
|
|
136
|
+
viewerContext3,
|
|
137
|
+
viewerContext3.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
138
|
+
)
|
|
123
139
|
.enforcing()
|
|
124
140
|
.loadByFieldEqualingAsync('name', entity1Created.getField('name')),
|
|
125
141
|
]);
|
|
@@ -138,28 +154,36 @@ describe(GenericRedisCacher, () => {
|
|
|
138
154
|
});
|
|
139
155
|
|
|
140
156
|
const cacheKeyEntity1NameField = cacheKeyMaker('name', entity1Created.getField('name'));
|
|
141
|
-
await RedisTestEntity.loader(
|
|
157
|
+
await RedisTestEntity.loader(
|
|
158
|
+
viewerContext,
|
|
159
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
160
|
+
)
|
|
142
161
|
.enforcing()
|
|
143
162
|
.loadByFieldEqualingAsync('name', entity1Created.getField('name'));
|
|
144
163
|
await expect(redis.get(cacheKeyEntity1NameField)).resolves.toEqual(cachedJSON);
|
|
145
164
|
|
|
146
165
|
// simulate non existent db fetch, should write negative result ('') to cache
|
|
147
166
|
const nonExistentId = uuidv4();
|
|
148
|
-
const entityNonExistentResult = await RedisTestEntity.loader(
|
|
149
|
-
|
|
150
|
-
|
|
167
|
+
const entityNonExistentResult = await RedisTestEntity.loader(
|
|
168
|
+
viewerContext,
|
|
169
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
170
|
+
).loadByIDAsync(nonExistentId);
|
|
151
171
|
expect(entityNonExistentResult.ok).toBe(false);
|
|
152
172
|
const cacheKeyNonExistent = cacheKeyMaker('id', nonExistentId);
|
|
153
173
|
const nonExistentCachedValue = await redis.get(cacheKeyNonExistent);
|
|
154
174
|
expect(nonExistentCachedValue).toEqual('');
|
|
155
175
|
// load again through entities framework to ensure it reads negative result
|
|
156
|
-
const entityNonExistentResult2 = await RedisTestEntity.loader(
|
|
157
|
-
|
|
158
|
-
|
|
176
|
+
const entityNonExistentResult2 = await RedisTestEntity.loader(
|
|
177
|
+
viewerContext,
|
|
178
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
179
|
+
).loadByIDAsync(nonExistentId);
|
|
159
180
|
expect(entityNonExistentResult2.ok).toBe(false);
|
|
160
181
|
|
|
161
182
|
// invalidate from cache to ensure it invalidates correctly in both caches
|
|
162
|
-
await RedisTestEntity.loader(
|
|
183
|
+
await RedisTestEntity.loader(
|
|
184
|
+
viewerContext,
|
|
185
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
186
|
+
).invalidateFieldsAsync(entity1.getAllFields());
|
|
163
187
|
await expect(redis.get(cacheKeyEntity1)).resolves.toBeNull();
|
|
164
188
|
await expect(redis.get(cacheKeyEntity1NameField)).resolves.toBeNull();
|
|
165
189
|
});
|
|
@@ -46,12 +46,18 @@ describe(GenericRedisCacher, () => {
|
|
|
46
46
|
]['cacheAdapter']['genericCacher'];
|
|
47
47
|
const cacheKeyMaker = genericCacher['makeCacheKey'].bind(genericCacher);
|
|
48
48
|
|
|
49
|
-
const entity1Created = await RedisTestEntity.creator(
|
|
49
|
+
const entity1Created = await RedisTestEntity.creator(
|
|
50
|
+
viewerContext,
|
|
51
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
52
|
+
)
|
|
50
53
|
.setField('name', 'blah')
|
|
51
54
|
.enforceCreateAsync();
|
|
52
55
|
|
|
53
56
|
// loading an entity should put it in cache
|
|
54
|
-
const entity1 = await RedisTestEntity.loader(
|
|
57
|
+
const entity1 = await RedisTestEntity.loader(
|
|
58
|
+
viewerContext,
|
|
59
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
60
|
+
)
|
|
55
61
|
.enforcing()
|
|
56
62
|
.loadByIDAsync(entity1Created.getID());
|
|
57
63
|
|
|
@@ -67,9 +73,10 @@ describe(GenericRedisCacher, () => {
|
|
|
67
73
|
// simulate non existent db fetch, should write negative result ('') to cache
|
|
68
74
|
const nonExistentId = uuidv4();
|
|
69
75
|
|
|
70
|
-
const entityNonExistentResult = await RedisTestEntity.loader(
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
const entityNonExistentResult = await RedisTestEntity.loader(
|
|
77
|
+
viewerContext,
|
|
78
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
79
|
+
).loadByIDAsync(nonExistentId);
|
|
73
80
|
expect(entityNonExistentResult.ok).toBe(false);
|
|
74
81
|
|
|
75
82
|
const nonExistentCachedValue = await (genericRedisCacheContext.redisClient as Redis).get(
|
|
@@ -78,13 +85,17 @@ describe(GenericRedisCacher, () => {
|
|
|
78
85
|
expect(nonExistentCachedValue).toEqual('');
|
|
79
86
|
|
|
80
87
|
// load again through entities framework to ensure it reads negative result
|
|
81
|
-
const entityNonExistentResult2 = await RedisTestEntity.loader(
|
|
82
|
-
|
|
83
|
-
|
|
88
|
+
const entityNonExistentResult2 = await RedisTestEntity.loader(
|
|
89
|
+
viewerContext,
|
|
90
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
91
|
+
).loadByIDAsync(nonExistentId);
|
|
84
92
|
expect(entityNonExistentResult2.ok).toBe(false);
|
|
85
93
|
|
|
86
94
|
// invalidate from cache to ensure it invalidates correctly
|
|
87
|
-
await RedisTestEntity.loader(
|
|
95
|
+
await RedisTestEntity.loader(
|
|
96
|
+
viewerContext,
|
|
97
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
98
|
+
).invalidateFieldsAsync(entity1.getAllFields());
|
|
88
99
|
const cachedValueNull = await (genericRedisCacheContext.redisClient as Redis).get(
|
|
89
100
|
cacheKeyMaker('id', entity1.getID())
|
|
90
101
|
);
|
|
@@ -97,11 +108,19 @@ describe(GenericRedisCacher, () => {
|
|
|
97
108
|
);
|
|
98
109
|
const date = new Date();
|
|
99
110
|
const entity1 = await enforceAsyncResult(
|
|
100
|
-
RedisTestEntity.creator(
|
|
111
|
+
RedisTestEntity.creator(
|
|
112
|
+
viewerContext,
|
|
113
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
114
|
+
)
|
|
115
|
+
.setField('dateField', date)
|
|
116
|
+
.createAsync()
|
|
101
117
|
);
|
|
102
118
|
expect(entity1.getField('dateField')).toEqual(date);
|
|
103
119
|
|
|
104
|
-
const entity2 = await RedisTestEntity.loader(
|
|
120
|
+
const entity2 = await RedisTestEntity.loader(
|
|
121
|
+
viewerContext,
|
|
122
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
123
|
+
)
|
|
105
124
|
.enforcing()
|
|
106
125
|
.loadByIDAsync(entity1.getID());
|
|
107
126
|
expect(entity2.getField('dateField')).toEqual(date);
|
|
@@ -110,7 +129,12 @@ describe(GenericRedisCacher, () => {
|
|
|
110
129
|
const vc2 = new TestViewerContext(
|
|
111
130
|
createRedisIntegrationTestEntityCompanionProvider(genericRedisCacheContext)
|
|
112
131
|
);
|
|
113
|
-
const entity3 = await RedisTestEntity.loader(
|
|
132
|
+
const entity3 = await RedisTestEntity.loader(
|
|
133
|
+
vc2,
|
|
134
|
+
vc2.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
135
|
+
)
|
|
136
|
+
.enforcing()
|
|
137
|
+
.loadByIDAsync(entity1.getID());
|
|
114
138
|
expect(entity3.getField('dateField')).toEqual(date);
|
|
115
139
|
});
|
|
116
140
|
|
|
@@ -119,9 +143,17 @@ describe(GenericRedisCacher, () => {
|
|
|
119
143
|
createRedisIntegrationTestEntityCompanionProvider(genericRedisCacheContext)
|
|
120
144
|
);
|
|
121
145
|
const entity1 = await enforceAsyncResult(
|
|
122
|
-
RedisTestEntity.creator(
|
|
146
|
+
RedisTestEntity.creator(
|
|
147
|
+
viewerContext,
|
|
148
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
149
|
+
)
|
|
150
|
+
.setField('name', '')
|
|
151
|
+
.createAsync()
|
|
123
152
|
);
|
|
124
|
-
const entity2 = await RedisTestEntity.loader(
|
|
153
|
+
const entity2 = await RedisTestEntity.loader(
|
|
154
|
+
viewerContext,
|
|
155
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
156
|
+
)
|
|
125
157
|
.enforcing()
|
|
126
158
|
.loadByFieldEqualingAsync('name', '');
|
|
127
159
|
expect(entity2?.getID()).toEqual(entity1.getID());
|
|
@@ -130,7 +162,10 @@ describe(GenericRedisCacher, () => {
|
|
|
130
162
|
const vc2 = new TestViewerContext(
|
|
131
163
|
createRedisIntegrationTestEntityCompanionProvider(genericRedisCacheContext)
|
|
132
164
|
);
|
|
133
|
-
const entity3 = await RedisTestEntity.loader(
|
|
165
|
+
const entity3 = await RedisTestEntity.loader(
|
|
166
|
+
vc2,
|
|
167
|
+
vc2.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
168
|
+
)
|
|
134
169
|
.enforcing()
|
|
135
170
|
.loadByFieldEqualingAsync('name', '');
|
|
136
171
|
expect(entity3?.getID()).toEqual(entity1.getID());
|
|
@@ -46,7 +46,10 @@ describe(GenericRedisCacher, () => {
|
|
|
46
46
|
redisTestEntityConfiguration
|
|
47
47
|
);
|
|
48
48
|
const date = new Date();
|
|
49
|
-
const entity1Created = await RedisTestEntity.creator(
|
|
49
|
+
const entity1Created = await RedisTestEntity.creator(
|
|
50
|
+
viewerContext,
|
|
51
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
52
|
+
)
|
|
50
53
|
.setField('name', 'blah')
|
|
51
54
|
.setField('dateField', date)
|
|
52
55
|
.enforceCreateAsync();
|
|
@@ -92,7 +95,10 @@ describe(GenericRedisCacher, () => {
|
|
|
92
95
|
redisTestEntityConfiguration
|
|
93
96
|
);
|
|
94
97
|
const date = new Date();
|
|
95
|
-
const entity1Created = await RedisTestEntity.creator(
|
|
98
|
+
const entity1Created = await RedisTestEntity.creator(
|
|
99
|
+
viewerContext,
|
|
100
|
+
viewerContext.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
101
|
+
)
|
|
96
102
|
.setField('name', 'blah')
|
|
97
103
|
.setField('dateField', date)
|
|
98
104
|
.enforceCreateAsync();
|
|
@@ -40,7 +40,12 @@ describe(GenericRedisCacher, () => {
|
|
|
40
40
|
);
|
|
41
41
|
|
|
42
42
|
await expect(
|
|
43
|
-
RedisTestEntity.creator(
|
|
43
|
+
RedisTestEntity.creator(
|
|
44
|
+
vc1,
|
|
45
|
+
vc1.getNonTransactionalQueryContextForDatabaseAdaptorFlavor('postgres')
|
|
46
|
+
)
|
|
47
|
+
.setField('name', 'blah')
|
|
48
|
+
.enforceCreateAsync()
|
|
44
49
|
).rejects.toThrow(EntityCacheAdapterTransientError);
|
|
45
50
|
});
|
|
46
51
|
});
|