@expo/entity 0.21.0 → 0.24.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/EntityFieldDefinition.d.ts +8 -0
- package/build/EntityFieldDefinition.js +5 -0
- package/build/EntityFieldDefinition.js.map +1 -1
- package/build/EntityFields.d.ts +38 -0
- package/build/EntityFields.js +38 -0
- package/build/EntityFields.js.map +1 -1
- package/build/GenericSecondaryEntityCache.d.ts +19 -0
- package/build/GenericSecondaryEntityCache.js +74 -0
- package/build/GenericSecondaryEntityCache.js.map +1 -0
- package/build/IEntityGenericCacher.d.ts +11 -0
- package/build/IEntityGenericCacher.js +3 -0
- package/build/IEntityGenericCacher.js.map +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +3 -1
- package/build/index.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/EntityFieldDefinition.ts +8 -0
- package/src/EntityFields.ts +45 -0
- package/src/GenericSecondaryEntityCache.ts +98 -0
- package/src/IEntityGenericCacher.ts +15 -0
- package/src/index.ts +2 -0
- 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 +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":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA+E;AAG/E,oFAA4D;AAC5D,qDAA+C;AAC/C,oFAAgF;AAMhF,MAAM,uBAAuB,GAAG,CAAC,YAAqB,EAAmC,EAAE,CACzF,IAAI,6BAAmB,CAAa;IAClC,OAAO,EAAE,IAAI;IACb,SAAS,EAAE,MAAM;IACjB,MAAM,EAAE;QACN,EAAE,EAAE,IAAI,wBAAS,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;KAC7D;IACD,qBAAqB,EAAE,UAAU;IACjC,kBAAkB,EAAE,OAAO;CAC5B,CAAC,CAAC;AAEL,MAAM,eAAe,GACnB,CAAC,GAAa,EAAE,EAAE,CAClB,KAAK,EACH,kBAAyD,EAC0B,EAAE;IACrF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1B,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/B,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACnB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7B;aAAM;YACL,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACpB;IACH,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEJ,QAAQ,CAAC,gCAAsB,EAAE,GAAG,EAAE;IACpC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;QACpC,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,gBAAgB,GAAG,IAAA,iBAAI,GAAkC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,gCAAsB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAEhD,IAAA,iBAAI,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAC/E,IAAI,GAAG,CAAC;gBACN,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,IAAI,EAAE,CAAC;aACtC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAErF,IAAA,mBAAM,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/E,IAAA,mBAAM,EACJ,gBAAgB,CAAC,cAAc,CAC7B,IAAI,EACJ,IAAA,sBAAS,EACP,IAAI,GAAG,CAAC;gBACN,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;gBACtB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;aACvB,CAAC,CACH,CACF,CACF,CAAC,IAAI,EAAE,CAAC;YACT,IAAA,mBAAM,EAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,IAAI,GAAG,CAAC;gBACN,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;aACzB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC3F,MAAM,gBAAgB,GAAG,IAAA,iBAAI,GAAkC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,gCAAsB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAEhD,IAAA,iBAAI,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAC/E,IAAI,GAAG,CAAC;gBACN,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;gBACzD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;aAC1D,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAErF,IAAA,mBAAM,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC/E,IAAA,mBAAM,EACJ,gBAAgB,CAAC,cAAc,CAC7B,IAAI,EACJ,IAAA,sBAAS,EACP,IAAI,GAAG,CAAC;gBACN,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;gBACtB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;aACvB,CAAC,CACH,CACF,CACF,CAAC,KAAK,EAAE,CAAC;YACV,IAAA,mBAAM,EAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,IAAI,GAAG,CAAC;gBACN,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;aACzB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;YAC3C,MAAM,gBAAgB,GAAG,IAAA,iBAAI,GAAkC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,gCAAsB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;YAE5F,mBAAmB;YACnB,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAEhD,IAAA,iBAAI,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CACxE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACjD,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAE9E,IAAA,mBAAM,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,IAAA,mBAAM,EAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3E,IAAA,mBAAM,EAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YAC1E,MAAM,gBAAgB,GAAG,IAAA,iBAAI,GAAkC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,gCAAsB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;YAEpC,IAAA,iBAAI,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CACxE,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CACrD,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9E,IAAA,mBAAM,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxE,IAAA,mBAAM,EAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAA,qBAAQ,GAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAClE,IAAA,mBAAM,EAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAA,qBAAQ,GAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACtE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,gBAAgB,GAAG,IAAA,iBAAI,GAAkC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,gCAAsB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;YAC5F,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAEvD,IAAA,iBAAI,EACF,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAC9E,CAAC,WAAW,CACX,IAAI,GAAG,CAAC;gBACN,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,IAAI,EAAE,CAAC;gBACrC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,QAAQ,EAAE,CAAC;gBACzC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC;gBACzD,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,oCAAW,CAAC,IAAI,EAAE,CAAC;aACtC,CAAC,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,CACnD,IAAI,EACJ,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAC5B,OAAO,CACR,CAAC;YACF,IAAA,mBAAM,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7F,IAAA,mBAAM,EACJ,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACpF,CAAC,IAAI,EAAE,CAAC;YACT,IAAA,mBAAM,EAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC7E,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CACpB,IAAI,GAAG,CAAC;gBACN,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;gBACxB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;aACzB,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,gBAAgB,GAAG,IAAA,iBAAI,GAAkC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,gCAAsB,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;YAC7F,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;YAC9E,IAAA,mBAAM,EAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,EAAE,IAAA,qBAAQ,GAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACjE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;QACnC,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,gBAAgB,GAAG,IAAA,iBAAI,GAAkC,CAAC;YAChE,MAAM,YAAY,GAAG,IAAA,qBAAQ,EAAC,gBAAgB,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,gCAAsB,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;YAC5F,MAAM,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACrD,IAAA,mBAAM,EAAC,gBAAgB,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAA,sBAAS,EAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -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
|
/**
|
|
@@ -28,6 +28,9 @@ export enum EntityEdgeDeletionBehavior {
|
|
|
28
28
|
SET_NULL,
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
/**
|
|
32
|
+
* Defines an association between entities. An association is primarily used to define cascading deletion behavior.
|
|
33
|
+
*/
|
|
31
34
|
export interface EntityAssociationDefinition<
|
|
32
35
|
TViewerContext extends ViewerContext,
|
|
33
36
|
TAssociatedFields,
|
|
@@ -83,6 +86,10 @@ export interface EntityAssociationDefinition<
|
|
|
83
86
|
edgeDeletionBehavior?: EntityEdgeDeletionBehavior;
|
|
84
87
|
}
|
|
85
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Definition for a field referencing a column in the underlying database. Specifies things like
|
|
91
|
+
* cache behavior and associations, and handles input validation.
|
|
92
|
+
*/
|
|
86
93
|
export abstract class EntityFieldDefinition<T> {
|
|
87
94
|
readonly columnName: string;
|
|
88
95
|
readonly cache: boolean;
|
|
@@ -93,6 +100,7 @@ export abstract class EntityFieldDefinition<T> {
|
|
|
93
100
|
* @param cache - Whether or not to cache loaded instances of the entity by this field. The column name is
|
|
94
101
|
* used to derive a cache key for the cache entry. If true, this column must be able uniquely
|
|
95
102
|
* identify the entity.
|
|
103
|
+
* @param association - Defines the association behavior for an entity that this column references.
|
|
96
104
|
*/
|
|
97
105
|
constructor({
|
|
98
106
|
columnName,
|
package/src/EntityFields.ts
CHANGED
|
@@ -2,59 +2,104 @@ import { validate as validateUUID } from 'uuid';
|
|
|
2
2
|
|
|
3
3
|
import { EntityFieldDefinition } from './EntityFieldDefinition';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* {@link EntityFieldDefinition} for a column with a JS string type.
|
|
7
|
+
*/
|
|
5
8
|
export class StringField extends EntityFieldDefinition<string> {
|
|
6
9
|
protected validateInputValueInternal(value: string): boolean {
|
|
7
10
|
return typeof value === 'string';
|
|
8
11
|
}
|
|
9
12
|
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* {@link EntityFieldDefinition} for a column with a JS string type.
|
|
16
|
+
* Enforces that the string is a valid UUID.
|
|
17
|
+
*/
|
|
10
18
|
export class UUIDField extends StringField {
|
|
11
19
|
protected override validateInputValueInternal(value: string): boolean {
|
|
12
20
|
return validateUUID(value);
|
|
13
21
|
}
|
|
14
22
|
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* {@link EntityFieldDefinition} for a column with a JS Date type.
|
|
26
|
+
*/
|
|
15
27
|
export class DateField extends EntityFieldDefinition<Date> {
|
|
16
28
|
protected validateInputValueInternal(value: Date): boolean {
|
|
17
29
|
return value instanceof Date;
|
|
18
30
|
}
|
|
19
31
|
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* {@link EntityFieldDefinition} for a column with a JS boolean type.
|
|
35
|
+
*/
|
|
20
36
|
export class BooleanField extends EntityFieldDefinition<boolean> {
|
|
21
37
|
protected validateInputValueInternal(value: boolean): boolean {
|
|
22
38
|
return typeof value === 'boolean';
|
|
23
39
|
}
|
|
24
40
|
}
|
|
25
41
|
|
|
42
|
+
/**
|
|
43
|
+
* {@link EntityFieldDefinition} for a column with a JS number type.
|
|
44
|
+
* Enforces that the number is an integer.
|
|
45
|
+
*/
|
|
26
46
|
export class IntField extends EntityFieldDefinition<number> {
|
|
27
47
|
protected validateInputValueInternal(value: number): boolean {
|
|
28
48
|
return typeof value === 'number' && Number.isInteger(value);
|
|
29
49
|
}
|
|
30
50
|
}
|
|
31
51
|
|
|
52
|
+
/**
|
|
53
|
+
* {@link EntityFieldDefinition} for a column with a JS number type.
|
|
54
|
+
* Enforces that the number is a float (which includes integers in JS).
|
|
55
|
+
*/
|
|
32
56
|
export class FloatField extends EntityFieldDefinition<number> {
|
|
33
57
|
protected validateInputValueInternal(value: number): boolean {
|
|
34
58
|
return typeof value === 'number';
|
|
35
59
|
}
|
|
36
60
|
}
|
|
37
61
|
|
|
62
|
+
/**
|
|
63
|
+
* {@link EntityFieldDefinition} for a column with a JS string array type.
|
|
64
|
+
* Enforces that every member of the string array is a string.
|
|
65
|
+
*/
|
|
38
66
|
export class StringArrayField extends EntityFieldDefinition<string[]> {
|
|
39
67
|
protected validateInputValueInternal(value: string[]): boolean {
|
|
40
68
|
return Array.isArray(value) && value.every((subValue) => typeof subValue === 'string');
|
|
41
69
|
}
|
|
42
70
|
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* {@link EntityFieldDefinition} for a column with a JS JSON object type.
|
|
74
|
+
*/
|
|
43
75
|
export class JSONObjectField extends EntityFieldDefinition<object> {
|
|
44
76
|
protected validateInputValueInternal(value: object): boolean {
|
|
45
77
|
return typeof value === 'object' && !Array.isArray(value);
|
|
46
78
|
}
|
|
47
79
|
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* {@link EntityFieldDefinition} for a enum column with a JS string or number type.
|
|
83
|
+
*/
|
|
48
84
|
export class EnumField extends EntityFieldDefinition<string | number> {
|
|
49
85
|
protected validateInputValueInternal(value: string | number): boolean {
|
|
50
86
|
return typeof value === 'number' || typeof value === 'string';
|
|
51
87
|
}
|
|
52
88
|
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* {@link EntityFieldDefinition} for a column with a JS JSON array type.
|
|
92
|
+
*/
|
|
53
93
|
export class JSONArrayField extends EntityFieldDefinition<any[]> {
|
|
54
94
|
protected validateInputValueInternal(value: any[]): boolean {
|
|
55
95
|
return Array.isArray(value);
|
|
56
96
|
}
|
|
57
97
|
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* {@link EntityFieldDefinition} for a column that may be a JS JSON array type.
|
|
101
|
+
* Does not do any validation.
|
|
102
|
+
*/
|
|
58
103
|
export class MaybeJSONArrayField extends EntityFieldDefinition<any | any[]> {
|
|
59
104
|
protected validateInputValueInternal(_value: any): boolean {
|
|
60
105
|
return true;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import invariant from 'invariant';
|
|
2
|
+
|
|
3
|
+
import { ISecondaryEntityCache } from './EntitySecondaryCacheLoader';
|
|
4
|
+
import IEntityGenericCacher from './IEntityGenericCacher';
|
|
5
|
+
import { CacheStatus } from './internal/ReadThroughEntityCache';
|
|
6
|
+
import { filterMap, zipToMap } from './utils/collections/maps';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* A custom secondary read-through entity cache is a way to add a custom second layer of caching for a particular
|
|
10
|
+
* single entity load. One common way this may be used is to add a second layer of caching in a hot path that makes
|
|
11
|
+
* a call to {@link EntityLoader.loadManyByFieldEqualityConjunctionAsync} is guaranteed to return at most one entity.
|
|
12
|
+
*/
|
|
13
|
+
export default abstract class GenericSecondaryEntityCache<TFields, TLoadParams>
|
|
14
|
+
implements ISecondaryEntityCache<TFields, TLoadParams>
|
|
15
|
+
{
|
|
16
|
+
constructor(
|
|
17
|
+
protected readonly cacher: IEntityGenericCacher<TFields>,
|
|
18
|
+
protected readonly constructCacheKey: (params: Readonly<TLoadParams>) => string
|
|
19
|
+
) {}
|
|
20
|
+
|
|
21
|
+
public async loadManyThroughAsync(
|
|
22
|
+
loadParamsArray: readonly Readonly<TLoadParams>[],
|
|
23
|
+
fetcher: (
|
|
24
|
+
fetcherLoadParamsArray: readonly Readonly<TLoadParams>[]
|
|
25
|
+
) => Promise<ReadonlyMap<Readonly<TLoadParams>, Readonly<TFields> | null>>
|
|
26
|
+
): Promise<ReadonlyMap<Readonly<TLoadParams>, Readonly<TFields> | null>> {
|
|
27
|
+
const cacheKeys = loadParamsArray.map(this.constructCacheKey);
|
|
28
|
+
const cacheKeyToLoadParamsMap = zipToMap(cacheKeys, loadParamsArray);
|
|
29
|
+
|
|
30
|
+
const cacheLoadResults = await this.cacher.loadManyAsync(cacheKeys);
|
|
31
|
+
|
|
32
|
+
invariant(
|
|
33
|
+
cacheLoadResults.size === loadParamsArray.length,
|
|
34
|
+
`${this.constructor.name} loadMany should return a result for each key`
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const cacheKeysToFetch = Array.from(
|
|
38
|
+
filterMap(
|
|
39
|
+
cacheLoadResults,
|
|
40
|
+
(cacheLoadResult) => cacheLoadResult.status === CacheStatus.MISS
|
|
41
|
+
).keys()
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
// put cache hits in result map
|
|
45
|
+
const results: Map<Readonly<TLoadParams>, Readonly<TFields> | null> = new Map();
|
|
46
|
+
cacheLoadResults.forEach((cacheLoadResult, cacheKey) => {
|
|
47
|
+
if (cacheLoadResult.status === CacheStatus.HIT) {
|
|
48
|
+
const loadParams = cacheKeyToLoadParamsMap.get(cacheKey);
|
|
49
|
+
invariant(loadParams !== undefined, 'load params should be in cache key map');
|
|
50
|
+
results.set(loadParams, cacheLoadResult.item);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// fetch any misses from DB, add DB objects to results, cache DB results, inform cache of any missing DB results
|
|
55
|
+
if (cacheKeysToFetch.length > 0) {
|
|
56
|
+
const loadParamsToFetch = cacheKeysToFetch.map((cacheKey) => {
|
|
57
|
+
const loadParams = cacheKeyToLoadParamsMap.get(cacheKey);
|
|
58
|
+
invariant(loadParams !== undefined, 'load params should be in cache key map');
|
|
59
|
+
return loadParams;
|
|
60
|
+
});
|
|
61
|
+
const fetchResults = await fetcher(loadParamsToFetch);
|
|
62
|
+
|
|
63
|
+
const fetchMisses = loadParamsToFetch.filter((loadParams) => {
|
|
64
|
+
// all values of fetchResults should be field objects or undefined
|
|
65
|
+
return !fetchResults.get(loadParams);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
for (const fetchMiss of fetchMisses) {
|
|
69
|
+
results.set(fetchMiss, null);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const objectsToCache: Map<string, Readonly<TFields>> = new Map();
|
|
73
|
+
for (const [loadParams, object] of fetchResults.entries()) {
|
|
74
|
+
if (object) {
|
|
75
|
+
objectsToCache.set(this.constructCacheKey(loadParams), object);
|
|
76
|
+
results.set(loadParams, object);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
await Promise.all([
|
|
81
|
+
this.cacher.cacheManyAsync(objectsToCache),
|
|
82
|
+
this.cacher.cacheDBMissesAsync(fetchMisses.map(this.constructCacheKey)),
|
|
83
|
+
]);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return results;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Invalidate the cache for objects cached by constructCacheKey(loadParams).
|
|
91
|
+
*
|
|
92
|
+
* @param loadParamsArray - load params to invalidate
|
|
93
|
+
*/
|
|
94
|
+
public invalidateManyAsync(loadParamsArray: readonly Readonly<TLoadParams>[]): Promise<void> {
|
|
95
|
+
const cacheKeys = loadParamsArray.map(this.constructCacheKey);
|
|
96
|
+
return this.cacher.invalidateManyAsync(cacheKeys);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CacheLoadResult } from './internal/ReadThroughEntityCache';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A cacher stores and loads key-value pairs. It also supports negative caching - it stores the absence
|
|
5
|
+
* of keys that don't exist in the backing datastore.
|
|
6
|
+
*/
|
|
7
|
+
export default interface IEntityGenericCacher<TFields> {
|
|
8
|
+
loadManyAsync(keys: readonly string[]): Promise<ReadonlyMap<string, CacheLoadResult<TFields>>>;
|
|
9
|
+
|
|
10
|
+
cacheManyAsync(objectMap: ReadonlyMap<string, Readonly<TFields>>): Promise<void>;
|
|
11
|
+
|
|
12
|
+
cacheDBMissesAsync(keys: string[]): Promise<void>;
|
|
13
|
+
|
|
14
|
+
invalidateManyAsync(keys: string[]): Promise<void>;
|
|
15
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* @module @expo/entity
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
export { default as GenericSecondaryEntityCache } from './GenericSecondaryEntityCache';
|
|
7
8
|
export { default as EnforcingEntityLoader } from './EnforcingEntityLoader';
|
|
8
9
|
export { default as Entity } from './Entity';
|
|
9
10
|
export * from './Entity';
|
|
@@ -43,6 +44,7 @@ export * from './EntityQueryContext';
|
|
|
43
44
|
export { default as IEntityCacheAdapterProvider } from './IEntityCacheAdapterProvider';
|
|
44
45
|
export { default as IEntityDatabaseAdapterProvider } from './IEntityDatabaseAdapterProvider';
|
|
45
46
|
export { default as EntityQueryContextProvider } from './EntityQueryContextProvider';
|
|
47
|
+
export { default as IEntityGenericCacher } from './IEntityGenericCacher';
|
|
46
48
|
export { default as ReadonlyEntity } from './ReadonlyEntity';
|
|
47
49
|
export { default as ViewerContext } from './ViewerContext';
|
|
48
50
|
export { default as ViewerScopedEntityCompanion } from './ViewerScopedEntityCompanion';
|
|
@@ -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', () => {
|