@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.
- package/dist/batchDeleteItems.d.ts +6 -1
- package/dist/batchDeleteItems.js +15 -6
- package/dist/batchDeleteItems.js.map +1 -1
- package/dist/batchDeleteObjectsFromS3.d.ts +1 -0
- package/dist/batchDeleteObjectsFromS3.js +28 -0
- package/dist/batchDeleteObjectsFromS3.js.map +1 -0
- package/dist/batchPutItems.d.ts +1 -2
- package/dist/batchPutItems.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,2 +1,7 @@
|
|
|
1
1
|
import { BatchInput } from "./index.js";
|
|
2
|
-
|
|
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 {};
|
package/dist/batchDeleteItems.js
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
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"}
|
package/dist/batchPutItems.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
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,
|
|
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;
|
|
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.
|
|
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": "
|
|
36
|
+
"gitHead": "b8ad2e29eea4a7400d3749d82aec5a1aee35f531"
|
|
37
37
|
}
|