ismx-nexo-node-app 0.4.21 → 0.4.23

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.
@@ -95,6 +95,15 @@ class ServiceRestFormalTemplate {
95
95
  return Service_1.HttpResponse.ok(result);
96
96
  });
97
97
  }
98
+ servePut(request) {
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ var _a;
101
+ let id = this.getFormalId(request);
102
+ (_a = request.body) === null || _a === void 0 ? true : delete _a[this.indexer];
103
+ let result = yield this.database.update(this.tableName, id, request.body);
104
+ return Service_1.HttpResponse.ok(result);
105
+ });
106
+ }
98
107
  servePost(request) {
99
108
  return __awaiter(this, void 0, void 0, function* () {
100
109
  return Service_1.HttpResponse.ok(yield this.database.add(this.tableName, request.body));
@@ -169,11 +178,6 @@ class ServiceRestFormalTemplate {
169
178
  return Service_1.HttpResponse.ok((yield this.database.count(this.tableName, Object.assign({}, request.query))));
170
179
  });
171
180
  }
172
- servePut(request) {
173
- return __awaiter(this, void 0, void 0, function* () {
174
- return Service_1.HttpResponse.ok("not implemented yet");
175
- });
176
- }
177
181
  serveDel(request) {
178
182
  return __awaiter(this, void 0, void 0, function* () {
179
183
  return Service_1.HttpResponse.ok("not implemented yet");
@@ -19,7 +19,16 @@ class PostgresUtils {
19
19
  ]));
20
20
  }
21
21
  static columns(table) {
22
- return table.map((t) => t.name);
22
+ return table.map((t) => {
23
+ if (!PostgresUtils.isReservedWord(t.name))
24
+ return t.name;
25
+ else
26
+ return `"${t.name}"`;
27
+ });
28
+ }
29
+ static isReservedWord(word) {
30
+ const reservedWords = new Set(['select', 'from', 'where', 'join', 'table', 'user', 'group', 'order', 'limit', 'offset', 'insert', 'update', 'delete']);
31
+ return reservedWords.has(word.toLowerCase());
23
32
  }
24
33
  static bindOrDefault(table, object, startIndex) {
25
34
  let index = startIndex;
@@ -41,6 +41,7 @@ export default class ServiceRestFormalTemplate<Model = any> {
41
41
  protected serveGetKeymap(request: HttpRequest): Promise<HttpResponse<{
42
42
  [key: string]: any;
43
43
  }>>;
44
+ protected servePut(request: HttpRequest<Model>): Promise<HttpResponse<Model>>;
44
45
  protected servePost(request: HttpRequest<Model>): Promise<HttpResponse<Model>>;
45
46
  protected servePostList(request: HttpRequest<Model[]>): Promise<HttpResponse<Model[]>>;
46
47
  protected servePostKeymap(request: HttpRequest<{
@@ -57,7 +58,6 @@ export default class ServiceRestFormalTemplate<Model = any> {
57
58
  protected serveSelect(request: HttpRequest): Promise<HttpResponse<string[]>>;
58
59
  protected serveExist(request: HttpRequest): Promise<HttpResponse<Boolean>>;
59
60
  protected serveCount(request: HttpRequest): Promise<HttpResponse<Number>>;
60
- protected servePut(request: HttpRequest<Model>): Promise<HttpResponse<Model>>;
61
61
  protected serveDel(request: HttpRequest): Promise<HttpResponse<Model>>;
62
62
  protected unwrap<Res>(request: Promise<HttpResponse<Wrapper<Res>>>): Promise<Res | undefined>;
63
63
  protected fullSelect<Req, Res>(request: HttpRequest<Req>, api: {
@@ -5,6 +5,7 @@ export default abstract class PostgresUtils {
5
5
  static camelToSnake(column: string): string;
6
6
  static snakeToCamel(obj: any): any;
7
7
  static columns(table: Column[]): string[];
8
+ static isReservedWord(word: string): boolean;
8
9
  static bindOrDefault(table: Column[], object: {
9
10
  [p: string]: Primitive;
10
11
  }, startIndex: any): {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ismx-nexo-node-app",
3
- "version": "0.4.21",
3
+ "version": "0.4.23",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf ./dist && npx tsc",
@@ -1,6 +1,6 @@
1
1
  import {HttpRequest, HttpResponse} from "./Service";
2
2
  import ServiceRestFormal, {Wrapper} from "./ServiceRestFormal";
3
- import {Pagination} from "../repository/Repository";
3
+ import {Pagination, Transient} from "../repository/Repository";
4
4
  import RepositoryDatabase from "../repository/RepositoryDatabase";
5
5
 
6
6
  export default class ServiceRestFormalTemplate<Model=any>
@@ -103,6 +103,13 @@ export default class ServiceRestFormalTemplate<Model=any>
103
103
  return HttpResponse.ok(result);
104
104
  }
105
105
 
106
+ protected async servePut(request: HttpRequest<Model>): Promise<HttpResponse<Model>> {
107
+ let id = this.getFormalId(request);
108
+ delete request.body?.[this.indexer as keyof Model];
109
+ let result = await this.database.update<Model>(this.tableName, id, request.body);
110
+ return HttpResponse.ok(result);
111
+ }
112
+
106
113
  protected async servePost(request: HttpRequest<Model>): Promise<HttpResponse<Model>> {
107
114
  return HttpResponse.ok(await this.database.add<Model>(this.tableName, request.body));
108
115
  }
@@ -162,10 +169,6 @@ export default class ServiceRestFormalTemplate<Model=any>
162
169
  return HttpResponse.ok((await this.database.count(this.tableName, { ...request.query })));
163
170
  }
164
171
 
165
- protected async servePut(request: HttpRequest<Model>): Promise<HttpResponse<Model>> {
166
- return HttpResponse.ok("not implemented yet");
167
- }
168
-
169
172
  protected async serveDel(request: HttpRequest): Promise<HttpResponse<Model>> {
170
173
  return HttpResponse.ok("not implemented yet");
171
174
  }
@@ -27,7 +27,16 @@ export default abstract class PostgresUtils
27
27
  }
28
28
 
29
29
  static columns(table: Column[]): string[] {
30
- return table.map((t) => t.name);
30
+ return table.map((t) => {
31
+ if (!PostgresUtils.isReservedWord(t.name))
32
+ return t.name;
33
+ else return `"${t.name}"`;
34
+ });
35
+ }
36
+
37
+ static isReservedWord(word: string): boolean {
38
+ const reservedWords = new Set(['select', 'from', 'where', 'join', 'table', 'user', 'group', 'order', 'limit', 'offset', 'insert', 'update', 'delete']);
39
+ return reservedWords.has(word.toLowerCase());
31
40
  }
32
41
 
33
42
  static bindOrDefault(table: Column[], object: { [p: string]: Primitive }, startIndex: any): { bindings: string[], values: any[] } {