ismx-nexo-node-app 0.4.59 → 0.4.61

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,11 @@ class ServiceRestFormalTemplate {
71
71
  let pageNumber = Number.parseInt(pageNumberStr);
72
72
  return { maxResults, pageNumber };
73
73
  }
74
+ extendEntity(entity) {
75
+ return __awaiter(this, void 0, void 0, function* () {
76
+ return entity;
77
+ });
78
+ }
74
79
  /**
75
80
  * Handles GET requests by retrieving a single record from the database based on the provided request.
76
81
  *
@@ -80,7 +85,8 @@ class ServiceRestFormalTemplate {
80
85
  serveGet(request) {
81
86
  return __awaiter(this, void 0, void 0, function* () {
82
87
  let id = this.getFormalId(request);
83
- let result = yield this.database.one(this.tableName, id);
88
+ let entity = yield this.database.one(this.tableName, id);
89
+ let result = yield this.extendEntity(entity);
84
90
  return Service_1.HttpResponse.ok(result);
85
91
  });
86
92
  }
@@ -92,7 +98,44 @@ class ServiceRestFormalTemplate {
92
98
  */
93
99
  serveGetList(request) {
94
100
  return __awaiter(this, void 0, void 0, function* () {
95
- return Service_1.HttpResponse.ok(yield this.database.find(this.tableName, Object.assign({}, request.query)));
101
+ let entities = yield this.database.find(this.tableName, Object.assign({}, request.query));
102
+ let result = yield Promise.all(entities.map(this.extendEntity));
103
+ return Service_1.HttpResponse.ok(result);
104
+ });
105
+ }
106
+ /**
107
+ * Serves a paginated response for the requested page entities.
108
+ *
109
+ * @param {HttpRequest} request The HTTP request containing details needed for pagination processing, such as query parameters.
110
+ * @return {Promise<HttpResponse<Pagination<Model>>>} A promise resolving to an HTTP response containing the paginated list of entities.
111
+ */
112
+ servePage(request) {
113
+ return __awaiter(this, void 0, void 0, function* () {
114
+ let { maxResults, pageNumber } = this.getFormalPage(request);
115
+ let result = yield this.database.page(this.tableName, "timestamp", maxResults, pageNumber);
116
+ result.elements = yield Promise.all(result.elements.map(this.extendEntity));
117
+ return Service_1.HttpResponse.ok(result);
118
+ });
119
+ }
120
+ /**
121
+ * Serves a map of models retrieved from the database based on the request query parameters.
122
+ *
123
+ * @param {HttpRequest} request - The HTTP request containing query parameters for retrieving models.
124
+ * @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.
125
+ */
126
+ serveMap(request) {
127
+ return __awaiter(this, void 0, void 0, function* () {
128
+ let results = yield this.database.find(this.tableName, Object.assign({}, request.query));
129
+ let response = {};
130
+ for (let result of results) {
131
+ let key = result[this.indexer];
132
+ if (!key)
133
+ return Service_1.HttpResponse.ok({});
134
+ else
135
+ response[key] = this.extendEntity(result);
136
+ }
137
+ yield Promise.all(Object.values(response));
138
+ return Service_1.HttpResponse.ok(response);
96
139
  });
97
140
  }
98
141
  /**
@@ -114,20 +157,35 @@ class ServiceRestFormalTemplate {
114
157
  return Service_1.HttpResponse.ok(result);
115
158
  });
116
159
  }
160
+ /**
161
+ * Handles PUT requests by updating an existing record in the database based on the provided request.
162
+ *
163
+ * @param {HttpRequest<Model>} request - The HTTP request containing the model data to be updated.
164
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the updated model data.
165
+ */
117
166
  servePut(request) {
118
167
  return __awaiter(this, void 0, void 0, function* () {
119
168
  var _a;
120
169
  let id = this.getFormalId(request);
121
170
  (_a = request.body) === null || _a === void 0 ? true : delete _a[this.indexer];
122
- let result = yield this.database.update(this.tableName, id, request.body);
123
- return Service_1.HttpResponse.ok((yield this.serveGet({ query: { [this.indexer]: id } })).content);
171
+ let entity = yield this.database.update(this.tableName, id, request.body);
172
+ let result = (yield this.serveGet({ query: { [this.indexer]: id } })).content;
173
+ return Service_1.HttpResponse.ok(result);
124
174
  });
125
175
  }
