@factorearth/recordmiddleware-dataaccesslayer 4.5.0-alpha.0 → 4.5.1-alpha.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
@@ -1,11 +1,11 @@
1
- # `dataAccessLayer`
2
-
3
- > TODO: description
4
-
5
- ## Usage
6
-
7
- ```
8
- const dataaccesslayer = require('dataAccessLayer');
9
-
10
- // TODO: DEMONSTRATE API
11
- ```
1
+ # `dataAccessLayer`
2
+
3
+ > TODO: description
4
+
5
+ ## Usage
6
+
7
+ ```
8
+ const dataaccesslayer = require('dataAccessLayer');
9
+
10
+ // TODO: DEMONSTRATE API
11
+ ```
package/dist/getItem.d.ts CHANGED
@@ -1,2 +1,12 @@
1
1
  export declare const getItem: (id: string, tableName: string) => Promise<Record<string, any>>;
2
2
  export declare const getItemsByIndex: (indexName: string, tableName: string, attributeValue: string, attribute: string, columns?: string[]) => Promise<Record<string, any>[]>;
3
+ /**
4
+ * handle retrieving items from a specific table using a specific index in chunks.
5
+ * @param keyValue value of the primary key
6
+ * @param keyAttr string of the name of the key attribute i.e. formGroup
7
+ * @param tableName name of the table being accessed
8
+ * @param gsiName of the index being used
9
+ * @param chunkSize limit for the request
10
+ * @returns the requested documents from the table.
11
+ */
12
+ export declare function getItemsByIndexInChunks(keyValue: string, keyAttr: string, tableName: string, gsiName: string, chunkSize: number): Promise<any[]>;
package/dist/getItem.js CHANGED
@@ -46,4 +46,41 @@ export const getItemsByIndex = async (indexName, tableName, attributeValue, attr
46
46
  throw err;
47
47
  }
48
48
  };
49
+ /**
50
+ * handle retrieving items from a specific table using a specific index in chunks.
51
+ * @param keyValue value of the primary key
52
+ * @param keyAttr string of the name of the key attribute i.e. formGroup
53
+ * @param tableName name of the table being accessed
54
+ * @param gsiName of the index being used
55
+ * @param chunkSize limit for the request
56
+ * @returns the requested documents from the table.
57
+ */
58
+ export async function getItemsByIndexInChunks(keyValue, keyAttr, tableName, gsiName, chunkSize) {
59
+ let items = [];
60
+ let lastEvaluatedKey = undefined;
61
+ do {
62
+ const params = {
63
+ TableName: tableName,
64
+ IndexName: gsiName, // Use the new GSI
65
+ KeyConditionExpression: `${keyAttr} = :${keyAttr}`,
66
+ ExpressionAttributeValues: {
67
+ [`:${keyAttr}`]: { S: keyValue },
68
+ },
69
+ Limit: chunkSize, // Fetch up to 100 items per request
70
+ ExclusiveStartKey: lastEvaluatedKey, // For pagination
71
+ };
72
+ try {
73
+ const result = await getDocClient().send(new QueryCommand(params));
74
+ if (result.Items) {
75
+ items = items.concat(result.Items);
76
+ }
77
+ lastEvaluatedKey = result.LastEvaluatedKey; // Update the pagination key
78
+ }
79
+ catch (error) {
80
+ console.error("Error querying field instances:", error);
81
+ throw new Error("Failed to fetch field instances");
82
+ }
83
+ } while (lastEvaluatedKey); // Continue until all items are fetched
84
+ return items;
85
+ }
49
86
  //# sourceMappingURL=getItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getItem.js","sourceRoot":"","sources":["../lib/getItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,YAAY,EAAqB,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAAU,EAAE,SAAiB,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAoB;QAC/B,SAAS,EAAE,SAAS;QACpB,GAAG,EAAE;YACJ,EAAE;SACF;KACD,CAAC;IACF,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG;gBACd,IAAI,EAAE,0CAA0C;gBAChD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,SAAS,EAAE;aAC7D,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,uBAAuB,SAAS,EAAE,CAAC,CAAC;YAClE,MAAM,MAAM,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5B,MAAM,GAAG,CAAC;IACX,CAAC;AACF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,SAAiB,EAAE,SAAiB,EAAE,cAAsB,EAAE,SAAiB,EAAE,OAAkB,EAAE,EAAE;IAC5I,MAAM,EAAE,wBAAwB,EAAE,eAAe,EAAE,GAAG,4BAA4B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAE3G,MAAM,MAAM,GAAsB;QACjC,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;QACpB,sBAAsB,EAAE,cAAc;QACtC,wBAAwB,EAAE,wBAAwB;QAClD,yBAAyB,EAAE;YAC1B,QAAQ,EAAE,cAAc;SACxB;QACD,oBAAoB,EAAE,eAAe;KACrC,CAAC;IAEF,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC5B,MAAM,GAAG,CAAC;IACX,CAAC;AACF,CAAC,CAAC"}
1
+ {"version":3,"file":"getItem.js","sourceRoot":"","sources":["../lib/getItem.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@factorearth/recordmiddleware-dataaccesslayer",
3
- "version": "4.5.0-alpha.0",
3
+ "version": "4.5.1-alpha.0",
4
4
  "description": "A module for accessing dynamdb efficiently",
5
5
  "author": "madtrx <marlin.makori@gmail.com>",
6
6
  "homepage": "https://github.com/FactorEarth/RecordMiddleware#readme",
@@ -33,5 +33,5 @@
33
33
  "access": "public",
34
34
  "registry": "https://registry.npmjs.org/"
35
35
  },
36
- "gitHead": "d712f327989764003f3eb2ee611e2a0a296133a3"
36
+ "gitHead": "cfe995b439ef17e2d7b53d8fdd83aa84b668cf89"
37
37
  }