lemon-core 3.1.1 → 3.2.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/README.md +3 -12
- package/dist/controllers/dummy-controller.d.ts +1 -1
- package/dist/controllers/general-api-controller.d.ts +1 -1
- package/dist/controllers/general-api-controller.js.map +1 -1
- package/dist/controllers/general-controller.d.ts +1 -1
- package/dist/cores/aws/aws-kms-service.d.ts +1 -0
- package/dist/cores/aws/aws-s3-service.d.ts +11 -2
- package/dist/cores/aws/aws-s3-service.js +2 -1
- package/dist/cores/aws/aws-s3-service.js.map +1 -1
- package/dist/cores/aws/aws-sns-service.d.ts +2 -2
- package/dist/cores/aws/aws-sns-service.js +2 -2
- package/dist/cores/cache/cache-service.js +3 -1
- package/dist/cores/cache/cache-service.js.map +1 -1
- package/dist/cores/core-services.d.ts +1 -2
- package/dist/cores/core-services.js +0 -25
- package/dist/cores/core-services.js.map +1 -1
- package/dist/cores/dynamo/dynamo-query-service.d.ts +1 -1
- package/dist/cores/dynamo/dynamo-scan-service.d.ts +1 -1
- package/dist/cores/dynamo/dynamo-service.d.ts +1 -1
- package/dist/cores/dynamo/dynamo-service.js +2 -2
- package/dist/cores/dynamo/dynamo-service.js.map +1 -1
- package/dist/cores/elastic/elastic6-query-service.d.ts +1 -1
- package/dist/cores/elastic/elastic6-service.d.ts +7 -4
- package/dist/cores/elastic/elastic6-service.js +6 -4
- package/dist/cores/elastic/elastic6-service.js.map +1 -1
- package/dist/cores/index.d.ts +1 -1
- package/dist/cores/index.js +1 -1
- package/dist/cores/index.js.map +1 -1
- package/dist/cores/lambda/lambda-cron-handler.d.ts +1 -1
- package/dist/cores/lambda/lambda-dynamo-stream-handler.d.ts +1 -1
- package/dist/cores/lambda/lambda-dynamo-stream-handler.js +1 -1
- package/dist/cores/lambda/lambda-dynamo-stream-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-handler.d.ts +2 -1
- package/dist/cores/lambda/lambda-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-notification-handler.d.ts +1 -1
- package/dist/cores/lambda/lambda-sns-handler.d.ts +1 -1
- package/dist/cores/lambda/lambda-sqs-handler.d.ts +1 -1
- package/dist/cores/lambda/lambda-web-handler.d.ts +4 -2
- package/dist/cores/lambda/lambda-web-handler.js +19 -10
- package/dist/cores/lambda/lambda-web-handler.js.map +1 -1
- package/dist/cores/protocol/protocol-service.d.ts +1 -1
- package/dist/cores/storage/http-storage-service.js +2 -2
- package/dist/cores/storage/http-storage-service.js.map +1 -1
- package/dist/cores/storage/model-manager.d.ts +2 -1
- package/dist/cores/storage/model-manager.js +3 -3
- package/dist/cores/storage/model-manager.js.map +1 -1
- package/dist/cores/storage/proxy-storage-service.d.ts +5 -73
- package/dist/cores/storage/proxy-storage-service.js +13 -13
- package/dist/cores/storage/proxy-storage-service.js.map +1 -1
- package/dist/cores/storage/redis-storage-service.js +1 -1
- package/dist/cores/storage/redis-storage-service.js.map +1 -1
- package/dist/cores/storage/storage-service.d.ts +5 -17
- package/dist/cores/storage/storage-service.js +3 -0
- package/dist/cores/storage/storage-service.js.map +1 -1
- package/dist/engine/engine.d.ts +5 -5
- package/dist/engine/engine.js +4 -4
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/utilities.js +2 -2
- package/dist/engine/utilities.js.map +1 -1
- package/dist/environ.js +1 -1
- package/dist/environ.js.map +1 -1
- package/dist/extended/abstract-service.d.ts +21 -4
- package/dist/extended/abstract-service.js +23 -8
- package/dist/extended/abstract-service.js.map +1 -1
- package/dist/helpers/helpers.d.ts +9 -10
- package/dist/helpers/helpers.js +9 -2
- package/dist/helpers/helpers.js.map +1 -1
- package/dist/tools/shared.js +1 -1
- package/dist/tools/shared.js.map +1 -1
- package/package.json +31 -30
- package/dist/cores/api-service.d.ts +0 -239
- package/dist/cores/api-service.js +0 -674
- package/dist/cores/api-service.js.map +0 -1
- package/dist/cores/cache-service.d.ts +0 -424
- package/dist/cores/cache-service.js +0 -948
- package/dist/cores/cache-service.js.map +0 -1
- package/dist/cores/core-types.d.ts +0 -398
- package/dist/cores/core-types.js +0 -15
- package/dist/cores/core-types.js.map +0 -1
- package/dist/cores/dynamo-query-service.d.ts +0 -52
- package/dist/cores/dynamo-query-service.js +0 -127
- package/dist/cores/dynamo-query-service.js.map +0 -1
- package/dist/cores/dynamo-scan-service.d.ts +0 -70
- package/dist/cores/dynamo-scan-service.js +0 -164
- package/dist/cores/dynamo-scan-service.js.map +0 -1
- package/dist/cores/dynamo-service.d.ts +0 -192
- package/dist/cores/dynamo-service.js +0 -525
- package/dist/cores/dynamo-service.js.map +0 -1
- package/dist/cores/elastic6-query-service.d.ts +0 -104
- package/dist/cores/elastic6-query-service.js +0 -510
- package/dist/cores/elastic6-query-service.js.map +0 -1
- package/dist/cores/elastic6-service.d.ts +0 -273
- package/dist/cores/elastic6-service.js +0 -903
- package/dist/cores/elastic6-service.js.map +0 -1
- package/dist/cores/hangul-service.d.ts +0 -102
- package/dist/cores/hangul-service.js +0 -205
- package/dist/cores/hangul-service.js.map +0 -1
- package/dist/cores/http-storage-service.d.ts +0 -22
- package/dist/cores/http-storage-service.js +0 -129
- package/dist/cores/http-storage-service.js.map +0 -1
- package/dist/cores/model-manager.d.ts +0 -93
- package/dist/cores/model-manager.js +0 -192
- package/dist/cores/model-manager.js.map +0 -1
- package/dist/cores/proxy-storage-service.d.ts +0 -573
- package/dist/cores/proxy-storage-service.js +0 -913
- package/dist/cores/proxy-storage-service.js.map +0 -1
- package/dist/cores/redis-storage-service.d.ts +0 -183
- package/dist/cores/redis-storage-service.js +0 -391
- package/dist/cores/redis-storage-service.js.map +0 -1
- package/dist/cores/storage-service.d.ts +0 -170
- package/dist/cores/storage-service.js +0 -389
- package/dist/cores/storage-service.js.map +0 -1
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { GeneralItem } from './core-types';
|
|
2
|
-
import { DynamoOption } from './dynamo-service';
|
|
3
|
-
interface ComparisonCondition {
|
|
4
|
-
key: string;
|
|
5
|
-
comparator: '=' | '!=' | '<=' | '<' | '>=' | '>';
|
|
6
|
-
value: number | string;
|
|
7
|
-
}
|
|
8
|
-
interface BetweenCondition {
|
|
9
|
-
key: string;
|
|
10
|
-
from: number | string;
|
|
11
|
-
to: number | string;
|
|
12
|
-
}
|
|
13
|
-
interface ExistenceCondition {
|
|
14
|
-
key: string;
|
|
15
|
-
exists: boolean;
|
|
16
|
-
}
|
|
17
|
-
interface StringCondition {
|
|
18
|
-
key: string;
|
|
19
|
-
operator: 'begins_with' | 'contains';
|
|
20
|
-
value: string;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* interface: DynamoScanFilter
|
|
24
|
-
* - for joining multiple conditions with logical AND -> Array
|
|
25
|
-
* - for joining multiple conditions with logical OR -> { or: Array }
|
|
26
|
-
*/
|
|
27
|
-
declare type Condition = ComparisonCondition | BetweenCondition | ExistenceCondition | StringCondition;
|
|
28
|
-
export declare type DynamoScanFilter = (Condition | {
|
|
29
|
-
not: Condition;
|
|
30
|
-
}) | DynamoScanFilter[] | {
|
|
31
|
-
or: DynamoScanFilter[];
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* class: DynamoScanResult
|
|
35
|
-
* - result information of scan.
|
|
36
|
-
*/
|
|
37
|
-
export interface DynamoScanResult<T> {
|
|
38
|
-
list: T[];
|
|
39
|
-
count?: number;
|
|
40
|
-
last?: any;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* feature: `DynamoSimpleScannable`
|
|
44
|
-
* - simple scan capable class.
|
|
45
|
-
*/
|
|
46
|
-
export interface DynamoSimpleScannable<T extends GeneralItem> {
|
|
47
|
-
/**
|
|
48
|
-
* simple filtered scan w/ limit.
|
|
49
|
-
*
|
|
50
|
-
* @param limit limit of page
|
|
51
|
-
* @param last the last evaluated key
|
|
52
|
-
* @param filter scan filter
|
|
53
|
-
*/
|
|
54
|
-
scan(limit?: number, last?: any, filter?: DynamoScanFilter): Promise<DynamoScanResult<T>>;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* class: `DynamoScanService`
|
|
58
|
-
* - support simple scan like range scan.
|
|
59
|
-
*/
|
|
60
|
-
export declare class DynamoScanService<T extends GeneralItem> implements DynamoSimpleScannable<T> {
|
|
61
|
-
protected options: DynamoOption;
|
|
62
|
-
constructor(options: DynamoOption);
|
|
63
|
-
/**
|
|
64
|
-
* say hello of identity.
|
|
65
|
-
*/
|
|
66
|
-
hello: () => string;
|
|
67
|
-
scan(limit?: number, last?: any, filter?: DynamoScanFilter): Promise<DynamoScanResult<T>>;
|
|
68
|
-
private buildPayload;
|
|
69
|
-
}
|
|
70
|
-
export {};
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.DynamoScanService = void 0;
|
|
16
|
-
/**
|
|
17
|
-
* `dynamo-scan-service.ts`
|
|
18
|
-
* - common service to scan with filters+sort via dynamo
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* @author Tim Hong <tim@lemoncloud.io>
|
|
22
|
-
* @date 2020-01-20 initial version
|
|
23
|
-
*
|
|
24
|
-
* @copyright (C) 2020 LemonCloud Co Ltd. - All Rights Reserved.
|
|
25
|
-
*/
|
|
26
|
-
const engine_1 = require("../engine/");
|
|
27
|
-
const dynamo_service_1 = require("./dynamo-service");
|
|
28
|
-
const NS = engine_1.$U.NS('DSCN', 'green'); // NAMESPACE TO BE PRINTED.
|
|
29
|
-
function isComparisonCondition(c) {
|
|
30
|
-
return 'comparator' in c;
|
|
31
|
-
}
|
|
32
|
-
function isBetweenCondition(c) {
|
|
33
|
-
return 'from' in c && 'to' in c;
|
|
34
|
-
}
|
|
35
|
-
function isExistenceCondition(c) {
|
|
36
|
-
return 'exists' in c;
|
|
37
|
-
}
|
|
38
|
-
function isStringCondition(c) {
|
|
39
|
-
return 'operator' in c;
|
|
40
|
-
}
|
|
41
|
-
/** ****************************************************************************************************************
|
|
42
|
-
* Service Main
|
|
43
|
-
** ****************************************************************************************************************/
|
|
44
|
-
const scan_1 = __importDefault(require("../lib/dynamo/scan"));
|
|
45
|
-
const serializer_1 = __importDefault(require("../lib/dynamo/serializer"));
|
|
46
|
-
/**
|
|
47
|
-
* class: `DynamoScanService`
|
|
48
|
-
* - support simple scan like range scan.
|
|
49
|
-
*/
|
|
50
|
-
class DynamoScanService {
|
|
51
|
-
constructor(options) {
|
|
52
|
-
/**
|
|
53
|
-
* say hello of identity.
|
|
54
|
-
*/
|
|
55
|
-
this.hello = () => `dynamo-scan-service:${this.options.tableName}`;
|
|
56
|
-
// eslint-disable-next-line prettier/prettier
|
|
57
|
-
(0, engine_1._inf)(NS, `DynamoScanService(${options.tableName}/${options.idName}${options.sortName ? '/' : ''}${options.sortName || ''})...`);
|
|
58
|
-
if (!options.tableName)
|
|
59
|
-
throw new Error('.tableName is required');
|
|
60
|
-
if (!options.idName)
|
|
61
|
-
throw new Error('.idName is required');
|
|
62
|
-
this.options = options;
|
|
63
|
-
}
|
|
64
|
-
scan(limit, last, filter) {
|
|
65
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
-
(0, engine_1._log)(NS, `scan()...`);
|
|
67
|
-
//! build scan input payload
|
|
68
|
-
const payload = this.buildPayload(limit, last, filter);
|
|
69
|
-
(0, engine_1._log)(NS, `> payload =`, engine_1.$U.json(payload));
|
|
70
|
-
//! get instance of dynamodoc, and execute query().
|
|
71
|
-
const { dynamodoc } = dynamo_service_1.DynamoService.instance();
|
|
72
|
-
const res = yield dynamodoc.scan(payload).promise();
|
|
73
|
-
(0, engine_1._log)(NS, `> scan.res =`, engine_1.$U.json(res));
|
|
74
|
-
const items = res.Items || [];
|
|
75
|
-
const count = res.Count;
|
|
76
|
-
const scannedCount = res.ScannedCount;
|
|
77
|
-
const $lek = res.LastEvaluatedKey || {};
|
|
78
|
-
(0, engine_1._log)(NS, `> scan.items.len =`, items.length);
|
|
79
|
-
(0, engine_1._log)(NS, `> scan.count =`, count);
|
|
80
|
-
(0, engine_1._log)(NS, `> scan.scannedCount =`, scannedCount);
|
|
81
|
-
(0, engine_1._log)(NS, `> scan.last =`, $lek);
|
|
82
|
-
//! return result-set
|
|
83
|
-
return {
|
|
84
|
-
list: items,
|
|
85
|
-
count,
|
|
86
|
-
last: $lek,
|
|
87
|
-
};
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
buildPayload(limit, last, filter) {
|
|
91
|
-
const { tableName, idName, sortName } = this.options;
|
|
92
|
-
const scan = new scan_1.default({ schema: { hashKey: idName, rangeKey: sortName }, tableName: () => tableName }, serializer_1.default);
|
|
93
|
-
// Limit & Last
|
|
94
|
-
if (limit > 0)
|
|
95
|
-
scan.limit(limit);
|
|
96
|
-
if (last)
|
|
97
|
-
scan.startKey(last[this.options.idName], last[this.options.sortName]);
|
|
98
|
-
// Filter
|
|
99
|
-
if (filter) {
|
|
100
|
-
const expAttrNames = {};
|
|
101
|
-
const expAttrValues = {};
|
|
102
|
-
const asFilterExpression = (filter) => {
|
|
103
|
-
const asAttrName = (key) => {
|
|
104
|
-
const attrNameVar = `#${key}`;
|
|
105
|
-
expAttrNames[attrNameVar] = key;
|
|
106
|
-
return attrNameVar;
|
|
107
|
-
};
|
|
108
|
-
const asAttrValue = (key, value) => {
|
|
109
|
-
const attrValueVar = (function () {
|
|
110
|
-
for (let i = 0;; i++) {
|
|
111
|
-
const valueVar = `:${key}${i}`;
|
|
112
|
-
if (!(valueVar in expAttrValues))
|
|
113
|
-
return valueVar;
|
|
114
|
-
}
|
|
115
|
-
})();
|
|
116
|
-
expAttrValues[attrValueVar] = value;
|
|
117
|
-
return attrValueVar;
|
|
118
|
-
};
|
|
119
|
-
if (Array.isArray(filter)) {
|
|
120
|
-
return `(${filter.map(asFilterExpression).join(' AND ')})`;
|
|
121
|
-
}
|
|
122
|
-
else if ('or' in filter && Array.isArray(filter.or)) {
|
|
123
|
-
return `(${filter.or.map(asFilterExpression).join(' OR ')})`;
|
|
124
|
-
}
|
|
125
|
-
else if ('not' in filter) {
|
|
126
|
-
return `NOT ${asFilterExpression(filter.not)}`;
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
const cond = filter;
|
|
130
|
-
if (isComparisonCondition(cond)) {
|
|
131
|
-
const [name, value] = [asAttrName(cond.key), asAttrValue(cond.key, cond.value)];
|
|
132
|
-
return cond.comparator === '!='
|
|
133
|
-
? `NOT ${name} = ${value}`
|
|
134
|
-
: `${name} ${cond.comparator} ${value}`;
|
|
135
|
-
}
|
|
136
|
-
else if (isBetweenCondition(cond)) {
|
|
137
|
-
const [name, from, to] = [
|
|
138
|
-
asAttrName(cond.key),
|
|
139
|
-
asAttrValue(cond.key, cond.from),
|
|
140
|
-
asAttrValue(cond.key, cond.to),
|
|
141
|
-
];
|
|
142
|
-
return `${name} BETWEEN ${from} AND ${to}`;
|
|
143
|
-
}
|
|
144
|
-
else if (isExistenceCondition(cond)) {
|
|
145
|
-
const name = asAttrName(cond.key);
|
|
146
|
-
return cond.exists ? `attribute_exists(${name})` : `attribute_not_exists(${name})`;
|
|
147
|
-
}
|
|
148
|
-
else if (isStringCondition(cond)) {
|
|
149
|
-
const [name, value] = [asAttrName(cond.key), asAttrValue(cond.key, cond.value)];
|
|
150
|
-
return `${cond.operator}(${name}, ${value})`;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
scan.filterExpression(asFilterExpression(filter));
|
|
155
|
-
if (Object.keys(expAttrNames).length)
|
|
156
|
-
scan.expressionAttributeNames(expAttrNames);
|
|
157
|
-
if (Object.keys(expAttrValues).length)
|
|
158
|
-
scan.expressionAttributeValues(expAttrValues);
|
|
159
|
-
}
|
|
160
|
-
return scan.buildRequest();
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
exports.DynamoScanService = DynamoScanService;
|
|
164
|
-
//# sourceMappingURL=dynamo-scan-service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dynamo-scan-service.js","sourceRoot":"","sources":["../../src/cores/dynamo-scan-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { GeneralItem, Incrementable } from './core-types';
|
|
2
|
-
import AWS from 'aws-sdk';
|
|
3
|
-
export declare type KEY_TYPE = 'number' | 'string';
|
|
4
|
-
export interface DynamoOption {
|
|
5
|
-
tableName: string;
|
|
6
|
-
idName: string;
|
|
7
|
-
sortName?: string;
|
|
8
|
-
idType?: KEY_TYPE;
|
|
9
|
-
sortType?: KEY_TYPE;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* type `Updatable`: parameter for updateItem
|
|
13
|
-
* - update field
|
|
14
|
-
* - 'setIndex': array of [index, value] - replace elements in list field
|
|
15
|
-
* - 'removeIndex': array of indices - remove elements from list field
|
|
16
|
-
*/
|
|
17
|
-
export interface Updatable {
|
|
18
|
-
[key: string]: GeneralItem['key'] | {
|
|
19
|
-
setIndex: [number, string | number][];
|
|
20
|
-
} | {
|
|
21
|
-
removeIndex: number[];
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* class: `DynamoService`
|
|
26
|
-
* - basic CRUD service for AWS DynamoDB.
|
|
27
|
-
*/
|
|
28
|
-
export declare class DynamoService<T extends GeneralItem> {
|
|
29
|
-
protected options: DynamoOption;
|
|
30
|
-
constructor(options: DynamoOption);
|
|
31
|
-
/**
|
|
32
|
-
* say hello of identity.
|
|
33
|
-
*/
|
|
34
|
-
hello: () => string;
|
|
35
|
-
/**
|
|
36
|
-
* simple instance maker.
|
|
37
|
-
* @param region (default as `ap-northeast-2`)
|
|
38
|
-
*/
|
|
39
|
-
static instance(region?: string): {
|
|
40
|
-
dynamo: AWS.DynamoDB;
|
|
41
|
-
dynamostr: AWS.DynamoDBStreams;
|
|
42
|
-
dynamodoc: AWS.DynamoDB.DocumentClient;
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
* export to test..
|
|
46
|
-
*/
|
|
47
|
-
static normalize: (data: any) => any;
|
|
48
|
-
/**
|
|
49
|
-
* prepare `CreateTable` payload.
|
|
50
|
-
*
|
|
51
|
-
* @param ReadCapacityUnits
|
|
52
|
-
* @param WriteCapacityUnits
|
|
53
|
-
* @param StreamEnabled
|
|
54
|
-
*/
|
|
55
|
-
prepareCreateTable(ReadCapacityUnits?: number, WriteCapacityUnits?: number, StreamEnabled?: boolean): {
|
|
56
|
-
TableName: string;
|
|
57
|
-
KeySchema: {
|
|
58
|
-
AttributeName: string;
|
|
59
|
-
KeyType: string;
|
|
60
|
-
}[];
|
|
61
|
-
AttributeDefinitions: {
|
|
62
|
-
AttributeName: string;
|
|
63
|
-
AttributeType: any;
|
|
64
|
-
}[];
|
|
65
|
-
ProvisionedThroughput: {
|
|
66
|
-
ReadCapacityUnits: number;
|
|
67
|
-
WriteCapacityUnits: number;
|
|
68
|
-
};
|
|
69
|
-
StreamSpecification: {
|
|
70
|
-
StreamEnabled: boolean;
|
|
71
|
-
StreamViewType: string;
|
|
72
|
-
};
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* prepare `DeleteTable` payload.
|
|
76
|
-
*/
|
|
77
|
-
prepareDeleteTable(): {
|
|
78
|
-
TableName: string;
|
|
79
|
-
};
|
|
80
|
-
/**
|
|
81
|
-
* prepare `SaveItem` payload.
|
|
82
|
-
*
|
|
83
|
-
* @param id partition-key
|
|
84
|
-
* @param item
|
|
85
|
-
*/
|
|
86
|
-
prepareSaveItem(id: string, item: T): {
|
|
87
|
-
TableName: string;
|
|
88
|
-
Item: any;
|
|
89
|
-
};
|
|
90
|
-
/**
|
|
91
|
-
* prepare `Key` by id + sort key.
|
|
92
|
-
*
|
|
93
|
-
* @param id partition-key
|
|
94
|
-
* @param sort sort-key
|
|
95
|
-
*/
|
|
96
|
-
prepareItemKey(id: string, sort: any): {
|
|
97
|
-
TableName: string;
|
|
98
|
-
Key: {
|
|
99
|
-
[x: string]: string;
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
/**
|
|
103
|
-
* prepare `UpdateItem` payload.
|
|
104
|
-
*
|
|
105
|
-
* @param id partition-key
|
|
106
|
-
* @param sort sort-key
|
|
107
|
-
* @param $update update set
|
|
108
|
-
* @param $increment increment set.
|
|
109
|
-
*/
|
|
110
|
-
prepareUpdateItem(id: string, sort: any, $update: Updatable, $increment?: Incrementable): any;
|
|
111
|
-
/**
|
|
112
|
-
* create-table
|
|
113
|
-
*
|
|
114
|
-
* @param ReadCapacityUnits
|
|
115
|
-
* @param WriteCapacityUnits
|
|
116
|
-
*/
|
|
117
|
-
createTable(ReadCapacityUnits?: number, WriteCapacityUnits?: number): Promise<import("aws-sdk/lib/request").PromiseResult<AWS.DynamoDB.CreateTableOutput, AWS.AWSError>>;
|
|
118
|
-
/**
|
|
119
|
-
* delete-table
|
|
120
|
-
*
|
|
121
|
-
*/
|
|
122
|
-
deleteTable(): Promise<import("aws-sdk/lib/request").PromiseResult<AWS.DynamoDB.DeleteTableOutput, AWS.AWSError>>;
|
|
123
|
-
/**
|
|
124
|
-
* read-item
|
|
125
|
-
* - read whole data of item.
|
|
126
|
-
*
|
|
127
|
-
* @param id
|
|
128
|
-
* @param sort
|
|
129
|
-
*/
|
|
130
|
-
readItem(id: string, sort?: string | number): Promise<T>;
|
|
131
|
-
/**
|
|
132
|
-
* save-item
|
|
133
|
-
* - save whole data with param (use update if partial save)
|
|
134
|
-
*
|
|
135
|
-
* **WARN** overwrited if exists.
|
|
136
|
-
*
|
|
137
|
-
* @param id
|
|
138
|
-
* @param item
|
|
139
|
-
*/
|
|
140
|
-
saveItem(id: string, item: T): Promise<T>;
|
|
141
|
-
/**
|
|
142
|
-
* delete-item
|
|
143
|
-
* - destroy whole data of item.
|
|
144
|
-
*
|
|
145
|
-
* @param id
|
|
146
|
-
* @param sort
|
|
147
|
-
*/
|
|
148
|
-
deleteItem(id: string, sort?: string | number): Promise<T>;
|
|
149
|
-
/**
|
|
150
|
-
* update-item (or increment-item)
|
|
151
|
-
* - update or create if not exists.
|
|
152
|
-
*
|
|
153
|
-
* @param id
|
|
154
|
-
* @param sort
|
|
155
|
-
* @param updates
|
|
156
|
-
* @param increments
|
|
157
|
-
*/
|
|
158
|
-
updateItem(id: string, sort: string | number, updates: Updatable, increments?: Incrementable): Promise<T>;
|
|
159
|
-
}
|
|
160
|
-
/** ****************************************************************************************************************
|
|
161
|
-
* Dummy Dynamo Service
|
|
162
|
-
** ****************************************************************************************************************/
|
|
163
|
-
/**
|
|
164
|
-
* class: `DummyDynamoService`
|
|
165
|
-
* - service in-memory dummy data
|
|
166
|
-
*/
|
|
167
|
-
export declare class DummyDynamoService<T extends GeneralItem> extends DynamoService<T> {
|
|
168
|
-
constructor(dataFile: string, options: DynamoOption);
|
|
169
|
-
private buffer;
|
|
170
|
-
load(data: T[]): void;
|
|
171
|
-
/**
|
|
172
|
-
* say hello()
|
|
173
|
-
*/
|
|
174
|
-
hello: () => string;
|
|
175
|
-
/**
|
|
176
|
-
* ONLY FOR DUMMY
|
|
177
|
-
* - send list of data.
|
|
178
|
-
*
|
|
179
|
-
* @param page page number starts from 1
|
|
180
|
-
* @param limit limit of count.
|
|
181
|
-
*/
|
|
182
|
-
listItems(page?: number, limit?: number): Promise<{
|
|
183
|
-
page: number;
|
|
184
|
-
limit: number;
|
|
185
|
-
total: number;
|
|
186
|
-
list: T[];
|
|
187
|
-
}>;
|
|
188
|
-
readItem(id: string, sort?: string | number): Promise<T>;
|
|
189
|
-
saveItem(id: string, item: T): Promise<T>;
|
|
190
|
-
deleteItem(id: string, sort?: string | number): Promise<T>;
|
|
191
|
-
updateItem(id: string, sort: string | number, updates: T, increments?: Incrementable): Promise<T>;
|
|
192
|
-
}
|