diff --git a/package-lock.json b/package-lock.json index 0502da5..a246953 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@balmbees/dynamo-types", - "version": "2.12.1", + "version": "2.13.2-beta.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 32417bf..b683b07 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@balmbees/dynamo-types", - "version": "2.13.0", + "version": "2.13.2-beta.0", "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 80809e9..4a28482 100644 --- a/src/query/batch_get.ts +++ b/src/query/batch_get.ts @@ -48,7 +48,9 @@ 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)}`); + // 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 0a4ee52..14fd6e5 100644 --- a/src/query/batch_write.ts +++ b/src/query/batch_write.ts @@ -24,7 +24,11 @@ export async function batchWrite( ); } catch (e) { // tslint:disable-next-line - console.log(`Dynamo-Types batchWrite - ${JSON.stringify(requests, null, 2)}`); + 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 + console.log("error: ", e); throw e; } } 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;