@factorearth/recordmiddleware-dataaccesslayer 1.0.12 → 1.0.13

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.
@@ -1,2 +1,7 @@
1
1
  import { BatchInput } from "./index.js";
2
- export declare function batchDeleteItems(items: BatchInput[], tableName: string): Promise<void>;
2
+ interface BucketName {
3
+ name: string;
4
+ compressed: boolean;
5
+ }
6
+ export declare function batchDeleteItems(items: BatchInput[], tableName: string, bucketNames?: BucketName[]): Promise<void>;
7
+ export {};
@@ -1,29 +1,38 @@
1
- import { BatchWriteCommand } from "@aws-sdk/lib-dynamodb";
1
+ import { BatchWriteCommand, } from "@aws-sdk/lib-dynamodb";
2
2
  import { dynamoDbDocClient } from "./aws-services.js";
3
3
  import chunkBatch from "./chunkBatch.js";
4
4
  import { MAX_ITEMS_BATCH_WRITE } from "./index.js";
5
- export async function batchDeleteItems(items, tableName) {
5
+ import { batchDeleteObjectsFromS3 } from "./batchDeleteObjectsFromS3.js";
6
+ export async function batchDeleteItems(items, tableName, bucketNames) {
7
+ const s3Keys = [];
6
8
  const chunks = chunkBatch(items, MAX_ITEMS_BATCH_WRITE);
7
9
  for (const chunk of chunks) {
8
10
  const deleteRequests = chunk.map((batchInput) => {
11
+ if (batchInput.key && bucketNames) {
12
+ s3Keys.push(batchInput.key);
13
+ }
9
14
  return {
10
15
  DeleteRequest: {
11
- Key: { id: batchInput.id }
12
- }
16
+ Key: { id: batchInput.id },
17
+ },
13
18
  };
14
19
  });
15
20
  const commandInput = {
16
21
  RequestItems: {
17
- [tableName]: deleteRequests
22
+ [tableName]: deleteRequests,
18
23
  },
19
24
  };
20
25
  const command = new BatchWriteCommand(commandInput);
21
26
  try {
22
27
  await dynamoDbDocClient.send(command);
28
+ if (s3Keys.length > 0 && bucketNames) {
29
+ for (const bucketName of bucketNames) {
30
+ await batchDeleteObjectsFromS3(bucketName.name, s3Keys, bucketName.compressed);
31
+ }
32
+ }
23
33
  }
24
34
  catch (err) {
25
35
  console.error(`ERROR BATCH DELETING FROM TABLE ${tableName}`, err);
26
- console.log('IDS', deleteRequests);
27
36
  throw err;
28
37
  }
29
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"batchDeleteItems.js","sourceRoot":"","sources":["../lib/batchDeleteItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA0B,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAc,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAmB,EAAE,SAAiB;IAC5E,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YAC/C,OAAO;gBACN,aAAa,EAAE;oBACd,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;iBAC1B;aACD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAA2B;YAC5C,YAAY,EAAE;gBACb,CAAC,SAAS,CAAC,EAAE,cAAc;aAC3B;SACD,CAAC;QACF,MAAM,OAAO,GAAsB,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACvE,IAAI,CAAC;YACJ,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,mCAAmC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;YACnC,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"batchDeleteItems.js","sourceRoot":"","sources":["../lib/batchDeleteItems.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAc,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAMzE,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,KAAmB,EACnB,SAAiB,EACjB,WAA0B;IAE1B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;YAC/C,IAAI,UAAU,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;YACD,OAAO;gBACN,aAAa,EAAE;oBACd,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE;iBAC1B;aACD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAA2B;YAC5C,YAAY,EAAE;gBACb,CAAC,SAAS,CAAC,EAAE,cAAc;aAC3B;SACD,CAAC;QACF,MAAM,OAAO,GAAsB,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACvE,IAAI,CAAC;YACJ,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;gBACtC,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;oBACtC,MAAM,wBAAwB,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;gBAChF,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,mCAAmC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;YACnE,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;AACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const batchDeleteObjectsFromS3: (bucketName: string, keys: string[], compressed: boolean) => Promise<void>;
@@ -0,0 +1,28 @@
1
+ import { S3Client, DeleteObjectsCommand } from "@aws-sdk/client-s3";
2
+ import chunkBatch from "./chunkBatch.js";
3
+ const s3Client = new S3Client();
4
+ export const batchDeleteObjectsFromS3 = async (bucketName, keys, compressed) => {
5
+ const chunkSize = 1000;
6
+ const chunks = chunkBatch(keys, chunkSize);
7
+ for (const chunk of chunks) {
8
+ const deleteInput = {
9
+ Bucket: bucketName,
10
+ Delete: {
11
+ Objects: chunk.map((key) => ({
12
+ Key: compressed
13
+ ? `public/${key}`
14
+ : `public/${key.replace(/\.[^/.]+$/, "")}`,
15
+ })),
16
+ },
17
+ };
18
+ try {
19
+ const data = await s3Client.send(new DeleteObjectsCommand(deleteInput));
20
+ console.log("Successfully deleted objects:", data.Deleted);
21
+ }
22
+ catch (err) {
23
+ console.error("Error deleting objects:", err);
24
+ throw err;
25
+ }
26
+ }
27
+ };
28
+ //# sourceMappingURL=batchDeleteObjectsFromS3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchDeleteObjectsFromS3.js","sourceRoot":"","sources":["../lib/batchDeleteObjectsFromS3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAEzC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAC5C,UAAkB,EAClB,IAAc,EACd,UAAmB,EACH,EAAE;IAClB,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAE3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG;YACnB,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE;gBACP,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC5B,GAAG,EAAE,UAAU;wBACd,CAAC,CAAC,UAAU,GAAG,EAAE;wBACjB,CAAC,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE;iBAC3C,CAAC,CAAC;aACH;SACD,CAAC;QACF,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;YAC9C,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;AACF,CAAC,CAAC"}
@@ -1,2 +1 @@
1
- import { BatchInput } from "./index.js";
2
- export declare function batchPutItems(items: BatchInput[], tableName: string): Promise<void>;
1
+ export declare function batchPutItems(items: any[], tableName: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"batchPutItems.js","sourceRoot":"","sources":["../lib/batchPutItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA0B,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAc,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE/D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAmB,EAAE,SAAiB;IACzE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACtC,OAAO;gBACN,UAAU,EAAE;oBACX,IAAI;iBACJ;aACD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAA2B;YAC5C,YAAY,EAAE;gBACb,CAAC,SAAS,CAAC,EAAE,WAAW;aACxB;SACD,CAAC;QACF,MAAM,OAAO,GAAsB,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACvE,IAAI,CAAC;YACJ,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,qCAAqC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACzC,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"batchPutItems.js","sourceRoot":"","sources":["../lib/batchPutItems.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA0B,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAY,EAAE,SAAiB;IAClE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACtC,OAAO;gBACN,UAAU,EAAE;oBACX,IAAI;iBACJ;aACD,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,GAA2B;YAC5C,YAAY,EAAE;gBACb,CAAC,SAAS,CAAC,EAAE,WAAW;aACxB;SACD,CAAC;QACF,MAAM,OAAO,GAAsB,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACvE,IAAI,CAAC;YACJ,MAAM,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,KAAK,CAAC,qCAAqC,SAAS,EAAE,EAAE,GAAG,CAAC,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACzC,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;AACF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -9,8 +9,10 @@ export * from "./putItem.js";
9
9
  export * from "./updateItem.js";
10
10
  export * from "./utils.js";
11
11
  export * from "./getTableSchema.js";
12
+ export * from "./batchDeleteObjectsFromS3.js";
12
13
  export declare const MAX_ITEMS_BATCH_WRITE = 25;
13
14
  export declare const MAX_ITEMS_BATCH_READ = 100;
14
15
  export interface BatchInput {
15
16
  id: string;
17
+ key?: string;
16
18
  }
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@ export * from "./putItem.js";
9
9
  export * from "./updateItem.js";
10
10
  export * from "./utils.js";
11
11
  export * from "./getTableSchema.js";
12
+ export * from "./batchDeleteObjectsFromS3.js";
12
13
  export const MAX_ITEMS_BATCH_WRITE = 25;
13
14
  export const MAX_ITEMS_BATCH_READ = 100;
14
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AAEpC,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAA;AAE7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@factorearth/recordmiddleware-dataaccesslayer",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
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": "ef75e8489cc02353c779b2eb43d6223089751a7a"
36
+ "gitHead": "b8ad2e29eea4a7400d3749d82aec5a1aee35f531"
37
37
  }