@trunkrs/common 1.4.35 → 1.5.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/models/errors/OperationNotSupportedError.d.ts +5 -0
- package/models/errors/OperationNotSupportedError.js +16 -0
- package/models/errors/OperationNotSupportedError.js.map +1 -0
- package/models/errors/index.d.ts +1 -0
- package/models/errors/index.js +3 -1
- package/models/errors/index.js.map +1 -1
- package/package.json +1 -1
- package/services/aws/dynamodb/BaseDynamoDataStorage.d.ts +2 -6
- package/services/aws/dynamodb/BaseDynamoDataStorage.js +18 -8
- package/services/aws/dynamodb/BaseDynamoDataStorage.js.map +1 -1
- package/services/aws/dynamodb/BatchSizeTooBigError.js +2 -1
- package/services/aws/dynamodb/BatchSizeTooBigError.js.map +1 -1
- package/services/aws/dynamodb/DynamoDataStorage.js +10 -15
- package/services/aws/dynamodb/DynamoDataStorage.js.map +1 -1
- package/services/aws/dynamodb/DynamoIndexDataStorage.js +15 -15
- package/services/aws/dynamodb/DynamoIndexDataStorage.js.map +1 -1
- package/services/aws/dynamodb/utils/index.d.ts +1 -1
- package/services/aws/dynamodb/utils/index.js.map +1 -1
- package/services/aws/dynamodb/utils/query/QueryBuilder.d.ts +7 -4
- package/services/aws/dynamodb/utils/query/QueryBuilder.js +32 -16
- package/services/aws/dynamodb/utils/query/QueryBuilder.js.map +1 -1
- package/services/aws/dynamodb/utils/query/QueryParameters.d.ts +4 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const ErrorBase_1 = __importDefault(require("./ErrorBase"));
|
|
7
|
+
class OperationNotSupportedError extends ErrorBase_1.default {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super();
|
|
10
|
+
this.name = 'OperationNotSupportedError';
|
|
11
|
+
this.message = message;
|
|
12
|
+
Error.captureStackTrace(this);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
exports.default = OperationNotSupportedError;
|
|
16
|
+
//# sourceMappingURL=OperationNotSupportedError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OperationNotSupportedError.js","sourceRoot":"","sources":["../../../models/errors/OperationNotSupportedError.ts"],"names":[],"mappings":";;;;;AAAA,4DAAmC;AAEnC,MAAM,0BAA2B,SAAQ,mBAAS;IAChD,YAAmB,OAAe;QAChC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAA;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QAEtB,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;CACF;AAED,kBAAe,0BAA0B,CAAA"}
|
package/models/errors/index.d.ts
CHANGED
|
@@ -3,3 +3,4 @@ export { default as OAuthClientError } from './OAuthClientError';
|
|
|
3
3
|
export { default as HttpRequestError } from './HttpRequestError';
|
|
4
4
|
export { default as OAuthExchangeFailedError } from './OAuthExchangeFailedError';
|
|
5
5
|
export { default as CoreServicesRequestFailedError } from './CoreServicesRequestFailedError';
|
|
6
|
+
export { default as OperationNotSupportedError } from './OperationNotSupportedError';
|
package/models/errors/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CoreServicesRequestFailedError = exports.OAuthExchangeFailedError = exports.HttpRequestError = exports.OAuthClientError = exports.ErrorBase = void 0;
|
|
6
|
+
exports.OperationNotSupportedError = exports.CoreServicesRequestFailedError = exports.OAuthExchangeFailedError = exports.HttpRequestError = exports.OAuthClientError = exports.ErrorBase = void 0;
|
|
7
7
|
var ErrorBase_1 = require("./ErrorBase");
|
|
8
8
|
Object.defineProperty(exports, "ErrorBase", { enumerable: true, get: function () { return __importDefault(ErrorBase_1).default; } });
|
|
9
9
|
var OAuthClientError_1 = require("./OAuthClientError");
|
|
@@ -14,4 +14,6 @@ var OAuthExchangeFailedError_1 = require("./OAuthExchangeFailedError");
|
|
|
14
14
|
Object.defineProperty(exports, "OAuthExchangeFailedError", { enumerable: true, get: function () { return __importDefault(OAuthExchangeFailedError_1).default; } });
|
|
15
15
|
var CoreServicesRequestFailedError_1 = require("./CoreServicesRequestFailedError");
|
|
16
16
|
Object.defineProperty(exports, "CoreServicesRequestFailedError", { enumerable: true, get: function () { return __importDefault(CoreServicesRequestFailedError_1).default; } });
|
|
17
|
+
var OperationNotSupportedError_1 = require("./OperationNotSupportedError");
|
|
18
|
+
Object.defineProperty(exports, "OperationNotSupportedError", { enumerable: true, get: function () { return __importDefault(OperationNotSupportedError_1).default; } });
|
|
17
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../models/errors/index.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAkD;AAAzC,uHAAA,OAAO,OAAa;AAC7B,uDAAgE;AAAvD,qIAAA,OAAO,OAAoB;AACpC,uDAAgE;AAAvD,qIAAA,OAAO,OAAoB;AACpC,uEAAgF;AAAvE,qJAAA,OAAO,OAA4B;AAC5C,mFAA4F;AAAnF,iKAAA,OAAO,OAAkC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../models/errors/index.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAkD;AAAzC,uHAAA,OAAO,OAAa;AAC7B,uDAAgE;AAAvD,qIAAA,OAAO,OAAoB;AACpC,uDAAgE;AAAvD,qIAAA,OAAO,OAAoB;AACpC,uEAAgF;AAAvE,qJAAA,OAAO,OAA4B;AAC5C,mFAA4F;AAAnF,iKAAA,OAAO,OAAkC;AAClD,2EAAoF;AAA3E,yJAAA,OAAO,OAA8B"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Key } from 'aws-sdk/clients/dynamodb';
|
|
3
|
-
import { PromiseResult } from 'aws-sdk/lib/request';
|
|
4
|
-
import { DocumentClient } from 'aws-sdk/lib/dynamodb/document_client';
|
|
5
|
-
import { QueryOperation } from './utils';
|
|
1
|
+
import { DynamoDB } from 'aws-sdk';
|
|
6
2
|
declare abstract class BaseDynamoDataStorage<TEntity> {
|
|
7
3
|
protected readonly tableName: string;
|
|
8
4
|
protected abstract readonly keys: Array<keyof TEntity>;
|
|
9
5
|
protected readonly documentClient: DynamoDB.DocumentClient;
|
|
10
6
|
protected constructor(tableName: string);
|
|
11
|
-
protected
|
|
7
|
+
protected executeOperation<TResultEntity = TEntity>(operation: 'Scan' | 'Query', query: DynamoDB.DocumentClient.ScanInput): Promise<TResultEntity[]>;
|
|
12
8
|
protected getKeyPairFromModel(model: TEntity): Partial<TEntity>;
|
|
13
9
|
}
|
|
14
10
|
export default BaseDynamoDataStorage;
|
|
@@ -6,14 +6,24 @@ class BaseDynamoDataStorage {
|
|
|
6
6
|
this.tableName = tableName;
|
|
7
7
|
this.documentClient = new aws_sdk_1.DynamoDB.DocumentClient();
|
|
8
8
|
}
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
async executeOperation(operation, query) {
|
|
10
|
+
var _a;
|
|
11
|
+
const results = [];
|
|
12
|
+
let lastEvaluatedKey;
|
|
13
|
+
do {
|
|
14
|
+
const page = operation
|
|
15
|
+
? await this.documentClient
|
|
16
|
+
.scan({ ...query, ExclusiveStartKey: lastEvaluatedKey })
|
|
17
|
+
.promise()
|
|
18
|
+
: await this.documentClient
|
|
19
|
+
.query({ ...query, ExclusiveStartKey: lastEvaluatedKey })
|
|
20
|
+
.promise();
|
|
21
|
+
if ((_a = page.Items) === null || _a === void 0 ? void 0 : _a.length) {
|
|
22
|
+
results.push(...page.Items);
|
|
23
|
+
}
|
|
24
|
+
lastEvaluatedKey = page.LastEvaluatedKey;
|
|
25
|
+
} while (lastEvaluatedKey);
|
|
26
|
+
return results;
|
|
17
27
|
}
|
|
18
28
|
getKeyPairFromModel(model) {
|
|
19
29
|
const keyDictionary = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseDynamoDataStorage.js","sourceRoot":"","sources":["../../../../services/aws/dynamodb/BaseDynamoDataStorage.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"BaseDynamoDataStorage.js","sourceRoot":"","sources":["../../../../services/aws/dynamodb/BaseDynamoDataStorage.ts"],"names":[],"mappings":";;AACA,qCAAkC;AAGlC,MAAe,qBAAqB;IAKlC,YAAyC,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QACxD,IAAI,CAAC,cAAc,GAAG,IAAI,kBAAQ,CAAC,cAAc,EAAE,CAAA;IACrD,CAAC;IAES,KAAK,CAAC,gBAAgB,CAC9B,SAA2B,EAC3B,KAAwC;;QAExC,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,IAAI,gBAAgB,CAAA;QAEpB,GAAG;YACD,MAAM,IAAI,GAA+B,SAAS;gBAChD,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc;qBACtB,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;qBACvD,OAAO,EAAE;gBACd,CAAC,CAAC,MAAM,IAAI,CAAC,cAAc;qBACtB,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;qBACxD,OAAO,EAAE,CAAA;YAEhB,IAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,EAAE;gBACtB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAA;aAC5B;YAED,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAA;SACzC,QAAQ,gBAAgB,EAAC;QAE1B,OAAO,OAA0B,CAAA;IACnC,CAAC;IAES,mBAAmB,CAAC,KAAc;QAC1C,MAAM,aAAa,GAAqB,EAAE,CAAA;QAE1C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACxB,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;QACjC,CAAC,CAAC,CAAA;QAEF,OAAO,aAAa,CAAA;IACtB,CAAC;CACF;AAED,kBAAe,qBAAqB,CAAA"}
|
|
@@ -7,7 +7,8 @@ const ErrorBase_1 = __importDefault(require("../../../models/errors/ErrorBase"))
|
|
|
7
7
|
class BatchSizeTooBigError extends ErrorBase_1.default {
|
|
8
8
|
constructor() {
|
|
9
9
|
super();
|
|
10
|
-
this.message =
|
|
10
|
+
this.message =
|
|
11
|
+
'BatchSizes cannot be bigger than 24 with dynamodb write actions';
|
|
11
12
|
}
|
|
12
13
|
}
|
|
13
14
|
exports.default = BatchSizeTooBigError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BatchSizeTooBigError.js","sourceRoot":"","sources":["../../../../services/aws/dynamodb/BatchSizeTooBigError.ts"],"names":[],"mappings":";;;;;AAAA,iFAAwD;AAExD,MAAM,oBAAqB,SAAQ,mBAAS;IAC1C;QACE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"BatchSizeTooBigError.js","sourceRoot":"","sources":["../../../../services/aws/dynamodb/BatchSizeTooBigError.ts"],"names":[],"mappings":";;;;;AAAA,iFAAwD;AAExD,MAAM,oBAAqB,SAAQ,mBAAS;IAC1C;QACE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO;YACV,iEAAiE,CAAA;IACrE,CAAC;CACF;AAED,kBAAe,oBAAoB,CAAA"}
|
|
@@ -63,27 +63,22 @@ class DynamoDataStorage extends BaseDynamoDataStorage_1.default {
|
|
|
63
63
|
}, []);
|
|
64
64
|
}
|
|
65
65
|
async find(query) {
|
|
66
|
-
var _a;
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
75
|
-
lastEvaluatedKey = page.LastEvaluatedKey;
|
|
76
|
-
} while (lastEvaluatedKey);
|
|
77
|
-
return results;
|
|
66
|
+
var _a, _b;
|
|
67
|
+
const queryOp = (_b = (_a = query.queryOptions) === null || _a === void 0 ? void 0 : _a.operation) !== null && _b !== void 0 ? _b : 'Query';
|
|
68
|
+
const builderParams = { query, tableName: this.tableName, primaryKeys: this.keys };
|
|
69
|
+
const ddbQuery = queryOp === 'Scan'
|
|
70
|
+
? utils_1.QueryBuilder.buildScan(builderParams)
|
|
71
|
+
: utils_1.QueryBuilder.buildQuery(builderParams);
|
|
72
|
+
const result = await this.executeOperation(queryOp, ddbQuery);
|
|
73
|
+
return result;
|
|
78
74
|
}
|
|
79
75
|
async findOne(query) {
|
|
80
76
|
const limitedQuery = {
|
|
81
77
|
...query,
|
|
82
78
|
limit: 1,
|
|
83
79
|
};
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
return results.Items ? results.Items[0] : null;
|
|
80
|
+
const [result] = await this.find(limitedQuery);
|
|
81
|
+
return result !== null && result !== void 0 ? result : null;
|
|
87
82
|
}
|
|
88
83
|
async remove(entity) {
|
|
89
84
|
const keyPair = this.getKeyPairFromModel(entity);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamoDataStorage.js","sourceRoot":"","sources":["../../../../services/aws/dynamodb/DynamoDataStorage.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"DynamoDataStorage.js","sourceRoot":"","sources":["../../../../services/aws/dynamodb/DynamoDataStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,27 +11,27 @@ class DynamoIndexDataStorage extends BaseDynamoDataStorage_1.default {
|
|
|
11
11
|
this.indexName = indexName;
|
|
12
12
|
}
|
|
13
13
|
async find(query) {
|
|
14
|
-
var _a;
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
var _a, _b;
|
|
15
|
+
const queryOp = (_b = (_a = query.queryOptions) === null || _a === void 0 ? void 0 : _a.operation) !== null && _b !== void 0 ? _b : 'Query';
|
|
16
|
+
const builderParams = {
|
|
17
|
+
query,
|
|
18
|
+
tableName: this.tableName,
|
|
19
|
+
primaryKeys: this.keys,
|
|
20
|
+
indexName: this.indexName,
|
|
21
|
+
};
|
|
22
|
+
const ddbQuery = queryOp === 'Scan'
|
|
23
|
+
? utils_1.QueryBuilder.buildScan(builderParams)
|
|
24
|
+
: utils_1.QueryBuilder.buildQuery(builderParams);
|
|
25
|
+
const result = await this.executeOperation(queryOp, ddbQuery);
|
|
26
|
+
return result;
|
|
26
27
|
}
|
|
27
28
|
async findOne(query) {
|
|
28
29
|
const limitedQuery = {
|
|
29
30
|
...query,
|
|
30
31
|
limit: 1,
|
|
31
32
|
};
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
return results.Items ? results.Items[0] : null;
|
|
33
|
+
const [result] = await this.find(limitedQuery);
|
|
34
|
+
return result !== null && result !== void 0 ? result : null;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
37
|
exports.default = DynamoIndexDataStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamoIndexDataStorage.js","sourceRoot":"","sources":["../../../../services/aws/dynamodb/DynamoIndexDataStorage.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"DynamoIndexDataStorage.js","sourceRoot":"","sources":["../../../../services/aws/dynamodb/DynamoIndexDataStorage.ts"],"names":[],"mappings":";;;;;AAAA,oFAA2D;AAC3D,mCAAuD;AAGvD,MAAe,sBACb,SAAQ,+BAA8B;IAGtC,YACE,SAAiB,EACE,SAAiB;QAEpC,KAAK,CAAC,SAAS,CAAC,CAAA;QAFG,cAAS,GAAT,SAAS,CAAQ;IAGtC,CAAC;IAEM,KAAK,CAAC,IAAI,CACf,KAA+B;;QAE/B,MAAM,OAAO,GAAG,MAAA,MAAA,KAAK,CAAC,YAAY,0CAAE,SAAS,mCAAI,OAAO,CAAA;QACxD,MAAM,aAAa,GAAG;YACpB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,IAAI;YACtB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAA;QAED,MAAM,QAAQ,GACZ,OAAO,KAAK,MAAM;YAChB,CAAC,CAAC,oBAAY,CAAC,SAAS,CAAC,aAAa,CAAC;YACvC,CAAC,CAAC,oBAAY,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QAE5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CACxC,OAAO,EACP,QAAQ,CACT,CAAA;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAA8C;QAE9C,MAAM,YAAY,GAAG;YACnB,GAAG,KAAK;YACR,KAAK,EAAE,CAAC;SACT,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC9C,OAAO,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,IAAI,CAAA;IACvB,CAAC;CACF;AAED,kBAAe,sBAAsB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { default as QueryParameters } from './query/QueryParameters';
|
|
2
2
|
export { default as QueryWhereStatement } from './query/QueryWhereStatement';
|
|
3
|
-
export { default as QueryBuilder
|
|
3
|
+
export { default as QueryBuilder } from './query/QueryBuilder';
|
|
4
4
|
export { default as PrimaryKey } from './PrimaryKey';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../services/aws/dynamodb/utils/index.ts"],"names":[],"mappings":";;;;;;AAGA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../services/aws/dynamodb/utils/index.ts"],"names":[],"mappings":";;;;;;AAGA,qDAA8D;AAArD,6HAAA,OAAO,OAAgB"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { DynamoDB } from 'aws-sdk';
|
|
2
2
|
import QueryParameters from './QueryParameters';
|
|
3
|
-
export interface
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
export interface QueryBuilderParams<TEntity> {
|
|
4
|
+
query: QueryParameters<TEntity>;
|
|
5
|
+
tableName: string;
|
|
6
|
+
primaryKeys: Array<keyof TEntity>;
|
|
7
|
+
indexName?: string;
|
|
6
8
|
}
|
|
7
9
|
declare class QueryBuilder {
|
|
8
10
|
private static buildProjectionExpression;
|
|
@@ -11,6 +13,7 @@ declare class QueryBuilder {
|
|
|
11
13
|
private static buildQueryStatements;
|
|
12
14
|
private static buildExpression;
|
|
13
15
|
private static splitKeyAndFilterCondition;
|
|
14
|
-
static
|
|
16
|
+
static buildScan<TEntity>({ query, tableName, indexName, }: QueryBuilderParams<TEntity>): DynamoDB.DocumentClient.ScanInput;
|
|
17
|
+
static buildQuery<TEntity>({ query, primaryKeys, tableName, indexName, }: QueryBuilderParams<TEntity>): DynamoDB.DocumentClient.QueryInput;
|
|
15
18
|
}
|
|
16
19
|
export default QueryBuilder;
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const DynamoOperator_1 = __importDefault(require("../operators/DynamoOperator"));
|
|
7
|
+
const errors_1 = require("../../../../../models/errors");
|
|
7
8
|
class QueryBuilder {
|
|
8
9
|
static buildProjectionExpression(selectStatement) {
|
|
9
10
|
if (!selectStatement.length) {
|
|
@@ -64,24 +65,39 @@ class QueryBuilder {
|
|
|
64
65
|
keyCondition,
|
|
65
66
|
};
|
|
66
67
|
}
|
|
67
|
-
static
|
|
68
|
-
const { where, limit, select } = query;
|
|
68
|
+
static buildScan({ query, tableName, indexName, }) {
|
|
69
|
+
const { where, limit, select, orderDescending } = query;
|
|
70
|
+
if (orderDescending) {
|
|
71
|
+
throw new errors_1.OperationNotSupportedError(`Descending order can't be enforced when using a Scan operation as no index is being evaluated. If descending order is important to the evaluation, please consider using a Query operation instead.`);
|
|
72
|
+
}
|
|
73
|
+
const op = {
|
|
74
|
+
TableName: tableName,
|
|
75
|
+
IndexName: indexName,
|
|
76
|
+
Limit: limit,
|
|
77
|
+
ProjectionExpression: select
|
|
78
|
+
? QueryBuilder.buildProjectionExpression(select)
|
|
79
|
+
: undefined,
|
|
80
|
+
FilterExpression: this.buildExpression(where),
|
|
81
|
+
ExpressionAttributeNames: QueryBuilder.buildAttributeNames(where),
|
|
82
|
+
ExpressionAttributeValues: this.buildAttributeValues(where),
|
|
83
|
+
};
|
|
84
|
+
return op;
|
|
85
|
+
}
|
|
86
|
+
static buildQuery({ query, primaryKeys, tableName, indexName, }) {
|
|
87
|
+
const { where, limit, select, orderDescending } = query;
|
|
69
88
|
const { keyCondition, filterCondition } = this.splitKeyAndFilterCondition(where, primaryKeys);
|
|
70
|
-
const keyExpression = this.buildExpression(keyCondition);
|
|
71
89
|
const op = {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
ExpressionAttributeValues: this.buildAttributeValues(where),
|
|
84
|
-
},
|
|
90
|
+
TableName: tableName,
|
|
91
|
+
IndexName: indexName,
|
|
92
|
+
Limit: limit,
|
|
93
|
+
ScanIndexForward: !orderDescending,
|
|
94
|
+
ProjectionExpression: select
|
|
95
|
+
? QueryBuilder.buildProjectionExpression(select)
|
|
96
|
+
: undefined,
|
|
97
|
+
KeyConditionExpression: this.buildExpression(keyCondition),
|
|
98
|
+
FilterExpression: this.buildExpression(filterCondition),
|
|
99
|
+
ExpressionAttributeNames: QueryBuilder.buildAttributeNames(where),
|
|
100
|
+
ExpressionAttributeValues: this.buildAttributeValues(where),
|
|
85
101
|
};
|
|
86
102
|
console.log('Execution ddb operation', op);
|
|
87
103
|
return op;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../../../../services/aws/dynamodb/utils/query/QueryBuilder.ts"],"names":[],"mappings":";;;;;AAEA,iFAAwD;
|
|
1
|
+
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../../../../services/aws/dynamodb/utils/query/QueryBuilder.ts"],"names":[],"mappings":";;;;;AAEA,iFAAwD;AAKxD,yDAAyE;AAczE,MAAM,YAAY;IACR,MAAM,CAAC,yBAAyB,CACtC,eAAqC;QAErC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YAC3B,OAAO,SAAS,CAAA;SACjB;QAED,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,KAA+B;QAE/B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,GAAW,EAAE,EAAE;YACvD,IAAK,KAAK,CAAC,GAAoB,CAAS,YAAY,wBAAc,EAAE;gBAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAoB,CAAmB,CAAA;gBAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAChD,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CACzB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACtB,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK;iBAChD,CAAC,EACJ,EAAE,CACH,CAAA;gBAED,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,UAAU,EAAE,CAAA;aACpC;YAED,OAAO;gBACL,GAAG,MAAM;gBACT,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,GAAoB,CAAC;aACzC,CAAA;QACH,CAAC,EAAE,EAAE,CAAC,CAAA;IACR,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAChC,KAA+B;QAE/B,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAC9B,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;YACrB,GAAG,IAAI;YACP,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,UAAU;SAC/B,CAAC,EACF,EAAE,CACH,CAAA;IACH,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,cAAwC;QAExC,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC7C,IACG,cAAc,CAAC,GAAoB,CAAS,YAAY,wBAAc,EACvE;gBACA,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAoB,CAAmB,CAAA;gBACvE,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;aAC5B;YAED,OAAO,IAAI,GAAG,OAAO,GAAG,EAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,MAAM,CAAC,eAAe,CAC5B,cAAwC;QAExC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE;YACvC,OAAO,SAAS,CAAA;SACjB;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAA;QAE5D,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,KAA+B,EAC/B,WAAiC;QAEjC,MAAM,YAAY,GAA6B,EAAE,CAAA;QACjD,MAAM,eAAe,GAA6B,EAAE,CAAA;QAEpD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACjC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAoB,CAAC,EAAE;gBAC9C,YAAY,CAAC,GAAoB,CAAC,GAAG,KAAK,CAAC,GAAoB,CAAC,CAAA;aACjE;iBAAM;gBACL,eAAe,CAAC,GAAoB,CAAC,GAAG,KAAK,CAAC,GAAoB,CAAC,CAAA;aACpE;QACH,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,eAAe;YACf,YAAY;SACb,CAAA;IACH,CAAC;IAEM,MAAM,CAAC,SAAS,CAAU,EAC/B,KAAK,EACL,SAAS,EACT,SAAS,GACmB;QAC5B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAA;QAEvD,IAAI,eAAe,EAAE;YACnB,MAAM,IAAI,mCAA0B,CAClC,qMAAqM,CACtM,CAAA;SACF;QAED,MAAM,EAAE,GAAsC;YAC5C,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,KAAK;YACZ,oBAAoB,EAAE,MAAM;gBAC1B,CAAC,CAAC,YAAY,CAAC,yBAAyB,CAAC,MAAM,CAAC;gBAChD,CAAC,CAAC,SAAS;YACb,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;YAC7C,wBAAwB,EAAE,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAE/D;YACD,yBAAyB,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;SAC5D,CAAA;QAED,OAAO,EAAE,CAAA;IACX,CAAC;IAEM,MAAM,CAAC,UAAU,CAAU,EAChC,KAAK,EACL,WAAW,EACX,SAAS,EACT,SAAS,GACmB;QAC5B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,KAAK,CAAA;QACvD,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,0BAA0B,CACvE,KAAK,EACL,WAAW,CACZ,CAAA;QAED,MAAM,EAAE,GAAuC;YAC7C,SAAS,EAAE,SAAS;YACpB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,KAAK;YACZ,gBAAgB,EAAE,CAAC,eAAe;YAClC,oBAAoB,EAAE,MAAM;gBAC1B,CAAC,CAAC,YAAY,CAAC,yBAAyB,CAAC,MAAM,CAAC;gBAChD,CAAC,CAAC,SAAS;YACb,sBAAsB,EAAE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;YAC1D,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;YACvD,wBAAwB,EAAE,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAE/D;YACD,yBAAyB,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;SAC5D,CAAA;QACD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAA;QAE1C,OAAO,EAAE,CAAA;IACX,CAAC;CACF;AAED,kBAAe,YAAY,CAAA"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import WhereParameters from './QueryWhereStatement';
|
|
2
2
|
interface QueryParameters<TEntity> {
|
|
3
|
+
queryOptions?: {
|
|
4
|
+
operation?: 'Scan' | 'Query';
|
|
5
|
+
};
|
|
3
6
|
where: WhereParameters<TEntity>;
|
|
4
7
|
select?: Array<keyof TEntity>;
|
|
5
8
|
limit?: number;
|
|
9
|
+
orderDescending?: boolean;
|
|
6
10
|
}
|
|
7
11
|
export default QueryParameters;
|