lemon-core 3.0.0 → 3.1.1
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 +13 -21
- package/dist/common/test-helper.js +19 -11
- package/dist/common/test-helper.js.map +1 -1
- package/dist/controllers/dummy-controller.d.ts +1 -1
- package/dist/controllers/dummy-controller.js +2 -2
- package/dist/controllers/dummy-controller.js.map +1 -1
- package/dist/controllers/general-api-controller.d.ts +1 -1
- package/dist/controllers/general-api-controller.js +5 -5
- package/dist/controllers/general-api-controller.js.map +1 -1
- package/dist/controllers/general-controller.js +2 -1
- package/dist/controllers/general-controller.js.map +1 -1
- package/dist/controllers/index.js +6 -2
- package/dist/controllers/index.js.map +1 -1
- package/dist/cores/api/api-service.d.ts +239 -0
- package/dist/cores/api/api-service.js +674 -0
- package/dist/cores/api/api-service.js.map +1 -0
- package/dist/cores/api/index.d.ts +10 -0
- package/dist/cores/api/index.js +27 -0
- package/dist/cores/api/index.js.map +1 -0
- package/dist/cores/api-service.js +19 -18
- package/dist/cores/api-service.js.map +1 -1
- package/dist/cores/aws/aws-kms-service.d.ts +53 -2
- package/dist/cores/aws/aws-kms-service.js +112 -29
- package/dist/cores/aws/aws-kms-service.js.map +1 -1
- package/dist/cores/aws/aws-s3-service.js +19 -18
- package/dist/cores/aws/aws-s3-service.js.map +1 -1
- package/dist/cores/aws/aws-sns-service.js +10 -10
- package/dist/cores/aws/aws-sns-service.js.map +1 -1
- package/dist/cores/aws/aws-sqs-service.js +12 -12
- package/dist/cores/aws/aws-sqs-service.js.map +1 -1
- package/dist/cores/aws/index.js +1 -1
- package/dist/cores/cache/cache-service.d.ts +440 -0
- package/dist/cores/cache/cache-service.js +967 -0
- package/dist/cores/cache/cache-service.js.map +1 -0
- package/dist/cores/cache/index.d.ts +10 -0
- package/dist/cores/cache/index.js +27 -0
- package/dist/cores/cache/index.js.map +1 -0
- package/dist/cores/cache-service.d.ts +54 -18
- package/dist/cores/cache-service.js +56 -45
- package/dist/cores/cache-service.js.map +1 -1
- package/dist/cores/config/config-service.js +11 -10
- package/dist/cores/config/config-service.js.map +1 -1
- package/dist/cores/core-services.js +6 -2
- package/dist/cores/core-services.js.map +1 -1
- package/dist/cores/core-types.d.ts +42 -12
- package/dist/cores/dynamo/dynamo-query-service.d.ts +52 -0
- package/dist/cores/dynamo/dynamo-query-service.js +127 -0
- package/dist/cores/dynamo/dynamo-query-service.js.map +1 -0
- package/dist/cores/dynamo/dynamo-scan-service.d.ts +70 -0
- package/dist/cores/dynamo/dynamo-scan-service.js +164 -0
- package/dist/cores/dynamo/dynamo-scan-service.js.map +1 -0
- package/dist/cores/dynamo/dynamo-service.d.ts +192 -0
- package/dist/cores/dynamo/dynamo-service.js +525 -0
- package/dist/cores/dynamo/dynamo-service.js.map +1 -0
- package/dist/cores/dynamo/index.d.ts +12 -0
- package/dist/cores/dynamo/index.js +29 -0
- package/dist/cores/dynamo/index.js.map +1 -0
- package/dist/cores/dynamo-query-service.js +7 -7
- package/dist/cores/dynamo-query-service.js.map +1 -1
- package/dist/cores/dynamo-scan-service.js +8 -8
- package/dist/cores/dynamo-scan-service.js.map +1 -1
- package/dist/cores/dynamo-service.js +19 -19
- package/dist/cores/dynamo-service.js.map +1 -1
- package/dist/cores/elastic/elastic6-query-service.d.ts +104 -0
- package/dist/cores/elastic/elastic6-query-service.js +510 -0
- package/dist/cores/elastic/elastic6-query-service.js.map +1 -0
- package/dist/cores/elastic/elastic6-service.d.ts +273 -0
- package/dist/cores/elastic/elastic6-service.js +903 -0
- package/dist/cores/elastic/elastic6-service.js.map +1 -0
- package/dist/cores/elastic/hangul-service.d.ts +102 -0
- package/dist/cores/elastic/hangul-service.js +205 -0
- package/dist/cores/elastic/hangul-service.js.map +1 -0
- package/dist/cores/elastic/index.d.ts +12 -0
- package/dist/cores/elastic/index.js +29 -0
- package/dist/cores/elastic/index.js.map +1 -0
- package/dist/cores/elastic6-query-service.js +7 -7
- package/dist/cores/elastic6-query-service.js.map +1 -1
- package/dist/cores/elastic6-service.js +57 -65
- package/dist/cores/elastic6-service.js.map +1 -1
- package/dist/cores/hangul-service.d.ts +17 -3
- package/dist/cores/hangul-service.js +17 -8
- package/dist/cores/hangul-service.js.map +1 -1
- package/dist/cores/http-storage-service.js +1 -1
- package/dist/cores/http-storage-service.js.map +1 -1
- package/dist/cores/index.d.ts +9 -15
- package/dist/cores/index.js +14 -15
- package/dist/cores/index.js.map +1 -1
- package/dist/cores/lambda/index.js +8 -4
- package/dist/cores/lambda/index.js.map +1 -1
- package/dist/cores/lambda/lambda-cognito-handler.js +2 -2
- package/dist/cores/lambda/lambda-cognito-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-cron-handler.js +2 -2
- package/dist/cores/lambda/lambda-cron-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-dynamo-stream-handler.d.ts +2 -2
- package/dist/cores/lambda/lambda-dynamo-stream-handler.js +20 -20
- package/dist/cores/lambda/lambda-dynamo-stream-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-handler.js +12 -11
- package/dist/cores/lambda/lambda-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-notification-handler.js +10 -10
- package/dist/cores/lambda/lambda-notification-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-sns-handler.js +13 -13
- package/dist/cores/lambda/lambda-sns-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-sqs-handler.js +13 -13
- package/dist/cores/lambda/lambda-sqs-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-web-handler.d.ts +158 -8
- package/dist/cores/lambda/lambda-web-handler.js +330 -119
- package/dist/cores/lambda/lambda-web-handler.js.map +1 -1
- package/dist/cores/lambda/lambda-wss-handler.js +16 -12
- package/dist/cores/lambda/lambda-wss-handler.js.map +1 -1
- package/dist/cores/model-manager.js +11 -11
- package/dist/cores/model-manager.js.map +1 -1
- package/dist/cores/protocol/protocol-service.d.ts +4 -0
- package/dist/cores/protocol/protocol-service.js +46 -40
- package/dist/cores/protocol/protocol-service.js.map +1 -1
- package/dist/cores/proxy-storage-service.js +7 -10
- package/dist/cores/proxy-storage-service.js.map +1 -1
- package/dist/cores/redis-storage-service.js +13 -13
- package/dist/cores/redis-storage-service.js.map +1 -1
- package/dist/cores/storage/http-storage-service.d.ts +22 -0
- package/dist/cores/storage/http-storage-service.js +129 -0
- package/dist/cores/storage/http-storage-service.js.map +1 -0
- package/dist/cores/storage/index.d.ts +14 -0
- package/dist/cores/storage/index.js +31 -0
- package/dist/cores/storage/index.js.map +1 -0
- package/dist/cores/storage/model-manager.d.ts +93 -0
- package/dist/cores/storage/model-manager.js +192 -0
- package/dist/cores/storage/model-manager.js.map +1 -0
- package/dist/cores/storage/proxy-storage-service.d.ts +573 -0
- package/dist/cores/storage/proxy-storage-service.js +913 -0
- package/dist/cores/storage/proxy-storage-service.js.map +1 -0
- package/dist/cores/storage/redis-storage-service.d.ts +183 -0
- package/dist/cores/storage/redis-storage-service.js +391 -0
- package/dist/cores/storage/redis-storage-service.js.map +1 -0
- package/dist/cores/storage/storage-service.d.ts +169 -0
- package/dist/cores/storage/storage-service.js +374 -0
- package/dist/cores/storage/storage-service.js.map +1 -0
- package/dist/cores/storage-service.d.ts +1 -1
- package/dist/cores/storage-service.js +10 -8
- package/dist/cores/storage-service.js.map +1 -1
- package/dist/engine/builder.js +27 -20
- package/dist/engine/builder.js.map +1 -1
- package/dist/engine/engine.js +53 -44
- package/dist/engine/engine.js.map +1 -1
- package/dist/engine/index.js +8 -4
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/utilities.d.ts +4 -3
- package/dist/engine/utilities.js +32 -37
- package/dist/engine/utilities.js.map +1 -1
- package/dist/environ.d.ts +2 -2
- package/dist/environ.js +20 -10
- package/dist/environ.js.map +1 -1
- package/dist/exec-cli.js +26 -26
- package/dist/exec-cli.js.map +1 -1
- package/dist/extended/abstract-service.d.ts +533 -0
- package/dist/extended/abstract-service.js +915 -0
- package/dist/extended/abstract-service.js.map +1 -0
- package/dist/extended/index.d.ts +10 -0
- package/dist/extended/index.js +27 -0
- package/dist/extended/index.js.map +1 -0
- package/dist/helpers/helpers.d.ts +273 -0
- package/dist/helpers/helpers.js +613 -0
- package/dist/helpers/helpers.js.map +1 -0
- package/dist/helpers/index.d.ts +10 -0
- package/dist/helpers/index.js +27 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/index.d.ts +7 -5
- package/dist/index.js +11 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/dynamo/expressions.js +35 -27
- package/dist/lib/dynamo/expressions.js.map +1 -1
- package/dist/lib/dynamo/query.js +24 -20
- package/dist/lib/dynamo/query.js.map +1 -1
- package/dist/lib/dynamo/scan.js +17 -13
- package/dist/lib/dynamo/scan.js.map +1 -1
- package/dist/lib/dynamo/serializer.js +11 -7
- package/dist/lib/dynamo/serializer.js.map +1 -1
- package/dist/lib/dynamo/utils.js +19 -14
- package/dist/lib/dynamo/utils.js.map +1 -1
- package/dist/lib/dynamodb-value.js +3 -3
- package/dist/lib/dynamodb-value.js.map +1 -1
- package/dist/lib/index.js +6 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/tools/express.js +21 -15
- package/dist/tools/express.js.map +1 -1
- package/dist/tools/index.js +6 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/shared.js +12 -6
- package/dist/tools/shared.js.map +1 -1
- package/package.json +16 -15
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* only for type information for internal partition-key.
|
|
3
|
+
*/
|
|
4
|
+
export interface InternalKey {
|
|
5
|
+
_id?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* use shared `NoSQL` data storage. (ex: DynamoDB, MongoDB, ...)
|
|
9
|
+
* - use `key-value` simple storage service.
|
|
10
|
+
* - `no-search`: need to support 'search' function. (but scan)
|
|
11
|
+
*/
|
|
12
|
+
export interface StorageModel extends InternalKey {
|
|
13
|
+
id?: string;
|
|
14
|
+
type?: string;
|
|
15
|
+
stereo?: string;
|
|
16
|
+
meta?: string | any;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Abstract Concept of `StorageService`
|
|
20
|
+
* - simplified `storage-service` for `NoSQL` data.
|
|
21
|
+
*/
|
|
22
|
+
export interface StorageService<T extends StorageModel> {
|
|
23
|
+
/**
|
|
24
|
+
* say hello(name)
|
|
25
|
+
*
|
|
26
|
+
* @returns simple service name like `storage-service:${name}`
|
|
27
|
+
*/
|
|
28
|
+
hello(): string;
|
|
29
|
+
/**
|
|
30
|
+
* read (or error `404 NOT FOUND - id:...`)
|
|
31
|
+
*
|
|
32
|
+
* @param id unique-id
|
|
33
|
+
*/
|
|
34
|
+
read(id: string): Promise<T>;
|
|
35
|
+
/**
|
|
36
|
+
* read or create if not-found.
|
|
37
|
+
*
|
|
38
|
+
* @param id unique-id
|
|
39
|
+
* @param model auto creation if not-found.
|
|
40
|
+
*/
|
|
41
|
+
readOrCreate(id: string, model: T): Promise<T>;
|
|
42
|
+
/**
|
|
43
|
+
* save (or create) of model.
|
|
44
|
+
* - WARN! overwrite if exists
|
|
45
|
+
*
|
|
46
|
+
* @param id unique-id
|
|
47
|
+
* @param model data.
|
|
48
|
+
*/
|
|
49
|
+
save(id: string, model: T): Promise<T>;
|
|
50
|
+
/**
|
|
51
|
+
* update some attributes of model
|
|
52
|
+
* - NOTE! it will create if not exist.
|
|
53
|
+
*
|
|
54
|
+
* @param id unique-id
|
|
55
|
+
* @param model data
|
|
56
|
+
* @param incrementals (optional) incrementals like `count = count + 1`
|
|
57
|
+
*/
|
|
58
|
+
update(id: string, model: T, incrementals?: T): Promise<T>;
|
|
59
|
+
/**
|
|
60
|
+
* increment number attribute (or overwrite string field)
|
|
61
|
+
* - NOTE! increments only number type.
|
|
62
|
+
*
|
|
63
|
+
* @param id unique-id
|
|
64
|
+
* @param model data (ONLY number is supportable)
|
|
65
|
+
* @param $update (optional) update-set.
|
|
66
|
+
*/
|
|
67
|
+
increment(id: string, model: T, $update?: T): Promise<T>;
|
|
68
|
+
/**
|
|
69
|
+
* delete item by id
|
|
70
|
+
*
|
|
71
|
+
* @param id unique-id
|
|
72
|
+
*/
|
|
73
|
+
delete(id: string): Promise<T>;
|
|
74
|
+
}
|
|
75
|
+
import { KEY_TYPE } from '../dynamo/';
|
|
76
|
+
/**
|
|
77
|
+
* class: `DynamoStorageService`
|
|
78
|
+
* - service via DynamoDB with id + json data.
|
|
79
|
+
*/
|
|
80
|
+
export declare class DynamoStorageService<T extends StorageModel> implements StorageService<T> {
|
|
81
|
+
private _table;
|
|
82
|
+
private _idName;
|
|
83
|
+
private _fields;
|
|
84
|
+
private $dynamo;
|
|
85
|
+
constructor(table: string, fields: string[], idName?: string, idType?: KEY_TYPE);
|
|
86
|
+
/**
|
|
87
|
+
* say hello()
|
|
88
|
+
* @param name (optional) given name
|
|
89
|
+
*/
|
|
90
|
+
hello: () => string;
|
|
91
|
+
/**
|
|
92
|
+
* (extended) get copy of fields.
|
|
93
|
+
*/
|
|
94
|
+
fields: () => string[];
|
|
95
|
+
/**
|
|
96
|
+
* Read whole model via database.
|
|
97
|
+
*
|
|
98
|
+
* @param id id
|
|
99
|
+
*/
|
|
100
|
+
read(id: string): Promise<T>;
|
|
101
|
+
/**
|
|
102
|
+
* auto-create if not found.
|
|
103
|
+
*
|
|
104
|
+
* @param id
|
|
105
|
+
* @param model
|
|
106
|
+
*/
|
|
107
|
+
readOrCreate(id: string, model: T): Promise<T>;
|
|
108
|
+
/**
|
|
109
|
+
* simply save(or overwrite) all model
|
|
110
|
+
*
|
|
111
|
+
* @param id id
|
|
112
|
+
* @param model whole object.
|
|
113
|
+
*/
|
|
114
|
+
save(id: string, model: T): Promise<T>;
|
|
115
|
+
/**
|
|
116
|
+
* update some attributes
|
|
117
|
+
*
|
|
118
|
+
* @param id id
|
|
119
|
+
* @param model attributes to update
|
|
120
|
+
* @param incrementals (optional) attributes to increment
|
|
121
|
+
*/
|
|
122
|
+
update(id: string, model: T, incrementals?: T): Promise<T>;
|
|
123
|
+
/**
|
|
124
|
+
* increment number attribute (or overwrite string field)
|
|
125
|
+
* - if not exists, then just update property with base zero 0.
|
|
126
|
+
*
|
|
127
|
+
* @param id id
|
|
128
|
+
* @param model attributes of number.
|
|
129
|
+
* @param $update (optional) update-set.
|
|
130
|
+
*/
|
|
131
|
+
increment(id: string, model: T, $update?: T): Promise<T>;
|
|
132
|
+
/**
|
|
133
|
+
* delete set.
|
|
134
|
+
* - if not exists, then just update property with base zero 0.
|
|
135
|
+
*
|
|
136
|
+
* @param id id
|
|
137
|
+
*/
|
|
138
|
+
delete(id: string): Promise<T>;
|
|
139
|
+
}
|
|
140
|
+
/** ****************************************************************************************************************
|
|
141
|
+
* Dummy Data Service
|
|
142
|
+
** ****************************************************************************************************************/
|
|
143
|
+
/**
|
|
144
|
+
* class: `DummyStorageService`
|
|
145
|
+
* - service in-memory dummy data
|
|
146
|
+
*
|
|
147
|
+
* **NOTE**
|
|
148
|
+
* - this dummy service should be replaceable with real service `DynamoStorageService`
|
|
149
|
+
*/
|
|
150
|
+
export declare class DummyStorageService<T extends StorageModel> implements StorageService<T> {
|
|
151
|
+
private name;
|
|
152
|
+
private idName;
|
|
153
|
+
constructor(dataFile: string, name?: string, idName?: string);
|
|
154
|
+
private buffer;
|
|
155
|
+
load(data: StorageModel[]): void;
|
|
156
|
+
/**
|
|
157
|
+
* say hello()
|
|
158
|
+
* @param name (optional) given name
|
|
159
|
+
*/
|
|
160
|
+
hello: () => string;
|
|
161
|
+
read(id: string): Promise<T>;
|
|
162
|
+
protected readSafe(id: string): Promise<T>;
|
|
163
|
+
readOrCreate(id: string, model: T): Promise<T>;
|
|
164
|
+
save(id: string, item: T): Promise<T>;
|
|
165
|
+
private $locks;
|
|
166
|
+
update(id: string, item: T, $inc?: T): Promise<T>;
|
|
167
|
+
increment(id: string, $inc: T, $upt?: T): Promise<T>;
|
|
168
|
+
delete(id: string): Promise<T>;
|
|
169
|
+
}
|
|
@@ -0,0 +1,374 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DummyStorageService = exports.DynamoStorageService = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* `storage-service.js`
|
|
15
|
+
* - common service for `storage`
|
|
16
|
+
*
|
|
17
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
18
|
+
* @date 2019-09-26 initial version
|
|
19
|
+
* @date 2019-10-01 moved from ticket-data-service to storage-service.
|
|
20
|
+
* @date 2019-12-01 migrated to storage-service.
|
|
21
|
+
*
|
|
22
|
+
* @copyright (C) 2019 LemonCloud Co Ltd. - All Rights Reserved.
|
|
23
|
+
*/
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
25
|
+
const engine_1 = require("../../engine/");
|
|
26
|
+
const NS = engine_1.$U.NS('STRS', 'green'); // NAMESPACE TO BE PRINTED.
|
|
27
|
+
const dynamo_1 = require("../dynamo/");
|
|
28
|
+
const shared_1 = require("../../tools/shared");
|
|
29
|
+
const clearDuplicated = (arr) => arr.sort().reduce((L, val) => {
|
|
30
|
+
if (L.indexOf(val) < 0)
|
|
31
|
+
L.push(val);
|
|
32
|
+
return L;
|
|
33
|
+
}, []);
|
|
34
|
+
/**
|
|
35
|
+
* class: `DynamoStorageService`
|
|
36
|
+
* - service via DynamoDB with id + json data.
|
|
37
|
+
*/
|
|
38
|
+
class DynamoStorageService {
|
|
39
|
+
constructor(table, fields, idName = 'id', idType = 'string') {
|
|
40
|
+
/**
|
|
41
|
+
* say hello()
|
|
42
|
+
* @param name (optional) given name
|
|
43
|
+
*/
|
|
44
|
+
this.hello = () => `dynamo-storage-service:${this._table}/${this._idName}/${this._fields.length}`;
|
|
45
|
+
/**
|
|
46
|
+
* (extended) get copy of fields.
|
|
47
|
+
*/
|
|
48
|
+
this.fields = () => [...this._fields];
|
|
49
|
+
if (!table)
|
|
50
|
+
throw new Error(`@table (table-name) is required!`);
|
|
51
|
+
this._table = table;
|
|
52
|
+
this._idName = idName;
|
|
53
|
+
this._fields = clearDuplicated(['id', 'type', 'stereo', 'meta', idName].concat(fields));
|
|
54
|
+
this.$dynamo = new dynamo_1.DynamoService({ tableName: this._table, idName, idType });
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Read whole model via database.
|
|
58
|
+
*
|
|
59
|
+
* @param id id
|
|
60
|
+
*/
|
|
61
|
+
read(id) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
const data = yield this.$dynamo.readItem(id);
|
|
64
|
+
const fields = this._fields || [];
|
|
65
|
+
const item = fields.reduce((N, key) => {
|
|
66
|
+
const val = data[key];
|
|
67
|
+
if (val !== undefined)
|
|
68
|
+
N[key] = val;
|
|
69
|
+
return N;
|
|
70
|
+
}, {});
|
|
71
|
+
return item;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* auto-create if not found.
|
|
76
|
+
*
|
|
77
|
+
* @param id
|
|
78
|
+
* @param model
|
|
79
|
+
*/
|
|
80
|
+
readOrCreate(id, model) {
|
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
return this.read(id).catch((e) => {
|
|
83
|
+
if (`${e.message}`.startsWith('404 NOT FOUND'))
|
|
84
|
+
return this.update(id, model);
|
|
85
|
+
throw e;
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* simply save(or overwrite) all model
|
|
91
|
+
*
|
|
92
|
+
* @param id id
|
|
93
|
+
* @param model whole object.
|
|
94
|
+
*/
|
|
95
|
+
save(id, model) {
|
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
const fields = this._fields || [];
|
|
98
|
+
const data = fields.reduce((N, key) => {
|
|
99
|
+
const val = model[key];
|
|
100
|
+
if (val !== undefined)
|
|
101
|
+
N[key] = val;
|
|
102
|
+
return N;
|
|
103
|
+
}, {});
|
|
104
|
+
yield this.$dynamo.saveItem(id, data); // must be `{}`
|
|
105
|
+
const item = Object.assign({ [this._idName]: id }, data);
|
|
106
|
+
return item;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* update some attributes
|
|
111
|
+
*
|
|
112
|
+
* @param id id
|
|
113
|
+
* @param model attributes to update
|
|
114
|
+
* @param incrementals (optional) attributes to increment
|
|
115
|
+
*/
|
|
116
|
+
update(id, model, incrementals) {
|
|
117
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
118
|
+
const fields = this._fields || [];
|
|
119
|
+
const $U = fields.reduce((N, key) => {
|
|
120
|
+
const val = model[key];
|
|
121
|
+
if (val !== undefined)
|
|
122
|
+
N[key] = val;
|
|
123
|
+
return N;
|
|
124
|
+
}, {});
|
|
125
|
+
/* eslint-disable prettier/prettier */
|
|
126
|
+
const $I = !incrementals ? null : Object.keys(incrementals).reduce((M, key) => {
|
|
127
|
+
const val = incrementals[key];
|
|
128
|
+
if (typeof val !== 'number')
|
|
129
|
+
throw new Error(`.${key} (${val}) should be number!`);
|
|
130
|
+
M[key] = val;
|
|
131
|
+
return M;
|
|
132
|
+
}, {});
|
|
133
|
+
/* eslint-enable prettier/prettier */
|
|
134
|
+
const ret = yield this.$dynamo.updateItem(id, undefined, $U, $I);
|
|
135
|
+
return ret;
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* increment number attribute (or overwrite string field)
|
|
140
|
+
* - if not exists, then just update property with base zero 0.
|
|
141
|
+
*
|
|
142
|
+
* @param id id
|
|
143
|
+
* @param model attributes of number.
|
|
144
|
+
* @param $update (optional) update-set.
|
|
145
|
+
*/
|
|
146
|
+
increment(id, model, $update) {
|
|
147
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
148
|
+
if (!model && !$update)
|
|
149
|
+
throw new Error('@item is required!');
|
|
150
|
+
const $org = yield this.read(id).catch(e => {
|
|
151
|
+
if (`${e.message || e}`.startsWith('404 NOT FOUND'))
|
|
152
|
+
return { id };
|
|
153
|
+
throw e;
|
|
154
|
+
});
|
|
155
|
+
const fields = this._fields || [];
|
|
156
|
+
const $U = fields.reduce((N, key) => {
|
|
157
|
+
const val = $update ? $update[key] : undefined;
|
|
158
|
+
if (val !== undefined)
|
|
159
|
+
N[key] = val;
|
|
160
|
+
return N;
|
|
161
|
+
}, {});
|
|
162
|
+
const $I = fields.reduce((N, key) => {
|
|
163
|
+
const val = model[key];
|
|
164
|
+
if (val !== undefined) {
|
|
165
|
+
const org = $org[key];
|
|
166
|
+
//! check type matched!
|
|
167
|
+
if (org !== undefined && typeof org === 'number' && typeof val !== 'number')
|
|
168
|
+
throw new Error(`.${key} (${val}) should be number!`);
|
|
169
|
+
//! if not exists, update it.
|
|
170
|
+
if (org === undefined && typeof val === 'number')
|
|
171
|
+
N[key] = val;
|
|
172
|
+
else if (typeof val !== 'number' && !Array.isArray(val))
|
|
173
|
+
$U[key] = val;
|
|
174
|
+
else
|
|
175
|
+
N[key] = val;
|
|
176
|
+
}
|
|
177
|
+
return N;
|
|
178
|
+
}, {});
|
|
179
|
+
const ret = yield this.$dynamo.updateItem(id, undefined, $U, $I);
|
|
180
|
+
return ret;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* delete set.
|
|
185
|
+
* - if not exists, then just update property with base zero 0.
|
|
186
|
+
*
|
|
187
|
+
* @param id id
|
|
188
|
+
*/
|
|
189
|
+
delete(id) {
|
|
190
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
191
|
+
const $org = yield this.read(id);
|
|
192
|
+
yield this.$dynamo.deleteItem(id);
|
|
193
|
+
return $org;
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
exports.DynamoStorageService = DynamoStorageService;
|
|
198
|
+
/** ****************************************************************************************************************
|
|
199
|
+
* Dummy Data Service
|
|
200
|
+
** ****************************************************************************************************************/
|
|
201
|
+
/**
|
|
202
|
+
* class: `DummyStorageService`
|
|
203
|
+
* - service in-memory dummy data
|
|
204
|
+
*
|
|
205
|
+
* **NOTE**
|
|
206
|
+
* - this dummy service should be replaceable with real service `DynamoStorageService`
|
|
207
|
+
*/
|
|
208
|
+
class DummyStorageService {
|
|
209
|
+
constructor(dataFile, name = 'memory', idName) {
|
|
210
|
+
this.buffer = {};
|
|
211
|
+
/**
|
|
212
|
+
* say hello()
|
|
213
|
+
* @param name (optional) given name
|
|
214
|
+
*/
|
|
215
|
+
this.hello = () => `dummy-storage-service:${this.name}/${this.idName}`;
|
|
216
|
+
this.$locks = {}; //! only for lock.
|
|
217
|
+
(0, engine_1._log)(NS, `DummyStorageService(${dataFile || ''})...`);
|
|
218
|
+
if (!dataFile)
|
|
219
|
+
throw new Error('@dataFile(string) is required!');
|
|
220
|
+
this.name = `${name || ''}`;
|
|
221
|
+
this.idName = `${idName || 'id'}`;
|
|
222
|
+
// const loadDataYml = require('../express').loadDataYml;
|
|
223
|
+
const dummy = (0, shared_1.loadDataYml)(dataFile);
|
|
224
|
+
this.load(dummy.data);
|
|
225
|
+
}
|
|
226
|
+
load(data) {
|
|
227
|
+
if (!data || !Array.isArray(data))
|
|
228
|
+
throw new Error('@data should be array!');
|
|
229
|
+
data.map(item => {
|
|
230
|
+
const id = item.id || '';
|
|
231
|
+
this.buffer[id] = item;
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
read(id) {
|
|
235
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
236
|
+
if (!id.trim())
|
|
237
|
+
throw new Error('@id (string) is required!');
|
|
238
|
+
const item = this.buffer[id];
|
|
239
|
+
if (!item)
|
|
240
|
+
throw new Error(`404 NOT FOUND - ${this.idName}:${id}`);
|
|
241
|
+
return Object.assign(Object.assign({}, item), { [this.idName]: id });
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
readSafe(id) {
|
|
245
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
246
|
+
return this.read(id).catch(e => {
|
|
247
|
+
if (`${e.message || e}`.startsWith('404 NOT FOUND')) {
|
|
248
|
+
const $org = { [this.idName]: id };
|
|
249
|
+
return $org;
|
|
250
|
+
}
|
|
251
|
+
throw e;
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
readOrCreate(id, model) {
|
|
256
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
257
|
+
return this.read(id).catch((e) => {
|
|
258
|
+
if (`${e.message}`.startsWith('404 NOT FOUND'))
|
|
259
|
+
return this.update(id, model);
|
|
260
|
+
throw e;
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
save(id, item) {
|
|
265
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
266
|
+
if (!id)
|
|
267
|
+
throw new Error('@id is required!');
|
|
268
|
+
if (!item)
|
|
269
|
+
throw new Error('@item is required!');
|
|
270
|
+
if (item && typeof item.lock == 'number')
|
|
271
|
+
this.$locks[id] = item.lock;
|
|
272
|
+
this.buffer[id] = item;
|
|
273
|
+
return Object.assign({ [this.idName]: id }, item);
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
update(id, item, $inc) {
|
|
277
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
278
|
+
if (!id)
|
|
279
|
+
throw new Error('@id is required!');
|
|
280
|
+
if (!item)
|
|
281
|
+
throw new Error('@item is required!');
|
|
282
|
+
//! atomic operation for `.lock`
|
|
283
|
+
const lock = (() => {
|
|
284
|
+
let lock = 0;
|
|
285
|
+
if (item && typeof item.lock == 'number')
|
|
286
|
+
this.$locks[id] = lock = item.lock;
|
|
287
|
+
if ($inc && typeof $inc.lock == 'number')
|
|
288
|
+
this.$locks[id] = lock = $inc.lock + engine_1.$U.N(this.$locks[id], 0);
|
|
289
|
+
return lock;
|
|
290
|
+
})();
|
|
291
|
+
const $org = yield this.readSafe(id);
|
|
292
|
+
const $new = Object.assign($org, item);
|
|
293
|
+
/* eslint-disable prettier/prettier */
|
|
294
|
+
const incremented = !$inc ? null : Object.keys($inc).reduce((M, key) => {
|
|
295
|
+
const val = $inc[key];
|
|
296
|
+
if (typeof val !== 'number')
|
|
297
|
+
throw new Error(`.${key} (${val}) should be number!`);
|
|
298
|
+
if (key == 'lock') {
|
|
299
|
+
M[key] = lock;
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
M[key] = engine_1.$U.N($new[key], 0) + val;
|
|
303
|
+
}
|
|
304
|
+
return M;
|
|
305
|
+
}, {});
|
|
306
|
+
if (incremented)
|
|
307
|
+
Object.assign($new, incremented);
|
|
308
|
+
/* eslint-enable prettier/prettier */
|
|
309
|
+
yield this.save(id, $new);
|
|
310
|
+
const $set = Object.assign(Object.assign({}, item), incremented);
|
|
311
|
+
if (typeof $set.lock == 'number')
|
|
312
|
+
$set.lock = lock;
|
|
313
|
+
return Object.assign({ [this.idName]: id }, $set);
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
increment(id, $inc, $upt) {
|
|
317
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
318
|
+
if (!id)
|
|
319
|
+
throw new Error('@id is required!');
|
|
320
|
+
if (!$inc && !$upt)
|
|
321
|
+
throw new Error('@item is required!');
|
|
322
|
+
//! atomic operation for `.lock`
|
|
323
|
+
const lock = (() => {
|
|
324
|
+
let lock = 0;
|
|
325
|
+
if ($upt && typeof $upt.lock == 'number')
|
|
326
|
+
this.$locks[id] = lock = $upt.lock;
|
|
327
|
+
if ($inc && typeof $inc.lock == 'number')
|
|
328
|
+
this.$locks[id] = lock = $inc.lock + engine_1.$U.N(this.$locks[id], 0);
|
|
329
|
+
return lock;
|
|
330
|
+
})();
|
|
331
|
+
const $org = yield this.readSafe(id);
|
|
332
|
+
const $set = Object.keys($inc)
|
|
333
|
+
.concat(Object.keys($upt || {}))
|
|
334
|
+
.reduce((N, key) => {
|
|
335
|
+
const val = $inc ? $inc[key] : undefined;
|
|
336
|
+
const upt = $upt ? $upt[key] : undefined;
|
|
337
|
+
const org = $org[key];
|
|
338
|
+
if (upt !== undefined) {
|
|
339
|
+
N[key] = upt;
|
|
340
|
+
}
|
|
341
|
+
else if (val !== undefined) {
|
|
342
|
+
if (org !== undefined && typeof org === 'number' && typeof val !== 'number')
|
|
343
|
+
throw new Error(`.${key} (${val}) should be number!`);
|
|
344
|
+
if (typeof val !== 'number') {
|
|
345
|
+
N[key] = val;
|
|
346
|
+
}
|
|
347
|
+
else if (key == 'lock') {
|
|
348
|
+
N[key] = lock;
|
|
349
|
+
$org[key] = lock;
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
N[key] = (org === undefined ? 0 : org) + val;
|
|
353
|
+
$org[key] = (org === undefined ? 0 : org) + val;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return N;
|
|
357
|
+
}, {});
|
|
358
|
+
if (typeof $set.lock == 'number')
|
|
359
|
+
$set.lock = lock;
|
|
360
|
+
yield this.save(id, Object.assign($org, $set));
|
|
361
|
+
return Object.assign({ [this.idName]: id }, $set);
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
delete(id) {
|
|
365
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
366
|
+
const $org = yield this.read(id);
|
|
367
|
+
delete this.buffer[id];
|
|
368
|
+
delete this.$locks[id];
|
|
369
|
+
return $org;
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
exports.DummyStorageService = DummyStorageService;
|
|
374
|
+
//# sourceMappingURL=storage-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-service.js","sourceRoot":"","sources":["../../../src/cores/storage/storage-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -73,7 +73,7 @@ export interface StorageService<T extends StorageModel> {
|
|
|
73
73
|
*/
|
|
74
74
|
delete(id: string): Promise<T>;
|
|
75
75
|
}
|
|
76
|
-
import { KEY_TYPE } from './dynamo
|
|
76
|
+
import { KEY_TYPE } from './dynamo/';
|
|
77
77
|
/**
|
|
78
78
|
* class: `DynamoStorageService`
|
|
79
79
|
* - service via DynamoDB with id + json data.
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
8
12
|
}));
|
|
9
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
15
|
};
|
|
12
16
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
17
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
@@ -35,7 +39,7 @@ exports.DummyStorageService = exports.DynamoStorageService = void 0;
|
|
|
35
39
|
const engine_1 = require("../engine/");
|
|
36
40
|
const NS = engine_1.$U.NS('STRS', 'green'); // NAMESPACE TO BE PRINTED.
|
|
37
41
|
__exportStar(require("./http-storage-service"), exports);
|
|
38
|
-
const
|
|
42
|
+
const dynamo_1 = require("./dynamo/");
|
|
39
43
|
const shared_1 = require("../tools/shared");
|
|
40
44
|
const clearDuplicated = (arr) => arr.sort().reduce((L, val) => {
|
|
41
45
|
if (L.indexOf(val) < 0)
|
|
@@ -62,7 +66,7 @@ class DynamoStorageService {
|
|
|
62
66
|
this._table = table;
|
|
63
67
|
this._idName = idName;
|
|
64
68
|
this._fields = clearDuplicated(['id', 'type', 'stereo', 'meta', idName].concat(fields));
|
|
65
|
-
this.$dynamo = new
|
|
69
|
+
this.$dynamo = new dynamo_1.DynamoService({ tableName: this._table, idName, idType });
|
|
66
70
|
}
|
|
67
71
|
/**
|
|
68
72
|
* Read whole model via database.
|
|
@@ -225,13 +229,13 @@ class DummyStorageService {
|
|
|
225
229
|
*/
|
|
226
230
|
this.hello = () => `dummy-storage-service:${this.name}/${this.idName}`;
|
|
227
231
|
this.$locks = {}; //! only for lock.
|
|
228
|
-
engine_1._log(NS, `DummyStorageService(${dataFile || ''})...`);
|
|
232
|
+
(0, engine_1._log)(NS, `DummyStorageService(${dataFile || ''})...`);
|
|
229
233
|
if (!dataFile)
|
|
230
234
|
throw new Error('@dataFile(string) is required!');
|
|
231
235
|
this.name = `${name || ''}`;
|
|
232
236
|
this.idName = `${idName || 'id'}`;
|
|
233
237
|
// const loadDataYml = require('../express').loadDataYml;
|
|
234
|
-
const dummy = shared_1.loadDataYml(dataFile);
|
|
238
|
+
const dummy = (0, shared_1.loadDataYml)(dataFile);
|
|
235
239
|
this.load(dummy.data);
|
|
236
240
|
}
|
|
237
241
|
load(data) {
|
|
@@ -249,7 +253,6 @@ class DummyStorageService {
|
|
|
249
253
|
const item = this.buffer[id];
|
|
250
254
|
if (!item)
|
|
251
255
|
throw new Error(`404 NOT FOUND - ${this.idName}:${id}`);
|
|
252
|
-
// eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion
|
|
253
256
|
return Object.assign(Object.assign({}, item), { [this.idName]: id });
|
|
254
257
|
});
|
|
255
258
|
}
|
|
@@ -257,7 +260,6 @@ class DummyStorageService {
|
|
|
257
260
|
return __awaiter(this, void 0, void 0, function* () {
|
|
258
261
|
return this.read(id).catch(e => {
|
|
259
262
|
if (`${e.message || e}`.startsWith('404 NOT FOUND')) {
|
|
260
|
-
// eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion
|
|
261
263
|
const $org = { [this.idName]: id };
|
|
262
264
|
return $org;
|
|
263
265
|
}
|