@karmaniverous/entity-manager 0.1.0 → 0.1.2-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/README.md CHANGED
@@ -221,7 +221,7 @@ This change can be accomplished with no breaking changes to existing implementat
221
221
  * [new exports.EntityManager(options)](#new_module_entity-manager.EntityManager_new)
222
222
  * [.addKeys(entityToken, item, [overwrite])](#module_entity-manager.EntityManager+addKeys) ⇒ <code>object</code>
223
223
  * [.getKeySpace(entityToken, keyToken, item, timestamp)](#module_entity-manager.EntityManager+getKeySpace) ⇒ <code>Array.&lt;string&gt;</code>
224
- * [.query(entityToken, keyToken, item, shardQuery, [shardPageKeys])](#module_entity-manager.EntityManager+query) ⇒ <code>Promise.&lt;ShardedQueryResult&gt;</code>
224
+ * [.query(entityToken, keyToken, item, shardQuery, [pageKeys])](#module_entity-manager.EntityManager+query) ⇒ <code>Promise.&lt;ShardedQueryResult&gt;</code>
225
225
  * _inner_
226
226
  * [~ShardQueryResult](#module_entity-manager..ShardQueryResult) : <code>object</code>
227
227
  * [~ShardQueryFunction](#module_entity-manager..ShardQueryFunction) ⇒ <code>Promise.&lt;ShardQueryResult&gt;</code>
@@ -238,7 +238,7 @@ Manage DynamoDb entities.
238
238
  * [new exports.EntityManager(options)](#new_module_entity-manager.EntityManager_new)
239
239
  * [.addKeys(entityToken, item, [overwrite])](#module_entity-manager.EntityManager+addKeys) ⇒ <code>object</code>
240
240
  * [.getKeySpace(entityToken, keyToken, item, timestamp)](#module_entity-manager.EntityManager+getKeySpace) ⇒ <code>Array.&lt;string&gt;</code>
241
- * [.query(entityToken, keyToken, item, shardQuery, [shardPageKeys])](#module_entity-manager.EntityManager+query) ⇒ <code>Promise.&lt;ShardedQueryResult&gt;</code>
241
+ * [.query(entityToken, keyToken, item, shardQuery, [pageKeys])](#module_entity-manager.EntityManager+query) ⇒ <code>Promise.&lt;ShardedQueryResult&gt;</code>
242
242
 
243
243
  <a name="new_module_entity-manager.EntityManager_new"></a>
244
244
 
@@ -301,7 +301,7 @@ Return an array of sharded keys valid for a given entity token & timestamp.
301
301
 
302
302
  <a name="module_entity-manager.EntityManager+query"></a>
303
303
 
304
- #### entityManager.query(entityToken, keyToken, item, shardQuery, [shardPageKeys]) ⇒ <code>Promise.&lt;ShardedQueryResult&gt;</code>
304
+ #### entityManager.query(entityToken, keyToken, item, shardQuery, [pageKeys]) ⇒ <code>Promise.&lt;ShardedQueryResult&gt;</code>
305
305
  Query an entity across shards.
306
306
 
307
307
  **Kind**: instance method of [<code>EntityManager</code>](#module_entity-manager.EntityManager)
@@ -313,7 +313,7 @@ Query an entity across shards.
313
313
  | keyToken | <code>string</code> | Key token. |
314
314
  | item | <code>object</code> | Entity item sufficiently populated to generate property keyToken. |
315
315
  | shardQuery | <code>ShardQueryFunction</code> | Sharded query function. |
316
- | [shardPageKeys] | <code>object</code> | Map of shard page keys. |
316
+ | [pageKeys] | <code>object</code> | Map of shard page keys. |
317
317
 
318
318
  <a name="module_entity-manager..ShardQueryResult"></a>
319
319
 
@@ -348,7 +348,7 @@ Shard query function
348
348
  | Name | Type | Description |
349
349
  | --- | --- | --- |
350
350
  | items | <code>Array.&lt;any&gt;</code> | Query result array. |
351
- | shardPageKeys | <code>object</code> | Shard page keys. |
351
+ | pageKeys | <code>object</code> | Shard page keys. |
352
352
 
353
353
 
354
354
  ---
@@ -136,7 +136,7 @@ class EntityManager {
136
136
  /**
137
137
  * @typedef {object} ShardedQueryResult
138
138
  * @property {any[]} items - Query result array.
139
- * @property {object} shardPageKeys - Shard page keys.
139
+ * @property {object} pageKeys - Shard page keys.
140
140
  */
141
141
 
142
142
  /**
@@ -146,25 +146,31 @@ class EntityManager {
146
146
  * @param {string} keyToken - Key token.
147
147
  * @param {object} item - Entity item sufficiently populated to generate property keyToken.
148
148
  * @param {ShardQueryFunction} shardQuery - Sharded query function.
149
- * @param {object} [shardPageKeys] - Map of shard page keys.
149
+ * @param {object} [pageKeys] - Map of shard page keys.
150
150
  * @returns {Promise<ShardedQueryResult>} Sharded query result.
151
151
  */
152
- async query(entityToken, keyToken, item, shardQuery, shardPageKeys) {
153
- // Generate default shardPageKeys if not provided
154
- shardPageKeys ??= (0, _fromPairs2.default)(this.getKeySpace(entityToken, keyToken, item).map(shardedKey => [shardedKey, undefined]));
152
+ async query(entityToken, keyToken, item, shardQuery, pageKeys) {
153
+ // Generate default pageKeys if not provided
154
+ pageKeys ??= (0, _fromPairs2.default)(this.getKeySpace(entityToken, keyToken, item).map(shardedKey => [shardedKey, undefined]));
155
155
 
156
- // Query every shard in shardPageKeys.
157
- const shardQueryResults = await Promise.all((0, _map2.default)(shardPageKeys, (pageKey, shardedKey) => new Promise(resolve => shardQuery(shardedKey, pageKey).then(_ref2 => {
156
+ // Query every shard in pageKeys.
157
+ const shardQueryResults = await Promise.all((0, _map2.default)(pageKeys, (pageKey, shardedKey) => new Promise(resolve => shardQuery(shardedKey, pageKey).then(_ref2 => {
158
158
  let {
159
159
  items,
160
160
  pageKey
161
161
  } = _ref2;
162
+ console.log('shardQueryResult', {
163
+ shardedKey,
164
+ items,
165
+ pageKey
166
+ });
162
167
  return resolve({
163
168
  shardedKey,
164
169
  items,
165
170
  pageKey
166
171
  });
167
172
  }))));
173
+ console.log('shardQueryResults', shardQueryResults);
168
174
 
169
175
  // Reduce shardQueryResults into a single result.
170
176
  const result = shardQueryResults.reduce((shardedQueryResult, _ref3) => {
@@ -175,8 +181,8 @@ class EntityManager {
175
181
  } = _ref3;
176
182
  return {
177
183
  items: [...shardedQueryResult.items, ...items],
178
- shardPageKeys: {
179
- ...shardedQueryResult.shardPageKeys,
184
+ pageKeys: {
185
+ ...shardedQueryResult.pageKeys,
180
186
  ...((0, _isUndefined2.default)(pageKey) ? {} : {
181
187
  [shardedKey]: pageKey
182
188
  })
@@ -184,7 +190,7 @@ class EntityManager {
184
190
  };
185
191
  }, {
186
192
  items: [],
187
- shardPageKeys: {}
193
+ pageKeys: {}
188
194
  });
189
195
  return result;
190
196
  }
@@ -132,7 +132,7 @@ export class EntityManager {
132
132
  /**
133
133
  * @typedef {object} ShardedQueryResult
134
134
  * @property {any[]} items - Query result array.
135
- * @property {object} shardPageKeys - Shard page keys.
135
+ * @property {object} pageKeys - Shard page keys.
136
136
  */
137
137
 
138
138
  /**
@@ -142,41 +142,44 @@ export class EntityManager {
142
142
  * @param {string} keyToken - Key token.
143
143
  * @param {object} item - Entity item sufficiently populated to generate property keyToken.
144
144
  * @param {ShardQueryFunction} shardQuery - Sharded query function.
145
- * @param {object} [shardPageKeys] - Map of shard page keys.
145
+ * @param {object} [pageKeys] - Map of shard page keys.
146
146
  * @returns {Promise<ShardedQueryResult>} Sharded query result.
147
147
  */
148
- async query(entityToken, keyToken, item, shardQuery, shardPageKeys) {
149
- // Generate default shardPageKeys if not provided
150
- shardPageKeys ??= _.fromPairs(
148
+ async query(entityToken, keyToken, item, shardQuery, pageKeys) {
149
+ // Generate default pageKeys if not provided
150
+ pageKeys ??= _.fromPairs(
151
151
  this.getKeySpace(entityToken, keyToken, item).map((shardedKey) => [
152
152
  shardedKey,
153
153
  undefined,
154
154
  ])
155
155
  );
156
156
 
157
- // Query every shard in shardPageKeys.
157
+ // Query every shard in pageKeys.
158
158
  const shardQueryResults = await Promise.all(
159
159
  _.map(
160
- shardPageKeys,
160
+ pageKeys,
161
161
  (pageKey, shardedKey) =>
162
162
  new Promise((resolve) =>
163
- shardQuery(shardedKey, pageKey).then(({ items, pageKey }) =>
164
- resolve({ shardedKey, items, pageKey })
165
- )
163
+ shardQuery(shardedKey, pageKey).then(({ items, pageKey }) => {
164
+ console.log('shardQueryResult', { shardedKey, items, pageKey });
165
+ return resolve({ shardedKey, items, pageKey });
166
+ })
166
167
  )
167
168
  )
168
169
  );
169
170
 
171
+ console.log('shardQueryResults', shardQueryResults);
172
+
170
173
  // Reduce shardQueryResults into a single result.
171
174
  const result = shardQueryResults.reduce(
172
175
  (shardedQueryResult, { shardedKey, items, pageKey }) => ({
173
176
  items: [...shardedQueryResult.items, ...items],
174
- shardPageKeys: {
175
- ...shardedQueryResult.shardPageKeys,
177
+ pageKeys: {
178
+ ...shardedQueryResult.pageKeys,
176
179
  ...(_.isUndefined(pageKey) ? {} : { [shardedKey]: pageKey }),
177
180
  },
178
181
  }),
179
- { items: [], shardPageKeys: {} }
182
+ { items: [], pageKeys: {} }
180
183
  );
181
184
 
182
185
  return result;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@karmaniverous/entity-manager",
3
- "version": "0.1.0",
3
+ "version": "0.1.2-0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },