ismx-nexo-node-app 0.4.59 → 0.4.60

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.
@@ -71,6 +71,9 @@ class ServiceRestFormalTemplate {
71
71
  let pageNumber = Number.parseInt(pageNumberStr);
72
72
  return { maxResults, pageNumber };
73
73
  }
74
+ extendEntity(entity) {
75
+ return entity;
76
+ }
74
77
  /**
75
78
  * Handles GET requests by retrieving a single record from the database based on the provided request.
76
79
  *
@@ -80,7 +83,8 @@ class ServiceRestFormalTemplate {
80
83
  serveGet(request) {
81
84
  return __awaiter(this, void 0, void 0, function* () {
82
85
  let id = this.getFormalId(request);
83
- let result = yield this.database.one(this.tableName, id);
86
+ let entity = yield this.database.one(this.tableName, id);
87
+ let result = this.extendEntity(entity);
84
88
  return Service_1.HttpResponse.ok(result);
85
89
  });
86
90
  }
@@ -92,7 +96,43 @@ class ServiceRestFormalTemplate {
92
96
  */
93
97
  serveGetList(request) {
94
98
  return __awaiter(this, void 0, void 0, function* () {
95
- return Service_1.HttpResponse.ok(yield this.database.find(this.tableName, Object.assign({}, request.query)));
99
+ let entities = yield this.database.find(this.tableName, Object.assign({}, request.query));
100
+ let result = entities.map(this.extendEntity);
101
+ return Service_1.HttpResponse.ok(result);
102
+ });
103
+ }
104
+ /**
105
+ * Serves a paginated response for the requested page entities.
106
+ *
107
+ * @param {HttpRequest} request The HTTP request containing details needed for pagination processing, such as query parameters.
108
+ * @return {Promise<HttpResponse<Pagination<Model>>>} A promise resolving to an HTTP response containing the paginated list of entities.
109
+ */
110
+ servePage(request) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ let { maxResults, pageNumber } = this.getFormalPage(request);
113
+ let result = yield this.database.page(this.tableName, "timestamp", maxResults, pageNumber);
114
+ result.elements = result.elements.map(this.extendEntity);
115
+ return Service_1.HttpResponse.ok(result);
116
+ });
117
+ }
118
+ /**
119
+ * Serves a map of models retrieved from the database based on the request query parameters.
120
+ *
121
+ * @param {HttpRequest} request - The HTTP request containing query parameters for retrieving models.
122
+ * @return {Promise<HttpResponse<{[key: string]: Model}>>} A promise that resolves to an HTTP response containing a map of models, where the key is derived from the indexed property of each model.
123
+ */
124
+ serveMap(request) {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ let results = yield this.database.find(this.tableName, Object.assign({}, request.query));
127
+ let response = {};
128
+ for (let result of results) {
129
+ let key = result[this.indexer];
130
+ if (!key)
131
+ return Service_1.HttpResponse.ok({});
132
+ else
133
+ response[key] = this.extendEntity(result);
134
+ }
135
+ return Service_1.HttpResponse.ok(response);
96
136
  });
97
137
  }