176
+ /**
177
+ * Handles POST requests by adding a new record to the database based on the provided request.
178
+ *
179
+ * @param {HttpRequest<Transient<Model>>} request - The HTTP request containing the model data to be added.
180
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the added model data.
181
+ */
182
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
126
183
  servePost(request) {
127
184
  return __awaiter(this, void 0, void 0, function* () {
128
- let result = yield this.database.add(this.tableName, request.body);
129
- let id = result[this.indexer];
130
- return Service_1.HttpResponse.ok((yield this.serveGet({ query: { [this.indexer]: id } })).content);
185
+ let entity = yield this.database.add(this.tableName, request.body);
186
+ let id = entity[this.indexer];
187
+ let result = (yield this.serveGet({ query: { [this.indexer]: id } })).content;
188
+ return Service_1.HttpResponse.ok(result);
131
189
  });
132
190
  }
133
191
  servePostList(request) {
@@ -169,27 +227,6 @@ class ServiceRestFormalTemplate {
169
227
  return Service_1.HttpResponse.ok(yield Promise.all(promises !== null && promises !== void 0 ? promises : []));
170
228
  });
171
229
  }
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
230
  serveSelect(request) {
194
231
  return __awaiter(this, void 0, void 0, function* () {
195
232
  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 = Model>(entity: Model): Promise<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.61",
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
+ async extendEntity<T extends Model = Model>(entity : Model) : Promise<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 = await this.extendEntity(entity);
96
101
  return HttpResponse.ok(result);
97
102
  }
98
103
 
@@ -103,7 +108,40 @@ 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 = await Promise.all(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 = await Promise.all(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]: Promise<Model>} = {};
138
+ for (let result of results) {
139
+ let key = (result as any)[this.indexer];
140
+ if (!key) return HttpResponse.ok({});
141
+ else response[key] = this.extendEntity(result);
142
+ }
143
+ await Promise.all(Object.values(response));
144
+ return HttpResponse.ok(response);
107
145
  }
108
146
 
109
147
  /**
@@ -122,17 +160,32 @@ export default class ServiceRestFormalTemplate<Model=any>
122
160
  return HttpResponse.ok(result);
123
161
  }
124
162
 
163
+ /**
164
+ * Handles PUT requests by updating an existing record in the database based on the provided request.
165
+ *
166
+ * @param {HttpRequest<Model>} request - The HTTP request containing the model data to be updated.
167
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the updated model data.
168
+ */
125
169
  protected async servePut(request: HttpRequest<Model>): Promise<HttpResponse<Model>> {
126
170
  let id = this.getFormalId(request);
127
171
  delete request.body?.[this.indexer as keyof Model];
128
- let result = await this.database.update<Model>(this.tableName, id, request.body);
129
- return HttpResponse.ok((await this.serveGet({ query: { [this.indexer]: id } })).content);
172
+ let entity = await this.database.update<Model>(this.tableName, id, request.body);
173
+ let result = (await this.serveGet({ query: { [this.indexer]: id } })).content;
174
+ return HttpResponse.ok(result);
130
175
  }
131
176
 
177
+ /**
178
+ * Handles POST requests by adding a new record to the database based on the provided request.
179
+ *
180
+ * @param {HttpRequest<Transient<Model>>} request - The HTTP request containing the model data to be added.
181
+ * @return {Promise<HttpResponse<Model>>} A promise that resolves to an HTTP response containing the added model data.
182
+ */
183
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
132
184
  protected async servePost(request: HttpRequest<Transient<Model>>): Promise<HttpResponse<Model>> {
133
- let result = await this.database.add<Model>(this.tableName, request.body);
134
- let id = result[this.indexer as keyof Model] as unknown as string;
135
- return HttpResponse.ok((await this.serveGet({ query: { [this.indexer]: id } } )).content);
185
+ let entity = await this.database.add<Model>(this.tableName, request.body);
186
+ let id = entity[this.indexer as keyof Model] as unknown as string;
187
+ let result = (await this.serveGet({ query: { [this.indexer]: id } })).content
188
+ return HttpResponse.ok(result);
136
189
  }
137
190
 
138
191
  protected async servePostList(request: HttpRequest<Model[]>): Promise<HttpResponse<Model[]>> {
@@ -169,22 +222,6 @@ export default class ServiceRestFormalTemplate<Model=any>
169
222
  return HttpResponse.ok(await Promise.all(promises ?? []));
170
223
  }
171
224
 
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
225
  protected async serveSelect(request: HttpRequest): Promise<HttpResponse<string[]>> {
189
226
  let selection = request.query?.["selection"] ?? this.indexer;
190
227
  delete request.query?.["selection"];