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,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `cores/storage/index.tx`
|
|
3
|
+
* - default index to export all for storage-service
|
|
4
|
+
*
|
|
5
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
6
|
+
* @date 2022-05-13 initial file to group
|
|
7
|
+
*
|
|
8
|
+
* @copyright (C) lemoncloud.io 2022 - All Rights Reserved.
|
|
9
|
+
*/
|
|
10
|
+
export * from './model-manager';
|
|
11
|
+
export * from './redis-storage-service';
|
|
12
|
+
export * from './storage-service';
|
|
13
|
+
export * from './proxy-storage-service';
|
|
14
|
+
export * from './http-storage-service';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
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);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
/**
|
|
18
|
+
* `cores/storage/index.tx`
|
|
19
|
+
* - default index to export all for storage-service
|
|
20
|
+
*
|
|
21
|
+
* @author Steve Jung <steve@lemoncloud.io>
|
|
22
|
+
* @date 2022-05-13 initial file to group
|
|
23
|
+
*
|
|
24
|
+
* @copyright (C) lemoncloud.io 2022 - All Rights Reserved.
|
|
25
|
+
*/
|
|
26
|
+
__exportStar(require("./model-manager"), exports);
|
|
27
|
+
__exportStar(require("./redis-storage-service"), exports);
|
|
28
|
+
__exportStar(require("./storage-service"), exports);
|
|
29
|
+
__exportStar(require("./proxy-storage-service"), exports);
|
|
30
|
+
__exportStar(require("./http-storage-service"), exports);
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cores/storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;;;;;;;GAQG;AACH,kDAAgC;AAChC,0DAAwC;AACxC,oDAAkC;AAClC,0DAAwC;AACxC,yDAAuC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { CoreModel, StorageMakeable, GeneralModelFilter, TypedStorageService, UniqueFieldManager } from './proxy-storage-service';
|
|
2
|
+
/**
|
|
3
|
+
* class: `AbstractManager`
|
|
4
|
+
* - abstract model manager to cover all models which extend CoreModel.
|
|
5
|
+
* - feature to handle 'name' like unique value in same type.
|
|
6
|
+
* - typed-storage based.
|
|
7
|
+
* @abstract
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class AbstractManager<T extends CoreModel<ModelType>, S extends StorageMakeable<T, ModelType>, ModelType extends string> extends GeneralModelFilter<T, ModelType> {
|
|
10
|
+
readonly NS: string;
|
|
11
|
+
readonly parent: S;
|
|
12
|
+
readonly storage: TypedStorageService<T, ModelType>;
|
|
13
|
+
readonly $unique: UniqueFieldManager<T, ModelType>;
|
|
14
|
+
/**
|
|
15
|
+
* default constructor
|
|
16
|
+
* @param type model type string
|
|
17
|
+
* @param parent service instance which implements StorageMakeable interface
|
|
18
|
+
* @param fields list of model field names
|
|
19
|
+
* @param uniqueField (optional) unique field name
|
|
20
|
+
* @param ns (optional) namespace to be printed. pass NULL to suppress all logs.
|
|
21
|
+
* global NS value will be used if not specified or undefined.
|
|
22
|
+
*/
|
|
23
|
+
protected constructor(type: ModelType, parent: S, fields: string[], uniqueField?: string, ns?: string);
|
|
24
|
+
/**
|
|
25
|
+
* hello of this service-identity
|
|
26
|
+
*/
|
|
27
|
+
hello: () => string;
|
|
28
|
+
/**
|
|
29
|
+
* type getter
|
|
30
|
+
*/
|
|
31
|
+
get type(): ModelType;
|
|
32
|
+
/**
|
|
33
|
+
* prepare default model when creation
|
|
34
|
+
* - sub classes should implement this method
|
|
35
|
+
* @param $def default model
|
|
36
|
+
* @abstract
|
|
37
|
+
*/
|
|
38
|
+
protected abstract prepareDefault($def: T): T;
|
|
39
|
+
/**
|
|
40
|
+
* callback invoked just before the model is saved
|
|
41
|
+
* - override this to customize default behavior to perform model validation, cleansing or normalization
|
|
42
|
+
* @param model model object
|
|
43
|
+
* @param origin original model currently in the storage
|
|
44
|
+
*/
|
|
45
|
+
onBeforeSave(model: T, origin?: T): T;
|
|
46
|
+
/**
|
|
47
|
+
* default implementation of 'preparing' model
|
|
48
|
+
* - prepare model w/ safe creation
|
|
49
|
+
* @param id model-id to prepare
|
|
50
|
+
* @param $def default model value
|
|
51
|
+
* @param isCreate (optional) flag to allow creating a new model (default: true)
|
|
52
|
+
*/
|
|
53
|
+
prepare(id: string, $def?: T, isCreate?: boolean): Promise<T>;
|
|
54
|
+
/**
|
|
55
|
+
* default implementation of 'inserting' model
|
|
56
|
+
* @param model model object
|
|
57
|
+
*/
|
|
58
|
+
insert(model: T): Promise<T>;
|
|
59
|
+
/**
|
|
60
|
+
* default implementation of 'retrieving' model
|
|
61
|
+
* @param id model id
|
|
62
|
+
*/
|
|
63
|
+
retrieve(id: string): Promise<T>;
|
|
64
|
+
/**
|
|
65
|
+
* default implementation of updating model
|
|
66
|
+
* @param id model id
|
|
67
|
+
* @param model model object
|
|
68
|
+
* @param $inc (optional) incremental set
|
|
69
|
+
*/
|
|
70
|
+
update(id: string, model: T, $inc?: T): Promise<T>;
|
|
71
|
+
/**
|
|
72
|
+
* default implementation of 'upserting' model
|
|
73
|
+
* @param id model id
|
|
74
|
+
* @param model model object
|
|
75
|
+
* @param $inc (optional) incremental set
|
|
76
|
+
*/
|
|
77
|
+
updateOrCreate(id: string, model: T, $inc?: T): Promise<T>;
|
|
78
|
+
/**
|
|
79
|
+
* default implementation of deleting model
|
|
80
|
+
* @param id model id
|
|
81
|
+
* @param destroy flag for hard delete or soft delete (by setting 'deletedAt' field)
|
|
82
|
+
*/
|
|
83
|
+
delete(id: string, destroy?: boolean): Promise<T>;
|
|
84
|
+
/**
|
|
85
|
+
* internal implementation for 'update' and 'updateOrCreate'
|
|
86
|
+
* @param id model id
|
|
87
|
+
* @param model model object
|
|
88
|
+
* @param $inc (optional) incremental set
|
|
89
|
+
* @param isCreate (optional) flag to allow creating a new model (default: true)
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
92
|
+
private _updateModel;
|
|
93
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
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.AbstractManager = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* `model-manager.ts`
|
|
15
|
+
* - base model manager
|
|
16
|
+
*
|
|
17
|
+
* @author Tim Hong <tim@lemoncloud.io>
|
|
18
|
+
* @date 2020-06-05 initial version
|
|
19
|
+
*
|
|
20
|
+
* @copyright (C) 2020 LemonCloud Co Ltd. - All Rights Reserved.
|
|
21
|
+
*/
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
23
|
+
const engine_1 = require("../../engine/");
|
|
24
|
+
const proxy_storage_service_1 = require("./proxy-storage-service");
|
|
25
|
+
const NS = engine_1.$U.NS('MMGR', 'cyan'); // default namespace name
|
|
26
|
+
/**
|
|
27
|
+
* class: `AbstractManager`
|
|
28
|
+
* - abstract model manager to cover all models which extend CoreModel.
|
|
29
|
+
* - feature to handle 'name' like unique value in same type.
|
|
30
|
+
* - typed-storage based.
|
|
31
|
+
* @abstract
|
|
32
|
+
*/
|
|
33
|
+
class AbstractManager extends proxy_storage_service_1.GeneralModelFilter {
|
|
34
|
+
/**
|
|
35
|
+
* default constructor
|
|
36
|
+
* @param type model type string
|
|
37
|
+
* @param parent service instance which implements StorageMakeable interface
|
|
38
|
+
* @param fields list of model field names
|
|
39
|
+
* @param uniqueField (optional) unique field name
|
|
40
|
+
* @param ns (optional) namespace to be printed. pass NULL to suppress all logs.
|
|
41
|
+
* global NS value will be used if not specified or undefined.
|
|
42
|
+
*/
|
|
43
|
+
constructor(type, parent, fields, uniqueField, ns) {
|
|
44
|
+
super(fields);
|
|
45
|
+
/**
|
|
46
|
+
* hello of this service-identity
|
|
47
|
+
*/
|
|
48
|
+
this.hello = () => this.storage.hello();
|
|
49
|
+
this.NS = ns === undefined ? NS : ns;
|
|
50
|
+
this.parent = parent;
|
|
51
|
+
this.storage = parent.makeStorageService(type, fields, this);
|
|
52
|
+
this.$unique = uniqueField ? this.storage.makeUniqueFieldManager(uniqueField) : null;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* type getter
|
|
56
|
+
*/
|
|
57
|
+
get type() {
|
|
58
|
+
return this.storage.type;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* callback invoked just before the model is saved
|
|
62
|
+
* - override this to customize default behavior to perform model validation, cleansing or normalization
|
|
63
|
+
* @param model model object
|
|
64
|
+
* @param origin original model currently in the storage
|
|
65
|
+
*/
|
|
66
|
+
onBeforeSave(model, origin) {
|
|
67
|
+
return super.onBeforeSave(model, origin);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* default implementation of 'preparing' model
|
|
71
|
+
* - prepare model w/ safe creation
|
|
72
|
+
* @param id model-id to prepare
|
|
73
|
+
* @param $def default model value
|
|
74
|
+
* @param isCreate (optional) flag to allow creating a new model (default: true)
|
|
75
|
+
*/
|
|
76
|
+
prepare(id, $def, isCreate = true) {
|
|
77
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
+
if (!id)
|
|
79
|
+
throw new Error(`404 NOT FOUND - id is not valid!`);
|
|
80
|
+
// if 'isCreate' flag is set, read existing model or create initial model by calling abstract method 'prepareDefault'
|
|
81
|
+
if (isCreate)
|
|
82
|
+
return this.storage.readOrCreate(id, this.prepareDefault($def));
|
|
83
|
+
// otherwise just try to read model and throw 404 if it does not exist
|
|
84
|
+
return this.storage.read(id).catch(e => {
|
|
85
|
+
if (`${e.message || e}`.startsWith('404 NOT FOUND'))
|
|
86
|
+
e = new Error(`404 NOT FOUND - ${this.type}:${id}`);
|
|
87
|
+
throw e;
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* default implementation of 'inserting' model
|
|
93
|
+
* @param model model object
|
|
94
|
+
*/
|
|
95
|
+
insert(model) {
|
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
this.NS && (0, engine_1._inf)(this.NS, `insert(${this.type})...`);
|
|
98
|
+
if (!model)
|
|
99
|
+
throw new Error(`@model (${this.type}-model) is required!`);
|
|
100
|
+
const $def = this.prepareDefault(null);
|
|
101
|
+
const created = yield this.storage.insert($def);
|
|
102
|
+
const id = `${(created && created.id) || ''}`;
|
|
103
|
+
if (!id)
|
|
104
|
+
throw new Error('.id (string) is missing - insert() failed!');
|
|
105
|
+
this.NS && (0, engine_1._log)(this.NS, `> model.base =`, engine_1.$U.json(model));
|
|
106
|
+
const $saves = Object.assign({}, model); // clone
|
|
107
|
+
delete $saves.id; // ensure there is no 'id' field
|
|
108
|
+
const saved = yield this.storage.save(id, $saves);
|
|
109
|
+
this.NS && (0, engine_1._log)(this.NS, `> model.saved =`, engine_1.$U.json(saved));
|
|
110
|
+
return Object.assign(Object.assign(Object.assign({}, created), saved), { id });
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* default implementation of 'retrieving' model
|
|
115
|
+
* @param id model id
|
|
116
|
+
*/
|
|
117
|
+
retrieve(id) {
|
|
118
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
119
|
+
this.NS && (0, engine_1._inf)(this.NS, `retrieve(${this.type}/${id})...`);
|
|
120
|
+
if (!id)
|
|
121
|
+
throw new Error(`@id is required!`);
|
|
122
|
+
return this.storage.read(id).catch(e => {
|
|
123
|
+
if (`${e.message}`.startsWith('404 NOT FOUND'))
|
|
124
|
+
e = new Error(`404 NOT FOUND - ${this.type}:${id}`);
|
|
125
|
+
throw e;
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* default implementation of updating model
|
|
131
|
+
* @param id model id
|
|
132
|
+
* @param model model object
|
|
133
|
+
* @param $inc (optional) incremental set
|
|
134
|
+
*/
|
|
135
|
+
update(id, model, $inc) {
|
|
136
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
137
|
+
this.NS && (0, engine_1._inf)(this.NS, `update(${this.type}/${id})...`);
|
|
138
|
+
return this._updateModel(id, model, $inc, false);
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* default implementation of 'upserting' model
|
|
143
|
+
* @param id model id
|
|
144
|
+
* @param model model object
|
|
145
|
+
* @param $inc (optional) incremental set
|
|
146
|
+
*/
|
|
147
|
+
updateOrCreate(id, model, $inc) {
|
|
148
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
149
|
+
this.NS && (0, engine_1._inf)(this.NS, `updateOrCreate(${this.type}/${id})...`);
|
|
150
|
+
return this._updateModel(id, model, $inc, true);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* default implementation of deleting model
|
|
155
|
+
* @param id model id
|
|
156
|
+
* @param destroy flag for hard delete or soft delete (by setting 'deletedAt' field)
|
|
157
|
+
*/
|
|
158
|
+
delete(id, destroy = true) {
|
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
160
|
+
this.NS && (0, engine_1._inf)(this.NS, `delete(${this.type}/${id})...`);
|
|
161
|
+
if (!id)
|
|
162
|
+
throw new Error(`@id is required!`);
|
|
163
|
+
const $org = yield this.prepare(id, null, false);
|
|
164
|
+
this.NS && (0, engine_1._log)(this.NS, `> model.org =`, engine_1.$U.json($org));
|
|
165
|
+
const deleted = yield this.storage.delete(id, destroy);
|
|
166
|
+
this.NS && (0, engine_1._log)(this.NS, `> model.deleted =`, engine_1.$U.json(deleted));
|
|
167
|
+
return Object.assign(Object.assign(Object.assign({}, $org), deleted), { id });
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* internal implementation for 'update' and 'updateOrCreate'
|
|
172
|
+
* @param id model id
|
|
173
|
+
* @param model model object
|
|
174
|
+
* @param $inc (optional) incremental set
|
|
175
|
+
* @param isCreate (optional) flag to allow creating a new model (default: true)
|
|
176
|
+
* @private
|
|
177
|
+
*/
|
|
178
|
+
_updateModel(id, model, $inc, isCreate = true) {
|
|
179
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
180
|
+
if (!id)
|
|
181
|
+
throw new Error(`@id is required!`);
|
|
182
|
+
const $org = yield this.prepare(id, null, isCreate);
|
|
183
|
+
this.NS && (0, engine_1._log)(this.NS, `> model.org =`, engine_1.$U.json($org));
|
|
184
|
+
const $ups = Object.assign({}, model);
|
|
185
|
+
const updated = yield this.storage.update(id, $ups, $inc);
|
|
186
|
+
this.NS && (0, engine_1._log)(this.NS, `> model.updated =`, engine_1.$U.json(updated));
|
|
187
|
+
return Object.assign(Object.assign(Object.assign({}, $org), updated), { id });
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
exports.AbstractManager = AbstractManager;
|
|
192
|
+
//# sourceMappingURL=model-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-manager.js","sourceRoot":"","sources":["../../../src/cores/storage/model-manager.ts"],"names":[],"mappings":"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"}
|