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.
Files changed (189) hide show
  1. package/README.md +13 -21
  2. package/dist/common/test-helper.js +19 -11
  3. package/dist/common/test-helper.js.map +1 -1
  4. package/dist/controllers/dummy-controller.d.ts +1 -1
  5. package/dist/controllers/dummy-controller.js +2 -2
  6. package/dist/controllers/dummy-controller.js.map +1 -1
  7. package/dist/controllers/general-api-controller.d.ts +1 -1
  8. package/dist/controllers/general-api-controller.js +5 -5
  9. package/dist/controllers/general-api-controller.js.map +1 -1
  10. package/dist/controllers/general-controller.js +2 -1
  11. package/dist/controllers/general-controller.js.map +1 -1
  12. package/dist/controllers/index.js +6 -2
  13. package/dist/controllers/index.js.map +1 -1
  14. package/dist/cores/api/api-service.d.ts +239 -0
  15. package/dist/cores/api/api-service.js +674 -0
  16. package/dist/cores/api/api-service.js.map +1 -0
  17. package/dist/cores/api/index.d.ts +10 -0
  18. package/dist/cores/api/index.js +27 -0
  19. package/dist/cores/api/index.js.map +1 -0
  20. package/dist/cores/api-service.js +19 -18
  21. package/dist/cores/api-service.js.map +1 -1
  22. package/dist/cores/aws/aws-kms-service.d.ts +53 -2
  23. package/dist/cores/aws/aws-kms-service.js +112 -29
  24. package/dist/cores/aws/aws-kms-service.js.map +1 -1
  25. package/dist/cores/aws/aws-s3-service.js +19 -18
  26. package/dist/cores/aws/aws-s3-service.js.map +1 -1
  27. package/dist/cores/aws/aws-sns-service.js +10 -10
  28. package/dist/cores/aws/aws-sns-service.js.map +1 -1
  29. package/dist/cores/aws/aws-sqs-service.js +12 -12
  30. package/dist/cores/aws/aws-sqs-service.js.map +1 -1
  31. package/dist/cores/aws/index.js +1 -1
  32. package/dist/cores/cache/cache-service.d.ts +440 -0
  33. package/dist/cores/cache/cache-service.js +967 -0
  34. package/dist/cores/cache/cache-service.js.map +1 -0
  35. package/dist/cores/cache/index.d.ts +10 -0
  36. package/dist/cores/cache/index.js +27 -0
  37. package/dist/cores/cache/index.js.map +1 -0
  38. package/dist/cores/cache-service.d.ts +54 -18
  39. package/dist/cores/cache-service.js +56 -45
  40. package/dist/cores/cache-service.js.map +1 -1
  41. package/dist/cores/config/config-service.js +11 -10
  42. package/dist/cores/config/config-service.js.map +1 -1
  43. package/dist/cores/core-services.js +6 -2
  44. package/dist/cores/core-services.js.map +1 -1
  45. package/dist/cores/core-types.d.ts +42 -12
  46. package/dist/cores/dynamo/dynamo-query-service.d.ts +52 -0
  47. package/dist/cores/dynamo/dynamo-query-service.js +127 -0
  48. package/dist/cores/dynamo/dynamo-query-service.js.map +1 -0
  49. package/dist/cores/dynamo/dynamo-scan-service.d.ts +70 -0
  50. package/dist/cores/dynamo/dynamo-scan-service.js +164 -0
  51. package/dist/cores/dynamo/dynamo-scan-service.js.map +1 -0
  52. package/dist/cores/dynamo/dynamo-service.d.ts +192 -0
  53. package/dist/cores/dynamo/dynamo-service.js +525 -0
  54. package/dist/cores/dynamo/dynamo-service.js.map +1 -0
  55. package/dist/cores/dynamo/index.d.ts +12 -0
  56. package/dist/cores/dynamo/index.js +29 -0
  57. package/dist/cores/dynamo/index.js.map +1 -0
  58. package/dist/cores/dynamo-query-service.js +7 -7
  59. package/dist/cores/dynamo-query-service.js.map +1 -1
  60. package/dist/cores/dynamo-scan-service.js +8 -8
  61. package/dist/cores/dynamo-scan-service.js.map +1 -1
  62. package/dist/cores/dynamo-service.js +19 -19
  63. package/dist/cores/dynamo-service.js.map +1 -1
  64. package/dist/cores/elastic/elastic6-query-service.d.ts +104 -0
  65. package/dist/cores/elastic/elastic6-query-service.js +510 -0
  66. package/dist/cores/elastic/elastic6-query-service.js.map +1 -0
  67. package/dist/cores/elastic/elastic6-service.d.ts +273 -0
  68. package/dist/cores/elastic/elastic6-service.js +903 -0
  69. package/dist/cores/elastic/elastic6-service.js.map +1 -0
  70. package/dist/cores/elastic/hangul-service.d.ts +102 -0
  71. package/dist/cores/elastic/hangul-service.js +205 -0
  72. package/dist/cores/elastic/hangul-service.js.map +1 -0
  73. package/dist/cores/elastic/index.d.ts +12 -0
  74. package/dist/cores/elastic/index.js +29 -0
  75. package/dist/cores/elastic/index.js.map +1 -0
  76. package/dist/cores/elastic6-query-service.js +7 -7
  77. package/dist/cores/elastic6-query-service.js.map +1 -1
  78. package/dist/cores/elastic6-service.js +57 -65
  79. package/dist/cores/elastic6-service.js.map +1 -1
  80. package/dist/cores/hangul-service.d.ts +17 -3
  81. package/dist/cores/hangul-service.js +17 -8
  82. package/dist/cores/hangul-service.js.map +1 -1
  83. package/dist/cores/http-storage-service.js +1 -1
  84. package/dist/cores/http-storage-service.js.map +1 -1
  85. package/dist/cores/index.d.ts +9 -15
  86. package/dist/cores/index.js +14 -15
  87. package/dist/cores/index.js.map +1 -1
  88. package/dist/cores/lambda/index.js +8 -4
  89. package/dist/cores/lambda/index.js.map +1 -1
  90. package/dist/cores/lambda/lambda-cognito-handler.js +2 -2
  91. package/dist/cores/lambda/lambda-cognito-handler.js.map +1 -1
  92. package/dist/cores/lambda/lambda-cron-handler.js +2 -2
  93. package/dist/cores/lambda/lambda-cron-handler.js.map +1 -1
  94. package/dist/cores/lambda/lambda-dynamo-stream-handler.d.ts +2 -2
  95. package/dist/cores/lambda/lambda-dynamo-stream-handler.js +20 -20
  96. package/dist/cores/lambda/lambda-dynamo-stream-handler.js.map +1 -1
  97. package/dist/cores/lambda/lambda-handler.js +12 -11
  98. package/dist/cores/lambda/lambda-handler.js.map +1 -1
  99. package/dist/cores/lambda/lambda-notification-handler.js +10 -10
  100. package/dist/cores/lambda/lambda-notification-handler.js.map +1 -1
  101. package/dist/cores/lambda/lambda-sns-handler.js +13 -13
  102. package/dist/cores/lambda/lambda-sns-handler.js.map +1 -1
  103. package/dist/cores/lambda/lambda-sqs-handler.js +13 -13
  104. package/dist/cores/lambda/lambda-sqs-handler.js.map +1 -1
  105. package/dist/cores/lambda/lambda-web-handler.d.ts +158 -8
  106. package/dist/cores/lambda/lambda-web-handler.js +330 -119
  107. package/dist/cores/lambda/lambda-web-handler.js.map +1 -1
  108. package/dist/cores/lambda/lambda-wss-handler.js +16 -12
  109. package/dist/cores/lambda/lambda-wss-handler.js.map +1 -1
  110. package/dist/cores/model-manager.js +11 -11
  111. package/dist/cores/model-manager.js.map +1 -1
  112. package/dist/cores/protocol/protocol-service.d.ts +4 -0
  113. package/dist/cores/protocol/protocol-service.js +46 -40
  114. package/dist/cores/protocol/protocol-service.js.map +1 -1
  115. package/dist/cores/proxy-storage-service.js +7 -10
  116. package/dist/cores/proxy-storage-service.js.map +1 -1
  117. package/dist/cores/redis-storage-service.js +13 -13
  118. package/dist/cores/redis-storage-service.js.map +1 -1
  119. package/dist/cores/storage/http-storage-service.d.ts +22 -0
  120. package/dist/cores/storage/http-storage-service.js +129 -0
  121. package/dist/cores/storage/http-storage-service.js.map +1 -0
  122. package/dist/cores/storage/index.d.ts +14 -0
  123. package/dist/cores/storage/index.js +31 -0
  124. package/dist/cores/storage/index.js.map +1 -0
  125. package/dist/cores/storage/model-manager.d.ts +93 -0
  126. package/dist/cores/storage/model-manager.js +192 -0
  127. package/dist/cores/storage/model-manager.js.map +1 -0
  128. package/dist/cores/storage/proxy-storage-service.d.ts +573 -0
  129. package/dist/cores/storage/proxy-storage-service.js +913 -0
  130. package/dist/cores/storage/proxy-storage-service.js.map +1 -0
  131. package/dist/cores/storage/redis-storage-service.d.ts +183 -0
  132. package/dist/cores/storage/redis-storage-service.js +391 -0
  133. package/dist/cores/storage/redis-storage-service.js.map +1 -0
  134. package/dist/cores/storage/storage-service.d.ts +169 -0
  135. package/dist/cores/storage/storage-service.js +374 -0
  136. package/dist/cores/storage/storage-service.js.map +1 -0
  137. package/dist/cores/storage-service.d.ts +1 -1
  138. package/dist/cores/storage-service.js +10 -8
  139. package/dist/cores/storage-service.js.map +1 -1
  140. package/dist/engine/builder.js +27 -20
  141. package/dist/engine/builder.js.map +1 -1
  142. package/dist/engine/engine.js +53 -44
  143. package/dist/engine/engine.js.map +1 -1
  144. package/dist/engine/index.js +8 -4
  145. package/dist/engine/index.js.map +1 -1
  146. package/dist/engine/utilities.d.ts +4 -3
  147. package/dist/engine/utilities.js +32 -37
  148. package/dist/engine/utilities.js.map +1 -1
  149. package/dist/environ.d.ts +2 -2
  150. package/dist/environ.js +20 -10
  151. package/dist/environ.js.map +1 -1
  152. package/dist/exec-cli.js +26 -26
  153. package/dist/exec-cli.js.map +1 -1
  154. package/dist/extended/abstract-service.d.ts +533 -0
  155. package/dist/extended/abstract-service.js +915 -0
  156. package/dist/extended/abstract-service.js.map +1 -0
  157. package/dist/extended/index.d.ts +10 -0
  158. package/dist/extended/index.js +27 -0
  159. package/dist/extended/index.js.map +1 -0
  160. package/dist/helpers/helpers.d.ts +273 -0
  161. package/dist/helpers/helpers.js +613 -0
  162. package/dist/helpers/helpers.js.map +1 -0
  163. package/dist/helpers/index.d.ts +10 -0
  164. package/dist/helpers/index.js +27 -0
  165. package/dist/helpers/index.js.map +1 -0
  166. package/dist/index.d.ts +7 -5
  167. package/dist/index.js +11 -4
  168. package/dist/index.js.map +1 -1
  169. package/dist/lib/dynamo/expressions.js +35 -27
  170. package/dist/lib/dynamo/expressions.js.map +1 -1
  171. package/dist/lib/dynamo/query.js +24 -20
  172. package/dist/lib/dynamo/query.js.map +1 -1
  173. package/dist/lib/dynamo/scan.js +17 -13
  174. package/dist/lib/dynamo/scan.js.map +1 -1
  175. package/dist/lib/dynamo/serializer.js +11 -7
  176. package/dist/lib/dynamo/serializer.js.map +1 -1
  177. package/dist/lib/dynamo/utils.js +19 -14
  178. package/dist/lib/dynamo/utils.js.map +1 -1
  179. package/dist/lib/dynamodb-value.js +3 -3
  180. package/dist/lib/dynamodb-value.js.map +1 -1
  181. package/dist/lib/index.js +6 -2
  182. package/dist/lib/index.js.map +1 -1
  183. package/dist/tools/express.js +21 -15
  184. package/dist/tools/express.js.map +1 -1
  185. package/dist/tools/index.js +6 -2
  186. package/dist/tools/index.js.map +1 -1
  187. package/dist/tools/shared.js +12 -6
  188. package/dist/tools/shared.js.map +1 -1
  189. 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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"}