98
138
  /**
@@ -114,6 +154,12 @@ class ServiceRestFormalTemplate {
114
154
  return Service_1.HttpResponse.ok(result);
115
155
  });
116
156
  }
157
+ /**
158
+ * Handles PUT requests by updating an existing record in the database based on the provided request.
159
+ *
160
+ * @param {HttpRequest<Model>} request - The HTTP request containing the model data to be updated.
161
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the updated model data.
162
+ */
117
163
  servePut(request) {
118
164
  return __awaiter(this, void 0, void 0, function* () {
119
165
  var _a;
@@ -123,6 +169,13 @@ class ServiceRestFormalTemplate {
123
169
  return Service_1.HttpResponse.ok((yield this.serveGet({ query: { [this.indexer]: id } })).content);
124
170
  });
125
171
  }
172
+ /**
173
+ * Handles POST requests by adding a new record to the database based on the provided request.
174
+ *
175
+ * @param {HttpRequest<Transient<Model>>} request - The HTTP request containing the model data to be added.
176
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the added model data.
177
+ */
178
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
126
179
  servePost(request) {
127
180
  return __awaiter(this, void 0, void 0, function* () {
128
181
  let result = yield this.database.add(this.tableName, request.body);
@@ -169,27 +222,6 @@ class ServiceRestFormalTemplate {
169
222
  return Service_1.HttpResponse.ok(yield Promise.all(promises !== null && promises !== void 0 ? promises : []));
170
223
  });
171
224
  }
172
- servePage(request) {
173
- return __awaiter(this, void 0, void 0, function* () {
174
- let { maxResults, pageNumber } = this.getFormalPage(request);
175
- let results = yield this.database.page(this.tableName, "timestamp", maxResults, pageNumber);
176
- return Service_1.HttpResponse.ok(results);
177
- });
178
- }
179
- serveMap(request) {
180
- return __awaiter(this, void 0, void 0, function* () {
181
- let results = yield this.database.find(this.tableName, Object.assign({}, request.query));
182
- let response = {};
183
- for (let result of results) {
184
- let key = result[this.indexer];
185
- if (!key)
186
- return Service_1.HttpResponse.ok({});
187
- else
188
- response[key] = result;
189
- }
190
- return Service_1.HttpResponse.ok(response);
191
- });
192
- }
193
225
  serveSelect(request) {
194
226
  return __awaiter(this, void 0, void 0, function* () {
195
227
  var _a, _b, _c;
@@ -36,6 +36,7 @@ export default class ServiceRestFormalTemplate<Model = any> {
36
36
  maxResults: number;
37
37
  pageNumber: number;
38
38
  };
39
+ extendEntity<T extends Model>(entity: Model): T;
39
40
  /**
40
41
  * Handles GET requests by retrieving a single record from the database based on the provided request.
41
42
  *
@@ -50,6 +51,22 @@ export default class ServiceRestFormalTemplate<Model = any> {
50
51
  * @return {Promise<HttpResponse<Model[]>>} A promise that resolves to an HTTP response containing an array of models.
51
52
  */
52
53
  protected serveGetList(request: HttpRequest): Promise<HttpResponse<Model[]>>;
54
+ /**
55
+ * Serves a paginated response for the requested page entities.
56
+ *
57
+ * @param {HttpRequest} request The HTTP request containing details needed for pagination processing, such as query parameters.
58
+ * @return {Promise<HttpResponse<Pagination<Model>>>} A promise resolving to an HTTP response containing the paginated list of entities.
59
+ */
60
+ protected servePage(request: HttpRequest): Promise<HttpResponse<Pagination<Model>>>;
61
+ /**
62
+ * Serves a map of models retrieved from the database based on the request query parameters.
63
+ *
64
+ * @param {HttpRequest} request - The HTTP request containing query parameters for retrieving models.
65
+ * @return {Promise<HttpResponse<{[key: string]: Model}>>} A promise that resolves to an HTTP response containing a map of models, where the key is derived from the indexed property of each model.
66
+ */
67
+ protected serveMap(request: HttpRequest): Promise<HttpResponse<{
68
+ [key: string]: Model;
69
+ }>>;
53
70
  /**
54
71
  * Handles a GET request to retrieve a key-value mapping from the database table.
55
72
  * Groups data based on provided key and value parameters, and returns a flattened keymap object.
@@ -60,7 +77,19 @@ export default class ServiceRestFormalTemplate<Model = any> {
60
77
  protected serveGetKeymap(request: HttpRequest): Promise<HttpResponse<{
61
78
  [key: string]: any;
62
79
  }>>;
80
+ /**
81
+ * Handles PUT requests by updating an existing record in the database based on the provided request.
82
+ *
83
+ * @param {HttpRequest<Model>} request - The HTTP request containing the model data to be updated.
84
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the updated model data.
85
+ */
63
86
  protected servePut(request: HttpRequest<Model>): Promise<HttpResponse<Model>>;
87
+ /**
88
+ * Handles POST requests by adding a new record to the database based on the provided request.
89
+ *
90
+ * @param {HttpRequest<Transient<Model>>} request - The HTTP request containing the model data to be added.
91
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the added model data.
92
+ */
64
93
  protected servePost(request: HttpRequest<Transient<Model>>): Promise<HttpResponse<Model>>;
65
94
  protected servePostList(request: HttpRequest<Model[]>): Promise<HttpResponse<Model[]>>;
66
95
  protected servePostKeymap(request: HttpRequest<{
@@ -80,10 +109,6 @@ export default class ServiceRestFormalTemplate<Model = any> {
80
109
  * @protected
81
110
  */
82
111
  protected serveFullList(request: HttpRequest): Promise<HttpResponse<Model[]>>;
83
- protected servePage(request: HttpRequest): Promise<HttpResponse<Pagination<Model>>>;
84
- protected serveMap(request: HttpRequest): Promise<HttpResponse<{
85
- [key: string]: Model;
86
- }>>;
87
112
  protected serveSelect(request: HttpRequest): Promise<HttpResponse<string[]>>;
88
113
  protected serveExist(request: HttpRequest): Promise<HttpResponse<Boolean>>;
89
114
  protected serveCount(request: HttpRequest): Promise<HttpResponse<Number>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ismx-nexo-node-app",
3
- "version": "0.4.59",
3
+ "version": "0.4.60",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf ./dist && npx tsc",
@@ -84,6 +84,10 @@ export default class ServiceRestFormalTemplate<Model=any>
84
84
  return { maxResults, pageNumber }
85
85
  }
86
86
 
87
+ extendEntity<T extends Model>(entity : Model) : T {
88
+ return entity as T;
89
+ }
90
+
87
91
  /**
88
92
  * Handles GET requests by retrieving a single record from the database based on the provided request.
89
93
  *
@@ -92,7 +96,8 @@ export default class ServiceRestFormalTemplate<Model=any>
92
96
  */
93
97
  protected async serveGet(request: HttpRequest): Promise<HttpResponse<Model>> {
94
98
  let id = this.getFormalId(request);
95
- let result = await this.database.one<Model>(this.tableName, id);
99
+ let entity = await this.database.one<Model>(this.tableName, id);
100
+ let result = this.extendEntity(entity);
96
101
  return HttpResponse.ok(result);
97
102
  }
98
103
 
@@ -103,7 +108,38 @@ export default class ServiceRestFormalTemplate<Model=any>
103
108
  * @return {Promise<HttpResponse<Model[]>>} A promise that resolves to an HTTP response containing an array of models.
104
109
  */
105
110
  protected async serveGetList(request: HttpRequest): Promise<HttpResponse<Model[]>> {
106
- return HttpResponse.ok(await this.database.find<Model>(this.tableName, { ...request.query }));
111
+ let entities = await this.database.find<Model>(this.tableName, { ...request.query });
112
+ let result = entities.map(this.extendEntity);
113
+ return HttpResponse.ok(result);
114
+ }
115
+
116
+ /**
117
+ * Serves a paginated response for the requested page entities.
118
+ *
119
+ * @param {HttpRequest} request The HTTP request containing details needed for pagination processing, such as query parameters.
120
+ * @return {Promise<HttpResponse<Pagination<Model>>>} A promise resolving to an HTTP response containing the paginated list of entities.
121
+ */
122
+ protected async servePage(request: HttpRequest): Promise<HttpResponse<Pagination<Model>>> {
123
+ let { maxResults, pageNumber } = this.getFormalPage(request);
124
+ let result = await this.database.page<Model>(this.tableName, "timestamp", maxResults, pageNumber);
125
+ result.elements = result.elements.map(this.extendEntity);
126
+ return HttpResponse.ok(result);
127
+ }
128
+
129
+ /**
130
+ * Serves a map of models retrieved from the database based on the request query parameters.
131
+ *
132
+ * @param {HttpRequest} request - The HTTP request containing query parameters for retrieving models.
133
+ * @return {Promise<HttpResponse<{[key: string]: Model}>>} A promise that resolves to an HTTP response containing a map of models, where the key is derived from the indexed property of each model.
134
+ */
135
+ protected async serveMap(request: HttpRequest): Promise<HttpResponse<{[key: string]: Model}>> {
136
+ let results = await this.database.find<Model>(this.tableName, { ...request.query });
137
+ let response: {[key: string]: Model} = {}; for (let result of results) {
138
+ let key = (result as any)[this.indexer];
139
+ if (!key) return HttpResponse.ok({});
140
+ else response[key] = this.extendEntity(result);
141
+ }
142
+ return HttpResponse.ok(response);
107
143
  }
108
144
 
109
145
  /**
@@ -122,6 +158,12 @@ export default class ServiceRestFormalTemplate<Model=any>
122
158
  return HttpResponse.ok(result);
123
159
  }
124
160
 
161
+ /**
162
+ * Handles PUT requests by updating an existing record in the database based on the provided request.
163
+ *
164
+ * @param {HttpRequest<Model>} request - The HTTP request containing the model data to be updated.
165
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the updated model data.
166
+ */
125
167
  protected async servePut(request: HttpRequest<Model>): Promise<HttpResponse<Model>> {
126
168
  let id = this.getFormalId(request);
127
169
  delete request.body?.[this.indexer as keyof Model];
@@ -129,6 +171,13 @@ export default class ServiceRestFormalTemplate<Model=any>
129
171
  return HttpResponse.ok((await this.serveGet({ query: { [this.indexer]: id } })).content);
130
172
  }
131
173
 
174
+ /**
175
+ * Handles POST requests by adding a new record to the database based on the provided request.
176
+ *
177
+ * @param {HttpRequest<Transient<Model>>} request - The HTTP request containing the model data to be added.
178
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the added model data.
179
+ */
180
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
132
181
  protected async servePost(request: HttpRequest<Transient<Model>>): Promise<HttpResponse<Model>> {
133
182
  let result = await this.database.add<Model>(this.tableName, request.body);
134
183
  let id = result[this.indexer as keyof Model] as unknown as string;
@@ -169,22 +218,6 @@ export default class ServiceRestFormalTemplate<Model=any>
169
218
  return HttpResponse.ok(await Promise.all(promises ?? []));
170
219
  }
171
220
 
172
- protected async servePage(request: HttpRequest): Promise<HttpResponse<Pagination<Model>>> {
173
- let { maxResults, pageNumber } = this.getFormalPage(request);
174
- let results = await this.database.page<Model>(this.tableName, "timestamp", maxResults, pageNumber);
175
- return HttpResponse.ok(results);
176
- }
177
-
178
- protected async serveMap(request: HttpRequest): Promise<HttpResponse<{[key: string]: Model}>> {
179
- let results = await this.database.find<Model>(this.tableName, { ...request.query });
180
- let response: {[key: string]: Model} = {}; for (let result of results) {
181
- let key = (result as any)[this.indexer];
182
- if (!key) return HttpResponse.ok({});
183
- else response[key] = result;
184
- }
185
- return HttpResponse.ok(response);
186
- }
187
-
188
221
  protected async serveSelect(request: HttpRequest): Promise<HttpResponse<string[]>> {
189
222
  let selection = request.query?.["selection"] ?? this.indexer;
190
223
  delete request.query?.["selection"];