express-ext 0.2.6 → 0.3.0

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.
package/lib/search.js CHANGED
@@ -144,6 +144,57 @@ function buildSortSearch(search, fields, sort) {
144
144
  return sorts;
145
145
  }
146
146
  exports.buildSortSearch = buildSortSearch;
147
+ function clone(obj) {
148
+ if (!obj) {
149
+ return obj;
150
+ }
151
+ if (obj instanceof Date) {
152
+ return new Date(obj.getTime());
153
+ }
154
+ if (typeof obj !== 'object') {
155
+ return obj;
156
+ }
157
+ if (Array.isArray(obj)) {
158
+ var arr = [];
159
+ for (var _i = 0, obj_1 = obj; _i < obj_1.length; _i++) {
160
+ var sub = obj_1[_i];
161
+ var c = clone(sub);
162
+ arr.push(c);
163
+ }
164
+ return arr;
165
+ }
166
+ var x = {};
167
+ var keys = Object.keys(obj);
168
+ for (var _a = 0, keys_1 = keys; _a < keys_1.length; _a++) {
169
+ var k = keys_1[_a];
170
+ var v = obj[k];
171
+ if (v instanceof Date) {
172
+ x[k] = new Date(v.getTime());
173
+ } else {
174
+ switch (typeof v) {
175
+ case 'object':
176
+ x[k] = clone(v);
177
+ break;
178
+ default:
179
+ x[k] = v;
180
+ break;
181
+ }
182
+ }
183
+ }
184
+ return x;
185
+ }
186
+ exports.clone = clone;
187
+ function cloneFilter(obj, page, limit) {
188
+ var f = clone(obj);
189
+ if (!obj.hasOwnProperty(resources_1.resources.page)) {
190
+ obj[resources_1.resources.page] = page;
191
+ }
192
+ if (!obj.hasOwnProperty(resources_1.resources.limit)) {
193
+ obj[resources_1.resources.limit] = limit;
194
+ }
195
+ return f;
196
+ }
197
+ exports.cloneFilter = cloneFilter;
147
198
  function jsonResult(res, result, quick, fields, config) {
148
199
  if (quick && fields && fields.length > 0) {
149
200
  res.status(200).json(toCsv(fields, result)).end();
@@ -255,8 +306,8 @@ function fromUrl(req, arr) {
255
306
  var s = {};
256
307
  var obj = req.query;
257
308
  var keys = Object.keys(obj);
258
- for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
259
- var key = keys_1[_i];
309
+ for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
310
+ var key = keys_2[_i];
260
311
  if (inArray(key, arr)) {
261
312
  var x = obj[key].split(',');
262
313
  setValue(s, key, x);
@@ -335,16 +386,6 @@ function getParameters(obj, config) {
335
386
  var ipageSize = Math.floor(parseFloat(pageSize));
336
387
  if (ipageSize > 0) {
337
388
  r.limit = ipageSize;
338
- var skip = o['skip'];
339
- if (skip && !isNaN(skip)) {
340
- var iskip = Math.floor(parseFloat(skip));
341
- if (iskip >= 0) {
342
- r.offset = iskip;
343
- r.offsetOrNextPageToken = r.offset;
344
- deletePageInfo(o);
345
- return r;
346
- }
347
- }
348
389
  var pageIndex = o['page'];
349
390
  if (!pageIndex) {
350
391
  pageIndex = o['pageIndex'];
@@ -357,37 +398,21 @@ function getParameters(obj, config) {
357
398
  if (ipageIndex < 1) {
358
399
  ipageIndex = 1;
359
400
  }
360
- var firstPageSize = o['firstLimit'];
361
- if (!firstPageSize) {
362
- firstPageSize = o['firstPageSize'];
363
- }
364
- if (!firstPageSize) {
365
- firstPageSize = o['initPageSize'];
366
- }
367
- if (firstPageSize && !isNaN(firstPageSize)) {
368
- var ifirstPageSize = Math.floor(parseFloat(firstPageSize));
369
- if (ifirstPageSize > 0) {
370
- r.offset = ipageSize * (ipageIndex - 2) + ifirstPageSize;
371
- r.offsetOrNextPageToken = r.offset;
372
- deletePageInfo(o);
373
- return r;
374
- }
375
- }
376
- r.offset = ipageSize * (ipageIndex - 1);
377
- r.offsetOrNextPageToken = r.offset;
401
+ r.page = ipageIndex;
402
+ r.pageOrNextPageToken = r.page;
378
403
  deletePageInfo(o);
379
404
  return r;
380
405
  }
381
- r.offset = 0;
406
+ r.page = 1;
382
407
  if (r.nextPageToken && r.nextPageToken.length > 0) {
383
- r.offsetOrNextPageToken = r.nextPageToken;
408
+ r.pageOrNextPageToken = r.nextPageToken;
384
409
  }
385
410
  deletePageInfo(o);
386
411
  return r;
387
412
  }
388
413
  }
389
414
  if (r.nextPageToken && r.nextPageToken.length > 0) {
390
- r.offsetOrNextPageToken = r.nextPageToken;
415
+ r.pageOrNextPageToken = r.nextPageToken;
391
416
  }
392
417
  deletePageInfo(o);
393
418
  return r;
@@ -426,8 +451,8 @@ function getParameters(obj, config) {
426
451
  if (skip && !isNaN(skip)) {
427
452
  var iskip = Math.floor(parseFloat(skip));
428
453
  if (iskip >= 0) {
429
- r.offset = iskip;
430
- r.offsetOrNextPageToken = r.offset;
454
+ r.page = iskip;
455
+ r.pageOrNextPageToken = r.page;
431
456
  deletePageInfo(o, arr);
432
457
  return r;
433
458
  }
@@ -450,27 +475,27 @@ function getParameters(obj, config) {
450
475
  if (firstPageSize && !isNaN(firstPageSize)) {
451
476
  var ifirstPageSize = Math.floor(parseFloat(firstPageSize));
452
477
  if (ifirstPageSize > 0) {
453
- r.offset = ipageSize * (ipageIndex - 2) + ifirstPageSize;
454
- r.offsetOrNextPageToken = r.offset;
478
+ r.page = ipageSize * (ipageIndex - 2) + ifirstPageSize;
479
+ r.pageOrNextPageToken = r.page;
455
480
  deletePageInfo(o, arr);
456
481
  return r;
457
482
  }
458
483
  }
459
- r.offset = ipageSize * (ipageIndex - 1);
460
- r.offsetOrNextPageToken = r.offset;
484
+ r.page = ipageSize * (ipageIndex - 1);
485
+ r.pageOrNextPageToken = r.page;
461
486
  deletePageInfo(o, arr);
462
487
  return r;
463
488
  }
464
- r.offset = 0;
489
+ r.page = 0;
465
490
  if (r.nextPageToken && r.nextPageToken.length > 0) {
466
- r.offsetOrNextPageToken = r.nextPageToken;
491
+ r.pageOrNextPageToken = r.nextPageToken;
467
492
  }
468
493
  deletePageInfo(o, arr);
469
494
  return r;
470
495
  }
471
496
  }
472
497
  if (r.nextPageToken && r.nextPageToken.length > 0) {
473
- r.offsetOrNextPageToken = r.nextPageToken;
498
+ r.pageOrNextPageToken = r.nextPageToken;
474
499
  }
475
500
  deletePageInfo(o, arr);
476
501
  return r;
@@ -545,8 +570,8 @@ function buildMetadata(attributes, includeDate) {
545
570
  var keys = Object.keys(attributes);
546
571
  var dates = [];
547
572
  var numbers = [];
548
- for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
549
- var key = keys_2[_i];
573
+ for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {
574
+ var key = keys_3[_i];
550
575
  var attr = attributes[key];
551
576
  if (attr.type === 'number' || attr.type === 'integer') {
552
577
  numbers.push(key);
@@ -614,8 +639,8 @@ function format(obj, dates, nums) {
614
639
  }
615
640
  } else if (typeof v === 'object') {
616
641
  var keys = Object.keys(v);
617
- for (var _a = 0, keys_3 = keys; _a < keys_3.length; _a++) {
618
- var key = keys_3[_a];
642
+ for (var _a = 0, keys_4 = keys; _a < keys_4.length; _a++) {
643
+ var key = keys_4[_a];
619
644
  var v2 = v[key];
620
645
  if (v2 instanceof Date) {
621
646
  continue;
@@ -657,8 +682,8 @@ function format(obj, dates, nums) {
657
682
  }
658
683
  } else if (typeof v === 'object') {
659
684
  var keys = Object.keys(v);
660
- for (var _c = 0, keys_4 = keys; _c < keys_4.length; _c++) {
661
- var key = keys_4[_c];
685
+ for (var _c = 0, keys_5 = keys; _c < keys_5.length; _c++) {
686
+ var key = keys_5[_c];
662
687
  var v2 = v[key];
663
688
  if (v2 instanceof Date) {
664
689
  delete o[key];
@@ -683,3 +708,22 @@ function format(obj, dates, nums) {
683
708
  return o;
684
709
  }
685
710
  exports.format = format;
711
+ function getMetadataFunc(viewService, dates, numbers, keys) {
712
+ var m = { dates: dates, numbers: numbers };
713
+ if ((m.dates && m.dates.length > 0) || (m.numbers && m.numbers.length > 0)) {
714
+ return m;
715
+ }
716
+ if (keys) {
717
+ if (!Array.isArray(keys)) {
718
+ return buildMetadata(keys);
719
+ }
720
+ }
721
+ if (typeof viewService !== 'function' && viewService.metadata) {
722
+ var metadata = viewService.metadata();
723
+ if (metadata) {
724
+ return buildMetadata(metadata);
725
+ }
726
+ }
727
+ return undefined;
728
+ }
729
+ exports.getMetadataFunc = getMetadataFunc;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "express-ext",
3
- "version": "0.2.6",
3
+ "version": "0.3.0",
4
4
  "description": "express-ext",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
@@ -1,17 +1,17 @@
1
- import {Request, Response} from 'express';
2
- import {checkId, create, isTypeError, update} from './edit';
3
- import {handleError, Log} from './http';
4
- import {LoadController} from './LoadController';
5
- import {Attribute, Attributes, ErrorMessage} from './metadata';
6
- import {resources} from './resources';
7
- import {buildAndCheckId, buildId} from './view';
1
+ import { Request, Response } from 'express';
2
+ import { checkId, create, isTypeError, update } from './edit';
3
+ import { handleError, Log } from './http';
4
+ import { LoadController } from './LoadController';
5
+ import { Attribute, Attributes, ErrorMessage } from './metadata';
6
+ import { resources, StringMap } from './resources';
7
+ import { buildAndCheckId, buildId } from './view';
8
8
 
9
9
  export type Build<T> = (res: Response, obj: T, isCreate?: boolean, isPatch?: boolean) => void;
10
- export type Validate<T> = (obj: T, patch?: boolean) => Promise<ErrorMessage[]>;
11
- export type Save<T> = (obj: T, ctx?: any) => Promise<number|T|ErrorMessage[]>;
10
+ export type Validate<T> = (obj: T, resource?: StringMap, patch?: boolean) => Promise<ErrorMessage[]>;
11
+ export type Save<T> = (obj: T, ctx?: any) => Promise<number | T | ErrorMessage[]>;
12
12
  export interface GenericService<T, ID, R> {
13
- metadata?(): Attributes|undefined;
14
- load(id: ID, ctx?: any): Promise<T|null>;
13
+ metadata?(): Attributes | undefined;
14
+ load(id: ID, ctx?: any): Promise<T | null>;
15
15
  create(obj: T, ctx?: any): Promise<R>;
16
16
  update(obj: T, ctx?: any): Promise<R>;
17
17
  patch?(obj: Partial<T>, ctx?: any): Promise<R>;
@@ -20,7 +20,13 @@ export interface GenericService<T, ID, R> {
20
20
  export class GenericController<T, ID> extends LoadController<T, ID> {
21
21
  metadata?: Attributes;
22
22
  returnNumber?: boolean;
23
- constructor(log: Log, public service: GenericService<T, ID, number|T|ErrorMessage[]>, public build?: Build<T>, public validate?: Validate<T>, returnNumber?: boolean) {
23
+ constructor(
24
+ log: Log,
25
+ public service: GenericService<T, ID, number | T | ErrorMessage[]>,
26
+ public build?: Build<T>,
27
+ public validate?: Validate<T>,
28
+ returnNumber?: boolean,
29
+ ) {
24
30
  super(log, service);
25
31
  this.returnNumber = returnNumber;
26
32
  if (service.metadata) {
@@ -44,13 +50,13 @@ export class GenericController<T, ID> extends LoadController<T, ID> {
44
50
  update(req: Request, res: Response): void {
45
51
  const id = buildAndCheckIdWithBody<T, ID, any>(req, res, this.keys, this.service.update);
46
52
  if (id) {
47
- validateAndUpdate(res, req.body, false, this.service.update, this.log, this.validate, this.build);
53
+ validateAndUpdate(res, req.body, false, this.service.update, this.log, this.validate, undefined, this.build);
48
54
  }
49
55
  }
50
56
  patch(req: Request, res: Response): void {
51
57
  const id = buildAndCheckIdWithBody<T, ID, any>(req, res, this.keys, this.service.patch);
52
58
  if (id && this.service.patch) {
53
- validateAndUpdate(res, req.body, true, this.service.patch, this.log, this.validate, this.build);
59
+ validateAndUpdate(res, req.body, true, this.service.patch, this.log, this.validate, undefined, this.build);
54
60
  }
55
61
  }
56
62
  delete(req: Request, res: Response): void {
@@ -59,46 +65,71 @@ export class GenericController<T, ID> extends LoadController<T, ID> {
59
65
  if (!this.service.delete) {
60
66
  res.status(405).end('Method Not Allowed');
61
67
  } else {
62
- this.service.delete(id).then(count => {
63
- res.status(getDeleteStatus(count)).json(count).end();
64
- }).catch(err => handleError(err, res, this.log));
68
+ this.service
69
+ .delete(id)
70
+ .then((count) => {
71
+ res.status(getDeleteStatus(count)).json(count).end();
72
+ })
73
+ .catch((err) => handleError(err, res, this.log));
65
74
  }
66
75
  }
67
76
  }
68
77
  }
69
- export function validateAndCreate<T>(req: Request, res: Response, save: Save<T>, log: Log, validate?: Validate<T>, build?: Build<T>, returnNumber?: boolean): void {
78
+ export function validateAndCreate<T>(
79
+ req: Request,
80
+ res: Response,
81
+ save: Save<T>,
82
+ log: Log,
83
+ validate?: Validate<T>,
84
+ build?: Build<T>,
85
+ returnNumber?: boolean,
86
+ ): void {
70
87
  const obj = req.body;
71
88
  if (!obj || obj === '') {
72
89
  res.status(400).end('The request body cannot be empty.');
73
90
  } else {
74
91
  if (validate) {
75
- validate(obj).then(errors => {
76
- if (errors && errors.length > 0) {
77
- res.status(getStatusCode(errors)).json(errors).end();
78
- } else {
79
- if (build) {
80
- build(res, obj, true);
92
+ validate(obj)
93
+ .then((errors) => {
94
+ if (errors && errors.length > 0) {
95
+ res.status(getStatusCode(errors)).json(errors).end();
96
+ } else {
97
+ if (build) {
98
+ build(res, obj, true);
99
+ }
100
+ create(res, obj, save, log, returnNumber);
81
101
  }
82
- create(res, obj, save, log, returnNumber);
83
- }
84
- }).catch(err => handleError(err, res, log));
102
+ })
103
+ .catch((err) => handleError(err, res, log));
85
104
  } else {
86
105
  create(res, obj, save, log, returnNumber);
87
106
  }
88
107
  }
89
108
  }
90
- export function validateAndUpdate<T>(res: Response, obj: T, isPatch: boolean, save: Save<T>, log: Log, validate?: Validate<T>, build?: Build<T>, returnNumber?: boolean): void {
109
+ export function validateAndUpdate<T>(
110
+ res: Response,
111
+ obj: T,
112
+ isPatch: boolean,
113
+ save: Save<T>,
114
+ log: Log,
115
+ validate?: Validate<T>,
116
+ resource?: StringMap,
117
+ build?: Build<T>,
118
+ returnNumber?: boolean,
119
+ ): void {
91
120
  if (validate) {
92
- validate(obj, isPatch).then(errors => {
93
- if (errors && errors.length > 0) {
94
- res.status(getStatusCode(errors)).json(errors).end();
95
- } else {
96
- if (build) {
97
- build(res, obj, false, isPatch);
121
+ validate(obj, resource, isPatch)
122
+ .then((errors) => {
123
+ if (errors && errors.length > 0) {
124
+ res.status(getStatusCode(errors)).json(errors).end();
125
+ } else {
126
+ if (build) {
127
+ build(res, obj, false, isPatch);
128
+ }
129
+ update(res, obj, save, log, returnNumber);
98
130
  }
99
- update(res, obj, save, log, returnNumber);
100
- }
101
- }).catch(err => handleError(err, res, log));
131
+ })
132
+ .catch((err) => handleError(err, res, log));
102
133
  } else {
103
134
  update(res, obj, save, log, returnNumber);
104
135
  }
@@ -135,7 +166,7 @@ export function getDeleteStatus(count: number): number {
135
166
  }
136
167
  }
137
168
  export function getStatusCode(errs: ErrorMessage[]): number {
138
- return (isTypeError(errs) ? 400 : 422);
169
+ return isTypeError(errs) ? 400 : 422;
139
170
  }
140
171
  export interface ModelConfig {
141
172
  id?: string;
@@ -147,13 +178,33 @@ export interface ModelConfig {
147
178
  createdAt?: string;
148
179
  version?: string;
149
180
  }
150
- export function useBuild<T>(c: ModelConfig, generate?: (() => string)): Build<T> {
151
- const b = new Builder<T>(generate, c.id ? c.id : '', c.payload ? c.payload : '', c.user ? c.user : '', c.updatedBy ? c.updatedBy : '', c.updatedAt ? c.updatedAt : '', c.createdBy ? c.createdBy : '', c.createdAt ? c.createdAt : '', c.version ? c.version : '');
181
+ export function useBuild<T>(c: ModelConfig, generate?: () => string): Build<T> {
182
+ const b = new Builder<T>(
183
+ generate,
184
+ c.id ? c.id : '',
185
+ c.payload ? c.payload : '',
186
+ c.user ? c.user : '',
187
+ c.updatedBy ? c.updatedBy : '',
188
+ c.updatedAt ? c.updatedAt : '',
189
+ c.createdBy ? c.createdBy : '',
190
+ c.createdAt ? c.createdAt : '',
191
+ c.version ? c.version : '',
192
+ );
152
193
  return b.build;
153
194
  }
154
195
  // tslint:disable-next-line:max-classes-per-file
155
196
  export class Builder<T> {
156
- constructor(public generate: (() => string)|undefined, public id: string, public payload: string, public user: string, public updatedBy: string, public updatedAt: string, public createdBy: string, public createdAt: string, public version: string) {
197
+ constructor(
198
+ public generate: (() => string) | undefined,
199
+ public id: string,
200
+ public payload: string,
201
+ public user: string,
202
+ public updatedBy: string,
203
+ public updatedAt: string,
204
+ public createdBy: string,
205
+ public createdAt: string,
206
+ public version: string,
207
+ ) {
157
208
  this.build = this.build.bind(this);
158
209
  }
159
210
  build(res: Response, obj: T, isCreate?: boolean, isPatch?: boolean): void {
@@ -2,8 +2,8 @@ import { Request, Response } from 'express';
2
2
  import { Build, GenericController, GenericService } from './GenericController';
3
3
  import { handleError, Log } from './http';
4
4
  import { ErrorMessage } from './metadata';
5
- import { buildArray, Filter, format, fromRequest, getParameters, initializeConfig, jsonResult, SearchConfig, SearchResult } from './search';
6
- import { getMetadataFunc } from './search_func';
5
+ import { StringMap } from './resources';
6
+ import { buildArray, Filter, format, fromRequest, getMetadataFunc, getParameters, initializeConfig, jsonResult, SearchConfig, SearchResult } from './search';
7
7
 
8
8
  export class GenericSearchController<T, ID, S extends Filter> extends GenericController<T, ID> {
9
9
  config?: SearchConfig;
@@ -19,7 +19,7 @@ export class GenericSearchController<T, ID, S extends Filter> extends GenericCon
19
19
  service: GenericService<T, ID, number | ErrorMessage[]>,
20
20
  config?: SearchConfig,
21
21
  build?: Build<T>,
22
- validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>,
22
+ validate?: (obj: T, resource?: StringMap, patch?: boolean) => Promise<ErrorMessage[]>,
23
23
  dates?: string[],
24
24
  numbers?: string[],
25
25
  ) {
@@ -44,7 +44,7 @@ export class GenericSearchController<T, ID, S extends Filter> extends GenericCon
44
44
  const s = fromRequest<S>(req, buildArray(this.array, this.fields, this.excluding));
45
45
  const l = getParameters(s, this.config);
46
46
  const s2 = format(s, this.dates, this.numbers);
47
- this.find(s2, l.limit, l.offsetOrNextPageToken, l.fields)
47
+ this.find(s2, l.limit, l.pageOrNextPageToken, l.fields)
48
48
  .then((result) => jsonResult(res, result, this.csv, l.fields, this.config))
49
49
  .catch((err) => handleError(err, res, this.log));
50
50
  }
@@ -2,8 +2,7 @@ import { Request, Response } from 'express';
2
2
  import { handleError, Log } from './http';
3
3
  import { LoadController, ViewService } from './LoadController';
4
4
  import { Attribute, Attributes } from './metadata';
5
- import { buildArray, Filter, format, fromRequest, getParameters, initializeConfig, jsonResult, SearchConfig, SearchResult } from './search';
6
- import { getMetadataFunc } from './search_func';
5
+ import { buildArray, Filter, format, fromRequest, getMetadataFunc, getParameters, initializeConfig, jsonResult, SearchConfig, SearchResult } from './search';
7
6
 
8
7
  export interface Search {
9
8
  search(req: Request, res: Response): void;
@@ -79,7 +78,7 @@ export class LoadSearchController<T, ID, S extends Filter> extends LoadControlle
79
78
  const s = fromRequest<S>(req, buildArray(this.array, this.fields, this.excluding));
80
79
  const l = getParameters(s, this.config);
81
80
  const s2 = format(s, this.dates, this.numbers);
82
- this.find(s2, l.limit, l.offsetOrNextPageToken, l.fields)
81
+ this.find(s2, l.limit, l.pageOrNextPageToken, l.fields)
83
82
  .then((result) => jsonResult(res, result, this.csv, l.fields, this.config))
84
83
  .catch((err) => handleError(err, res, this.log));
85
84
  }
@@ -122,7 +121,7 @@ export class QueryController<T, ID, S extends Filter> extends LoadController<T,
122
121
  const l = getParameters(s, this.config);
123
122
  const s2 = format(s, this.dates, this.numbers);
124
123
  this.query
125
- .search(s2, l.limit, l.offsetOrNextPageToken, l.fields)
124
+ .search(s2, l.limit, l.pageOrNextPageToken, l.fields)
126
125
  .then((result) => jsonResult(res, result, this.csv, l.fields, this.config))
127
126
  .catch((err) => handleError(err, res, this.log));
128
127
  }
@@ -2,8 +2,8 @@ import { Request, Response } from 'express';
2
2
  import { Build, GenericController, GenericService } from './GenericController';
3
3
  import { handleError, Log } from './http';
4
4
  import { ErrorMessage } from './metadata';
5
- import { buildArray, Filter, format, fromRequest, getParameters, initializeConfig, jsonResult, SearchConfig, SearchResult } from './search';
6
- import { getMetadataFunc } from './search_func';
5
+ import { StringMap } from './resources';
6
+ import { buildArray, Filter, format, fromRequest, getMetadataFunc, getParameters, initializeConfig, jsonResult, SearchConfig, SearchResult } from './search';
7
7
 
8
8
  export interface Service<T, ID, R, S extends Filter> extends GenericService<T, ID, R> {
9
9
  search: (s: S, limit?: number, skip?: number | string, fields?: string[]) => Promise<SearchResult<T>>;
@@ -21,7 +21,7 @@ export class LowcodeController<T, ID, S extends Filter> extends GenericControlle
21
21
  public lowCodeService: Service<T, ID, number | ErrorMessage[], S>,
22
22
  config?: SearchConfig,
23
23
  build?: Build<T>,
24
- validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>,
24
+ validate?: (obj: T, resource?: StringMap, patch?: boolean) => Promise<ErrorMessage[]>,
25
25
  dates?: string[],
26
26
  numbers?: string[],
27
27
  ) {
@@ -47,7 +47,7 @@ export class LowcodeController<T, ID, S extends Filter> extends GenericControlle
47
47
  const l = getParameters(s, this.config);
48
48
  const s2 = format(s, this.dates, this.numbers);
49
49
  this.lowCodeService
50
- .search(s2, l.limit, l.offsetOrNextPageToken, l.fields)
50
+ .search(s2, l.limit, l.pageOrNextPageToken, l.fields)
51
51
  .then((result) => jsonResult(res, result, this.csv, l.fields, this.config))
52
52
  .catch((err) => handleError(err, res, this.log));
53
53
  }
@@ -65,7 +65,7 @@ export class Controller<T, ID, S extends Filter> extends GenericController<T, ID
65
65
  log: Log,
66
66
  public lowCodeService: Service<T, ID, number | T | ErrorMessage[], S>,
67
67
  build?: Build<T>,
68
- validate?: (obj: T, patch?: boolean) => Promise<ErrorMessage[]>,
68
+ validate?: (obj: T, resource?: StringMap, patch?: boolean) => Promise<ErrorMessage[]>,
69
69
  config?: SearchConfig,
70
70
  dates?: string[],
71
71
  numbers?: string[],
@@ -92,7 +92,7 @@ export class Controller<T, ID, S extends Filter> extends GenericController<T, ID
92
92
  const l = getParameters(s, this.config);
93
93
  const s2 = format(s, this.dates, this.numbers);
94
94
  this.lowCodeService
95
- .search(s2, l.limit, l.offsetOrNextPageToken, l.fields)
95
+ .search(s2, l.limit, l.pageOrNextPageToken, l.fields)
96
96
  .then((result) => jsonResult(res, result, this.csv, l.fields, this.config))
97
97
  .catch((err) => handleError(err, res, this.log));
98
98
  }
@@ -36,7 +36,7 @@ export class SearchController<T, S extends Filter> {
36
36
  const s = fromRequest<S>(req, buildArray(this.array, this.fields, this.excluding));
37
37
  const l = getParameters(s, this.config);
38
38
  const s2 = format(s, this.dates, this.numbers);
39
- this.find(s2, l.limit, l.offsetOrNextPageToken, l.fields)
39
+ this.find(s2, l.limit, l.pageOrNextPageToken, l.fields)
40
40
  .then((result) => jsonResult(res, result, this.csv, l.fields, this.config))
41
41
  .catch((err) => handleError(err, res, this.log));
42
42
  }