From 617c2c517147bd5fb63cb461b53c07ee710fa913 Mon Sep 17 00:00:00 2001 From: guu980-dev Date: Mon, 24 Jul 2023 16:33:59 +0900 Subject: [PATCH 1/4] chore: add error log in batch get & write --- src/query/batch_get.ts | 3 ++- src/query/batch_write.ts | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/query/batch_get.ts b/src/query/batch_get.ts index 80809e9..f234a71 100644 --- a/src/query/batch_get.ts +++ b/src/query/batch_get.ts @@ -48,7 +48,8 @@ export async function __batchGet( }); } catch (e) { // tslint:disable-next-line - console.log(`Dynamo-Types batchGet - ${JSON.stringify(keys, null, 2)}`); + console.log(`Dynamo-Types batchGet on ${tableName} - ${JSON.stringify(keys, null, 2)}`); + console.log("error: ", e); throw e; } } diff --git a/src/query/batch_write.ts b/src/query/batch_write.ts index 0a4ee52..bf77731 100644 --- a/src/query/batch_write.ts +++ b/src/query/batch_write.ts @@ -24,7 +24,8 @@ export async function batchWrite( ); } catch (e) { // tslint:disable-next-line - console.log(`Dynamo-Types batchWrite - ${JSON.stringify(requests, null, 2)}`); + console.log(`Dynamo-Types batchWrite on ${tableName} - ${JSON.stringify(requests, null, 2)}`); + console.log("error: ", e); throw e; } } From 373be548437821da0865f4c1026da1b8b211c9ee Mon Sep 17 00:00:00 2001 From: guu980-dev Date: Mon, 24 Jul 2023 17:29:14 +0900 Subject: [PATCH 2/4] chore: match version & fix lint --- package-lock.json | 2 +- package.json | 4 ++-- src/query/batch_get.ts | 1 + src/query/batch_write.ts | 1 + 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 0502da5..7102e44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@balmbees/dynamo-types", - "version": "2.12.1", + "version": "2.13.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 32417bf..cd70987 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@balmbees/dynamo-types", - "version": "2.13.0", + "version": "2.13.1", "description": "DynamoDB ORM for Typescript", "main": "./dst/index.js", "typings": "./dst/index.d.ts", @@ -9,7 +9,7 @@ "build": "tsc", "postbuild": "cd src && find . -name '*.json' -type f -exec cp {} ../dst/{} \\; && cd ..", "test": "env AWS_REGION=us-east-1 AWS_ACCESS_KEY_ID=mock AWS_SECRET_ACCESS_KEY=moc mocha -r ./node_modules/ts-node/register --exit -t 20000 src/**/__test__/**/*.ts", - "test:local": "env DYNAMO_TYPES_ENDPOINT=http://127.0.0.1:8000 npm test", + "test:local": "env DYNAMO_TYPES_ENDPOINT=http://127.0.0.1:20010 npm test", "prepublishOnly": "npm run build", "lint": "tslint -c tslint.json 'src/**/*.ts'" }, diff --git a/src/query/batch_get.ts b/src/query/batch_get.ts index f234a71..4a28482 100644 --- a/src/query/batch_get.ts +++ b/src/query/batch_get.ts @@ -49,6 +49,7 @@ export async function __batchGet( } catch (e) { // tslint:disable-next-line console.log(`Dynamo-Types batchGet on ${tableName} - ${JSON.stringify(keys, null, 2)}`); + // tslint:disable-next-line console.log("error: ", e); throw e; } diff --git a/src/query/batch_write.ts b/src/query/batch_write.ts index bf77731..bc1660a 100644 --- a/src/query/batch_write.ts +++ b/src/query/batch_write.ts @@ -25,6 +25,7 @@ export async function batchWrite( } catch (e) { // tslint:disable-next-line console.log(`Dynamo-Types batchWrite on ${tableName} - ${JSON.stringify(requests, null, 2)}`); + // tslint:disable-next-line console.log("error: ", e); throw e; } From aaea38730754444714c8e6202ad3e53d03ccac4c Mon Sep 17 00:00:00 2001 From: guu980-dev Date: Mon, 24 Jul 2023 19:47:34 +0900 Subject: [PATCH 3/4] chore: add error log on table operations --- src/query/batch_write.ts | 2 + src/query/global_secondary_index.ts | 116 +++++++++++++++++----------- src/query/local_secondary_index.ts | 58 ++++++++------ src/query/writer.ts | 18 ++++- src/transaction.ts | 4 +- 5 files changed, 127 insertions(+), 71 deletions(-) diff --git a/src/query/batch_write.ts b/src/query/batch_write.ts index bc1660a..14fd6e5 100644 --- a/src/query/batch_write.ts +++ b/src/query/batch_write.ts @@ -23,6 +23,8 @@ export async function batchWrite( }), ); } catch (e) { + // tslint:disable-next-line + console.log("tried batchWrite with params: ", requests); // tslint:disable-next-line console.log(`Dynamo-Types batchWrite on ${tableName} - ${JSON.stringify(requests, null, 2)}`); // tslint:disable-next-line diff --git a/src/query/global_secondary_index.ts b/src/query/global_secondary_index.ts index 169a3e4..2bd6037 100644 --- a/src/query/global_secondary_index.ts +++ b/src/query/global_secondary_index.ts @@ -55,17 +55,24 @@ export class FullGlobalSecondaryIndex { - return Codec.deserialize(this.tableClass, item); - }), - count: result.Count, - scannedCount: result.ScannedCount, - lastEvaluatedKey: result.LastEvaluatedKey, - consumedCapacity: result.ConsumedCapacity, - }; + try { + const result = await this.tableClass.metadata.connection.documentClient.query(params).promise(); + return { + records: (result.Items || []).map((item) => { + return Codec.deserialize(this.tableClass, item); + }), + count: result.Count, + scannedCount: result.ScannedCount, + lastEvaluatedKey: result.LastEvaluatedKey, + consumedCapacity: result.ConsumedCapacity, + }; + } catch (error) { + // tslint:disable-next-line: no-console + console.log("tried query with params: ", params); + // tslint:disable-next-line: no-console + console.log(error); + throw error; + } } public async scan(options: { @@ -84,17 +91,24 @@ export class FullGlobalSecondaryIndex { - return Codec.deserialize(this.tableClass, item); - }), - count: result.Count, - scannedCount: result.ScannedCount, - lastEvaluatedKey: result.LastEvaluatedKey, - consumedCapacity: result.ConsumedCapacity, - }; + try { + const result = await this.tableClass.metadata.connection.documentClient.scan(params).promise(); + return { + records: (result.Items || []).map((item) => { + return Codec.deserialize(this.tableClass, item); + }), + count: result.Count, + scannedCount: result.ScannedCount, + lastEvaluatedKey: result.LastEvaluatedKey, + consumedCapacity: result.ConsumedCapacity, + }; + } catch (error) { + // tslint:disable-next-line: no-console + console.log("tried scan with params: ", params); + // tslint:disable-next-line: no-console + console.log(error); + throw error; + } } } @@ -120,17 +134,24 @@ export class HashGlobalSecondaryIndex { ConsistentRead: options.consistent, }; - const result = await this.tableClass.metadata.connection.documentClient.query(params).promise(); - - return { - records: (result.Items || []).map((item) => { - return Codec.deserialize(this.tableClass, item); - }), - count: result.Count, - scannedCount: result.ScannedCount, - lastEvaluatedKey: result.LastEvaluatedKey, - consumedCapacity: result.ConsumedCapacity, - }; + try { + const result = await this.tableClass.metadata.connection.documentClient.query(params).promise(); + return { + records: (result.Items || []).map((item) => { + return Codec.deserialize(this.tableClass, item); + }), + count: result.Count, + scannedCount: result.ScannedCount, + lastEvaluatedKey: result.LastEvaluatedKey, + consumedCapacity: result.ConsumedCapacity, + }; + } catch (error) { + // tslint:disable-next-line: no-console + console.log("tried query with params: ", params); + // tslint:disable-next-line: no-console + console.log(error); + throw error; + } } public async scan(options: { @@ -149,17 +170,24 @@ export class HashGlobalSecondaryIndex { Segment: options.segment, }; - const result = await this.tableClass.metadata.connection.documentClient.scan(params).promise(); - - return { - records: (result.Items || []).map((item) => { - return Codec.deserialize(this.tableClass, item); - }), - count: result.Count, - scannedCount: result.ScannedCount, - lastEvaluatedKey: result.LastEvaluatedKey, - consumedCapacity: result.ConsumedCapacity, - }; + try { + const result = await this.tableClass.metadata.connection.documentClient.scan(params).promise(); + return { + records: (result.Items || []).map((item) => { + return Codec.deserialize(this.tableClass, item); + }), + count: result.Count, + scannedCount: result.ScannedCount, + lastEvaluatedKey: result.LastEvaluatedKey, + consumedCapacity: result.ConsumedCapacity, + }; + } catch (error) { + // tslint:disable-next-line: no-console + console.log("tried scan with params: ", params); + // tslint:disable-next-line: no-console + console.log(error); + throw error; + } } } // tslint:enable:max-classes-per-file diff --git a/src/query/local_secondary_index.ts b/src/query/local_secondary_index.ts index f70a4c8..084ebbc 100644 --- a/src/query/local_secondary_index.ts +++ b/src/query/local_secondary_index.ts @@ -55,17 +55,24 @@ export class LocalSecondaryIndex { Object.assign(params.ExpressionAttributeValues, rangeKeyOptions.expressionAttributeValues); } - const result = await this.tableClass.metadata.connection.documentClient.query(params).promise(); - - return { - records: (result.Items || []).map((item) => { - return Codec.deserialize(this.tableClass, item); - }), - count: result.Count, - scannedCount: result.ScannedCount, - lastEvaluatedKey: result.LastEvaluatedKey, - consumedCapacity: result.ConsumedCapacity, - }; + try { + const result = await this.tableClass.metadata.connection.documentClient.query(params).promise(); + return { + records: (result.Items || []).map((item) => { + return Codec.deserialize(this.tableClass, item); + }), + count: result.Count, + scannedCount: result.ScannedCount, + lastEvaluatedKey: result.LastEvaluatedKey, + consumedCapacity: result.ConsumedCapacity, + }; + } catch (error) { + // tslint:disable-next-line: no-console + console.log("tried query with params: ", params); + // tslint:disable-next-line: no-console + console.log(error); + throw error; + } } public async scan(options: { @@ -83,16 +90,23 @@ export class LocalSecondaryIndex { Segment: options.segment, }; - const result = await this.tableClass.metadata.connection.documentClient.scan(params).promise(); - - return { - records: (result.Items || []).map((item) => { - return Codec.deserialize(this.tableClass, item); - }), - count: result.Count, - scannedCount: result.ScannedCount, - lastEvaluatedKey: result.LastEvaluatedKey, - consumedCapacity: result.ConsumedCapacity, - }; + try { + const result = await this.tableClass.metadata.connection.documentClient.scan(params).promise(); + return { + records: (result.Items || []).map((item) => { + return Codec.deserialize(this.tableClass, item); + }), + count: result.Count, + scannedCount: result.ScannedCount, + lastEvaluatedKey: result.LastEvaluatedKey, + consumedCapacity: result.ConsumedCapacity, + }; + } catch (error) { + // tslint:disable-next-line: no-console + console.log("tried scan with params: ", params); + // tslint:disable-next-line: no-console + console.log(error); + throw error; + } } } diff --git a/src/query/writer.ts b/src/query/writer.ts index 9603412..e9d1634 100644 --- a/src/query/writer.ts +++ b/src/query/writer.ts @@ -33,13 +33,15 @@ export class Writer { condition: Conditions | Array>; }> = {}, ) { + const operation = this.buildPutOperation(record, options); try { - const operation = this.buildPutOperation(record, options); const res = await this.tableClass.metadata.connection.documentClient.put(operation).promise(); record.setAttributes(res.Attributes || {}); return record; } catch (e) { + // tslint:disable-next-line + console.log("tried put with params: ", operation); // tslint:disable-next-line console.log(`Dynamo-Types Put - ${JSON.stringify(record.serialize(), null, 2)}`); throw e; @@ -79,9 +81,17 @@ export class Writer { condition: Conditions | Array>; }> = {}, ) { - await this.tableClass.metadata.connection.documentClient.delete( - this.buildDeleteOperation(record, options) - ).promise(); + const operation = this.buildDeleteOperation(record, options); + + try { + await this.tableClass.metadata.connection.documentClient.delete(operation).promise(); + } catch (error) { + // tslint:disable-next-line + console.log("tried delete with params: ", operation); + // tslint:disable-next-line + console.log(`Dynamo-Types Delete - ${JSON.stringify(record.serialize(), null, 2)}`); + throw error; + } } } diff --git a/src/transaction.ts b/src/transaction.ts index a11c6fd..461b2d4 100644 --- a/src/transaction.ts +++ b/src/transaction.ts @@ -47,7 +47,7 @@ export class TransactionWrite { public async commit() { - if(_.isEmpty(this.__typedOperation)) { + if (_.isEmpty(this.__typedOperation)) { return; } @@ -72,6 +72,8 @@ export class TransactionWrite { TransactItems: items }).promise(); } catch (e) { + // tslint:disable-next-line: no-console + console.log("tried transaction write on ", items); // tslint:disable-next-line: no-console console.log(e); throw e; From a7af0a112255727f344fe9983d1c722f9c2eaf5b Mon Sep 17 00:00:00 2001 From: guu980-dev Date: Tue, 25 Jul 2023 11:34:52 +0900 Subject: [PATCH 4/4] docs: beta 0 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7102e44..a246953 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@balmbees/dynamo-types", - "version": "2.13.1", + "version": "2.13.2-beta.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index cd70987..b683b07 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@balmbees/dynamo-types", - "version": "2.13.1", + "version": "2.13.2-beta.0", "description": "DynamoDB ORM for Typescript", "main": "./dst/index.js", "typings": "./dst/index.d.ts",