ismx-nexo-node-app 0.3.33 → 0.3.35

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.
@@ -17,8 +17,6 @@ const ServiceRestFormal_1 = __importDefault(require("./ServiceRestFormal"));
17
17
  class ServiceRestFormalTemplate {
18
18
  constructor(resource, database, tableName) {
19
19
  this.indexer = "id";
20
- this.unwrap = ServiceRestFormal_1.default.unwrap;
21
- this.fullSelect = ServiceRestFormal_1.default.fullSelect;
22
20
  this.resource = resource;
23
21
  this.database = database;
24
22
  this.tableName = tableName;
@@ -141,5 +139,15 @@ class ServiceRestFormalTemplate {
141
139
  return Service_1.HttpResponse.ok("not implemented yet");
142
140
  });
143
141
  }
142
+ unwrap(request) {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ return ServiceRestFormal_1.default.unwrap(request);
145
+ });
146
+ }
147
+ fullSelect(request, api) {
148
+ return __awaiter(this, void 0, void 0, function* () {
149
+ return ServiceRestFormal_1.default.fullSelect(request, api);
150
+ });
151
+ }
144
152
  }
145
153
  exports.default = ServiceRestFormalTemplate;
@@ -72,7 +72,7 @@ class RepositoryDatabasePostgres extends RepositoryDatabase_1.default {
72
72
  return __awaiter(this, void 0, void 0, function* () {
73
73
  if (!this.tables[tableName])
74
74
  throw new Error(`table ${tableName} does not exist`);
75
- let { where, values } = this.toQuery(tableName, filters);
75
+ let { where, values } = this.toWhere(tableName, filters);
76
76
  let query = `SELECT * FROM ${this.schema}.${tableName} WHERE ${where}`;
77
77
  return this.query(query, values);
78
78
  });
@@ -137,7 +137,7 @@ class RepositoryDatabasePostgres extends RepositoryDatabase_1.default {
137
137
  let table = this.tables[tableName];
138
138
  let columns = PostgresUtils_1.default.columns(table);
139
139
  let offset = maxResults * pageNumber;
140
- let { where, values } = this.toQuery(tableName, filters, "", 4);
140
+ let { where, values } = this.toWhere(tableName, filters, "", 4);
141
141
  let query = `SELECT * FROM ${this.schema}.${tableName} WHERE ${where} ORDER BY $1 LIMIT $2 OFFSET $3`;
142
142
  let elements = this.query(query, [sortKey, maxResults, offset, ...values]);
143
143
  let total = this.count(tableName, filters);
@@ -148,7 +148,7 @@ class RepositoryDatabasePostgres extends RepositoryDatabase_1.default {
148
148
  return __awaiter(this, void 0, void 0, function* () {
149
149
  if (!this.tables[tableName])
150
150
  throw new Error(`table ${tableName} does not exist`);
151
- let { where, values } = this.toQuery(tableName, filters);
151
+ let { where, values } = this.toWhere(tableName, filters);
152
152
  let query = `SELECT count(*) as count FROM ${this.schema}.${tableName} WHERE ${where}`;
153
153
  return this.query(query, values).then((result) => result[0].count);
154
154
  });
@@ -157,7 +157,7 @@ class RepositoryDatabasePostgres extends RepositoryDatabase_1.default {
157
157
  return __awaiter(this, void 0, void 0, function* () {
158
158
  if (!this.tables[tableName])
159
159
  throw new Error(`table ${tableName} does not exist`);
160
- let { where, values } = this.toQuery(tableName, filters);
160
+ let { where, values } = this.toWhere(tableName, filters);
161
161
  let query = `SELECT json_agg(u.${select}) as list FROM ${this.schema}.${tableName} u WHERE ${where}`;
162
162
  return this.query(query, values).then((result) => result[0].list);
163
163
  });
@@ -167,7 +167,7 @@ class RepositoryDatabasePostgres extends RepositoryDatabase_1.default {
167
167
  throw new Error(`not implemented yet`);
168
168
  });
169
169
  }
170
- toQuery(tableName, filters, alias = "", index = 1) {
170
+ toWhere(tableName, filters, alias = "", index = 1) {
171
171
  let table = this.tables[tableName];
172
172
  let columns = PostgresUtils_1.default.columns(table);
173
173
  let elements = Object.entries(filters !== null && filters !== void 0 ? filters : []);
@@ -1,5 +1,5 @@
1
1
  import { HttpRequest, HttpResponse } from "./Service";
2
- import ServiceRestFormal from "./ServiceRestFormal";
2
+ import ServiceRestFormal, { Wrapper } from "./ServiceRestFormal";
3
3
  import { Pagination } from "../repository/RepositoryDatabase";
4
4
  import RepositoryDatabase from "../repository/RepositoryDatabase";
5
5
  export default class ServiceRestFormalTemplate<Model = any> {
@@ -39,6 +39,9 @@ export default class ServiceRestFormalTemplate<Model = any> {
39
39
  protected servePost(request: HttpRequest<Model>): Promise<HttpResponse<Model>>;
40
40
  protected servePut(request: HttpRequest<Model>): Promise<HttpResponse<Model>>;
41
41
  protected serveDel(request: HttpRequest): Promise<HttpResponse<Model>>;
42
- protected readonly unwrap: typeof ServiceRestFormal.unwrap;
43
- protected readonly fullSelect: typeof ServiceRestFormal.fullSelect;
42
+ protected unwrap<Res>(request: Promise<HttpResponse<Wrapper<Res>>>): Promise<Res | undefined>;
43
+ protected fullSelect<Req, Res>(request: HttpRequest<Req>, api: {
44
+ select: ServiceRestFormal<Req, string[]>;
45
+ full: ServiceRestFormal<Req, Res>;
46
+ }): Promise<(Awaited<Res> | undefined)[]>;
44
47
  }
@@ -45,6 +45,11 @@ export default class RepositoryDatabasePostgres extends RepositoryDatabase {
45
45
  [key: string]: Primitive | Array<Primitive>;
46
46
  }): Promise<string[]>;
47
47
  del<T>(tableName: string, id: string): Promise<T>;
48
- private toQuery;
48
+ toWhere(tableName: string, filters?: {
49
+ [key: string]: Primitive | Array<Primitive>;
50
+ }, alias?: string, index?: number): {
51
+ where: string;
52
+ values: (string | number | Date | Primitive[] | null | undefined)[];
53
+ };
49
54
  private introspect;
50
55
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ismx-nexo-node-app",
3
- "version": "0.3.33",
3
+ "version": "0.3.35",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "build": "rm -rf ./dist && npx tsc",
@@ -1,5 +1,5 @@
1
1
  import {HttpRequest, HttpResponse} from "./Service";
2
- import ServiceRestFormal from "./ServiceRestFormal";
2
+ import ServiceRestFormal, {Wrapper} from "./ServiceRestFormal";
3
3
  import {Pagination} from "../repository/RepositoryDatabase";
4
4
  import RepositoryDatabase from "../repository/RepositoryDatabase";
5
5
 
@@ -138,6 +138,11 @@ export default class ServiceRestFormalTemplate<Model=any>
138
138
  return HttpResponse.ok("not implemented yet");
139
139
  }
140
140
 
141
- protected readonly unwrap = ServiceRestFormal.unwrap
142
- protected readonly fullSelect = ServiceRestFormal.fullSelect
141
+ protected async unwrap<Res>(request: Promise<HttpResponse<Wrapper<Res>>>): Promise<Res | undefined> {
142
+ return ServiceRestFormal.unwrap<Res>(request);
143
+ }
144
+
145
+ protected async fullSelect<Req, Res>(request: HttpRequest<Req>, api: { select: ServiceRestFormal<Req, string[]>, full: ServiceRestFormal<Req, Res> }) {
146
+ return ServiceRestFormal.fullSelect(request, api);
147
+ }
143
148
  }
@@ -72,7 +72,7 @@ export default class RepositoryDatabasePostgres extends RepositoryDatabase
72
72
  async find<T>(tableName: string, filters: { [key: string]: Primitive | Array<any> }): Promise<T[]>
73
73
  {
74
74
  if (!this.tables[tableName]) throw new Error(`table ${tableName} does not exist`);
75
- let { where, values } = this.toQuery(tableName, filters);
75
+ let { where, values } = this.toWhere(tableName, filters);
76
76
  let query = `SELECT * FROM ${this.schema}.${tableName} WHERE ${where}`
77
77
  return this.query<T>(query, values);
78
78
  }
@@ -136,7 +136,7 @@ export default class RepositoryDatabasePostgres extends RepositoryDatabase
136
136
  let columns = PostgresUtils.columns(table);
137
137
  let offset = maxResults * pageNumber;
138
138
 
139
- let { where, values } = this.toQuery(tableName, filters, "", 4);
139
+ let { where, values } = this.toWhere(tableName, filters, "", 4);
140
140
  let query = `SELECT * FROM ${this.schema}.${tableName} WHERE ${ where } ORDER BY $1 LIMIT $2 OFFSET $3`;
141
141
  let elements = this.query<T>(query, [sortKey, maxResults, offset, ...values])
142
142
 
@@ -149,7 +149,7 @@ export default class RepositoryDatabasePostgres extends RepositoryDatabase
149
149
  async count(tableName: string, filters?: { [key: string]: Primitive | Array<Primitive> }): Promise<number>
150
150
  {
151
151
  if (!this.tables[tableName]) throw new Error(`table ${tableName} does not exist`);
152
- let { where, values } = this.toQuery(tableName, filters);
152
+ let { where, values } = this.toWhere(tableName, filters);
153
153
  let query = `SELECT count(*) as count FROM ${this.schema}.${tableName} WHERE ${where}`
154
154
  return this.query<{count:number}>(query, values).then((result) => result[0].count);
155
155
  }
@@ -157,7 +157,7 @@ export default class RepositoryDatabasePostgres extends RepositoryDatabase
157
157
  async select(tableName: string, select: string, filters?: { [key: string]: Primitive | Array<Primitive> }): Promise<string[]>
158
158
  {
159
159
  if (!this.tables[tableName]) throw new Error(`table ${tableName} does not exist`);
160
- let { where, values } = this.toQuery(tableName, filters);
160
+ let { where, values } = this.toWhere(tableName, filters);
161
161
  let query = `SELECT json_agg(u.${select}) as list FROM ${this.schema}.${tableName} u WHERE ${where}`
162
162
  return this.query<{list:string[]}>(query, values).then((result) => result[0].list);
163
163
  }
@@ -167,7 +167,7 @@ export default class RepositoryDatabasePostgres extends RepositoryDatabase
167
167
  throw new Error(`not implemented yet`);
168
168
  }
169
169
 
170
- private toQuery(tableName: string, filters?: { [key: string]: Primitive | Array<Primitive> }, alias:string = "", index=1)
170
+ toWhere(tableName: string, filters?: { [key: string]: Primitive | Array<Primitive> }, alias:string = "", index=1)
171
171
  {
172
172
  let table = this.tables[tableName];
173
173
  let columns = PostgresUtils.columns(table);