@qrvey/data-persistence 0.3.7-beta → 0.3.8

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.
@@ -3,11 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildSort = exports.buildQueryIndex = exports.buildFilter = void 0;
4
4
  const constants_1 = require("../utils/constants");
5
5
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
- function buildFilter(attribute, value, operator = 'EQUAL') {
6
+ function buildFilter(attribute, value, operator = 'EQUAL', relativePath = undefined) {
7
7
  return {
8
8
  attribute,
9
9
  operator,
10
10
  value,
11
+ relativePath,
11
12
  };
12
13
  }
13
14
  exports.buildFilter = buildFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"crudHelpers.js","sourceRoot":"","sources":["../../../src/helpers/crudHelpers.ts"],"names":[],"mappings":";;;AAEA,kDAAqD;AAErD,8DAA8D;AAC9D,SAAgB,WAAW,CAAC,SAAiB,EAAE,KAAU,EAAE,QAAQ,GAAG,OAAO;IACzE,OAAO;QACH,SAAS;QACT,QAAQ;QACR,KAAK;KACR,CAAC;AACN,CAAC;AAND,kCAMC;AAED,SAAgB,eAAe,CAAC,SAAiB,EAAE,OAAiB;IAChE,OAAO;QACH,SAAS;QACT,OAAO;KACV,CAAC;AACN,CAAC;AALD,0CAKC;AAED,SAAgB,SAAS,CACrB,MAAc,EACd,YAAoB,2BAAe,CAAC,GAAG;IAEvC,OAAO;QACH,MAAM;QACN,SAAS,EAAE,SAA0B;KACxC,CAAC;AACN,CAAC;AARD,8BAQC"}
1
+ {"version":3,"file":"crudHelpers.js","sourceRoot":"","sources":["../../../src/helpers/crudHelpers.ts"],"names":[],"mappings":";;;AAEA,kDAAqD;AAErD,8DAA8D;AAC9D,SAAgB,WAAW,CACvB,SAAiB,EACjB,KAAU,EACV,QAAQ,GAAG,OAAO,EAClB,YAAY,GAAG,SAAS;IAExB,OAAO;QACH,SAAS;QACT,QAAQ;QACR,KAAK;QACL,YAAY;KACf,CAAC;AACN,CAAC;AAZD,kCAYC;AAED,SAAgB,eAAe,CAAC,SAAiB,EAAE,OAAiB;IAChE,OAAO;QACH,SAAS;QACT,OAAO;KACV,CAAC;AACN,CAAC;AALD,0CAKC;AAED,SAAgB,SAAS,CACrB,MAAc,EACd,YAAoB,2BAAe,CAAC,GAAG;IAEvC,OAAO;QACH,MAAM;QACN,SAAS,EAAE,SAA0B;KACxC,CAAC;AACN,CAAC;AARD,8BAQC"}
@@ -64,8 +64,8 @@ class CrudService {
64
64
  findCount(findCountOptions) {
65
65
  return this.getCrudServiceInstance().then((crudService) => crudService.findCount(findCountOptions));
66
66
  }
67
- buildFilter(attribute, value, operator = 'EQUAL') {
68
- return (0, crudHelpers_1.buildFilter)(attribute, value, operator);
67
+ buildFilter(attribute, value, operator = 'EQUAL', relativePath = undefined) {
68
+ return (0, crudHelpers_1.buildFilter)(attribute, value, operator, relativePath);
69
69
  }
70
70
  buildQueryIndex(indexName, columns) {
71
71
  return (0, crudHelpers_1.buildQueryIndex)(indexName, columns);
@@ -1 +1 @@
1
- {"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../src/services/crud.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../src/services/crud.service.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,7 @@ class PostgresqlClientService extends query_service_1.default {
37
37
  return value;
38
38
  }
39
39
  }
40
- buildClause(operator, attribute, value) {
40
+ buildClause(operator, attribute, relativePath, value) {
41
41
  var _a;
42
42
  const formattedValue = pg_format_1.default.literal(value);
43
43
  operator = operator
@@ -46,12 +46,23 @@ class PostgresqlClientService extends query_service_1.default {
46
46
  const postgresOperator = constants_1.POSTGRES_FILTER_OPERATOR_MAP[operator];
47
47
  if (!postgresOperator)
48
48
  throw new Error(`Unsupported filter operator: ${operator}`);
49
+ let property;
49
50
  const filterProperty = pg_format_1.default.ident(attribute);
50
51
  const columnExists = !!this.crudSchema.columns[attribute];
51
52
  const columnType = columnExists && ((_a = this.crudSchema.columns[attribute]) === null || _a === void 0 ? void 0 : _a.type);
52
- const property = columnExists
53
- ? filterProperty
54
- : `("qvAttributes" ->> '${attribute}')`;
53
+ if (relativePath != undefined) {
54
+ const attributePath = relativePath.split('.').join(',');
55
+ property = `("${attribute}" #> '{${attributePath}}')`;
56
+ if (value != null) {
57
+ const comparisonValueType = this.getValueTypeAsPostgresDefinition(value);
58
+ property += `::${comparisonValueType}`;
59
+ }
60
+ }
61
+ else {
62
+ property = columnExists
63
+ ? filterProperty
64
+ : `("qvAttributes" ->> '${attribute}')`;
65
+ }
55
66
  if (operator === constants_1.FilterOperator.IN) {
56
67
  const formattedValues = Array.isArray(value)
57
68
  ? value.map(pg_format_1.default.literal)
@@ -92,7 +103,7 @@ class PostgresqlClientService extends query_service_1.default {
92
103
  buildFilterClause(filters, logicOperator) {
93
104
  if (Array.isArray(filters)) {
94
105
  const filterClauses = filters.map((filter) => {
95
- return this.buildClause(filter.operator, filter.attribute, filter.value);
106
+ return this.buildClause(filter.operator, filter.attribute, filter.relativePath, filter.value);
96
107
  });
97
108
  return filterClauses.join(` ${logicOperator !== null && logicOperator !== void 0 ? logicOperator : constants_1.FILTER_LOGIC_OPERATORS.AND} `);
98
109
  }
@@ -119,7 +130,7 @@ class PostgresqlClientService extends query_service_1.default {
119
130
  clause = `(${this.buildQueryByClause(filter)})`;
120
131
  }
121
132
  else {
122
- clause = this.buildClause(filter.operator, filter.attribute, filter.value);
133
+ clause = this.buildClause(filter.operator, filter.attribute, filter.relativePath, filter.value);
123
134
  }
124
135
  filterClauses += `${clause} ${key} `;
125
136
  });
@@ -318,7 +329,7 @@ class PostgresqlClientService extends query_service_1.default {
318
329
  switch (column.type) {
319
330
  case 'object':
320
331
  {
321
- const valueSerialized = this.serializeJSONValue(value);
332
+ const valueSerialized = `${JSON.stringify(value).replace(/'/g, "''")}`;
322
333
  expValue = `'${valueSerialized}'::jsonb`;
323
334
  }
324
335
  break;
@@ -337,7 +348,7 @@ class PostgresqlClientService extends query_service_1.default {
337
348
  });
338
349
  if (Object.keys(jsonSetExpressionGroup).length > 0) {
339
350
  Object.keys(jsonSetExpressionGroup).forEach((groupIndex) => {
340
- const jsonSetExpression = this.buildJSONBExpression(jsonSetExpressionGroup[groupIndex]);
351
+ const jsonSetExpression = this.buildJSONBExpression(jsonSetExpressionGroup[groupIndex], 'jsonb_set');
341
352
  updateClauses.push(`${groupIndex} = ${jsonSetExpression}`);
342
353
  });
343
354
  }
@@ -350,17 +361,24 @@ class PostgresqlClientService extends query_service_1.default {
350
361
  query += ` ${updateClauses.join(', ')}`;
351
362
  query += ' WHERE ';
352
363
  query += this.buildFilterClause(filters);
353
- return this.runQuery(query, [], 'SERIALIZABLE');
364
+ console.log('query: ', query);
365
+ return this.runQuery(query);
354
366
  }
355
- buildJSONBExpression(jsonSetExpressions) {
367
+ /**
368
+ * @description Builds a jsonb expression like jsonb_insert, or jsonb_set
369
+ * @param jsonSetExpressions
370
+ * @param functionName
371
+ * @returns
372
+ */
373
+ buildJSONBExpression(jsonSetExpressions, functionName) {
356
374
  let jsonSetStringExpr = '';
357
375
  jsonSetExpressions.forEach((expression, index) => {
358
376
  const { columnName, jsonExpr } = expression;
359
377
  if (index === 0) {
360
- jsonSetStringExpr = `jsonb_set(${columnName},${jsonExpr})`;
378
+ jsonSetStringExpr = `${functionName}(${columnName},${jsonExpr})`;
361
379
  }
362
380
  else {
363
- jsonSetStringExpr = `jsonb_set(${jsonSetStringExpr},${jsonExpr})`;
381
+ jsonSetStringExpr = `${functionName}(${jsonSetStringExpr},${jsonExpr})`;
364
382
  }
365
383
  });
366
384
  return jsonSetStringExpr;
@@ -409,7 +427,7 @@ class PostgresqlClientService extends query_service_1.default {
409
427
  const attributes = {
410
428
  originalString: groupResult,
411
429
  path: attributesFromGroup[0].trim(),
412
- value: attributesFromGroup[1].trim(),
430
+ value: attributesFromGroup.slice(1).join(',').trim(),
413
431
  functionExpr: '',
414
432
  };
415
433
  if (columnType == 'array') {
@@ -417,7 +435,8 @@ class PostgresqlClientService extends query_service_1.default {
417
435
  this.buildArrayAppendExpr(attributes);
418
436
  }
419
437
  else {
420
- attributes['functionExpr'] = this.buildJsonbExpr(attributes);
438
+ attributes['functionExpr'] =
439
+ this.buildJsonbInsertExpr(attributes);
421
440
  }
422
441
  return attributes;
423
442
  }
@@ -428,15 +447,39 @@ class PostgresqlClientService extends query_service_1.default {
428
447
  const columnName = arrayPath.shift();
429
448
  return `ARRAY_APPEND("${columnName}",${params.value})`;
430
449
  }
431
- buildJsonbExpr(params) {
450
+ buildJsonbInsertExpr(params) {
432
451
  const arrayPath = params.path.split('.');
433
452
  const columnName = arrayPath.shift();
434
- if (arrayPath.length > 0) {
435
- return `jsonb_insert("${columnName}", '{${arrayPath.join(',')},0}', ${params.value})`;
453
+ const jsonbInsertExpressions = this.getExpressionsByDefinitionForJSONBInsert(columnName, params.value);
454
+ const expressions = this.buildJSONBExpression(jsonbInsertExpressions, 'jsonb_insert');
455
+ return expressions;
456
+ }
457
+ getExpressionsByDefinitionForJSONBInsert(columnName, value) {
458
+ const jsonbInsertExpressions = [];
459
+ try {
460
+ const parsedValue = JSON.parse(value);
461
+ if (Array.isArray(parsedValue)) {
462
+ parsedValue.forEach((arrayValue) => {
463
+ jsonbInsertExpressions.push({
464
+ jsonExpr: `'{0}','${this.serializeJSONValue(arrayValue)}'`,
465
+ columnName: `"${columnName}"`,
466
+ });
467
+ });
468
+ }
469
+ else {
470
+ jsonbInsertExpressions.push({
471
+ jsonExpr: `'{0}','${this.serializeJSONValue(parsedValue)}'`,
472
+ columnName: `"${columnName}"`,
473
+ });
474
+ }
436
475
  }
437
- else {
438
- return `jsonb_insert("${columnName}",'{0}', ${params.value})`;
476
+ catch (error) {
477
+ jsonbInsertExpressions.push({
478
+ jsonExpr: `'{0}','${value}'`,
479
+ columnName: `"${columnName}"`,
480
+ });
439
481
  }
482
+ return jsonbInsertExpressions;
440
483
  }
441
484
  getInsertExprFromJsonbDef(queryValue, columnType) {
442
485
  const listAppendParams = this.getListAppendDefFromValue(queryValue, columnType);
@@ -452,10 +495,10 @@ class PostgresqlClientService extends query_service_1.default {
452
495
  action.value.includes('list_append')) {
453
496
  action.path = action.path.split('.')[0];
454
497
  const column = columns[action.path];
455
- action.value = this.getInsertExprFromJsonbDef(action.value, column.type);
456
- action.dynamoFuncName = 'list_append';
457
498
  action.value =
458
499
  this.replaceExpressionAttributeValuesForDynamoFunctions(action.value, options);
500
+ action.value = this.getInsertExprFromJsonbDef(action.value, column.type);
501
+ action.dynamoFuncName = 'list_append';
459
502
  }
460
503
  else {
461
504
  action.value = this.replaceExpressionAttributeValues(action.value, options);
@@ -483,7 +526,7 @@ class PostgresqlClientService extends query_service_1.default {
483
526
  if (exprAttributeValuesKeys.length > 0) {
484
527
  exprAttributeValuesKeys.forEach((exprAttribute) => {
485
528
  const valueSerialized = this.serializeJSONValue(expressionAttributeValues[exprAttribute]);
486
- value = value.replace(exprAttribute, `'${valueSerialized}'`);
529
+ value = value.replace(exprAttribute, `${valueSerialized}`);
487
530
  });
488
531
  }
489
532
  return value;
@@ -505,6 +548,17 @@ class PostgresqlClientService extends query_service_1.default {
505
548
  }
506
549
  return value;
507
550
  }
551
+ getValueTypeAsPostgresDefinition(value) {
552
+ switch (typeof value) {
553
+ case 'number':
554
+ return 'number';
555
+ case 'boolean':
556
+ return 'boolean';
557
+ case 'string':
558
+ default:
559
+ return 'text';
560
+ }
561
+ }
508
562
  }
509
563
  exports.default = PostgresqlClientService;
510
564
  //# sourceMappingURL=postgreSqlClient.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"postgreSqlClient.service.js","sourceRoot":"","sources":["../../../../../src/services/cruds/postgresql/postgreSqlClient.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgreSqlClient.service.js","sourceRoot":"","sources":["../../../../../src/services/cruds/postgresql/postgreSqlClient.service.ts"],"names":[],"mappings":"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"}
@@ -97,8 +97,8 @@ class PostgreSqlCrudService extends postgreSqlClient_service_1.default {
97
97
  async remove(filters, options) {
98
98
  await this.deleteCommand(filters, options === null || options === void 0 ? void 0 : options.filterGroups);
99
99
  }
100
- runQuery(querySentence, values, isolationLevel) {
101
- return super.runQuery(querySentence, values, isolationLevel);
100
+ runQuery(querySentence, values) {
101
+ return super.runQuery(querySentence, values);
102
102
  }
103
103
  async updateExpressions(filters, actions, options) {
104
104
  const result = await this.updateExpressionCommand(filters, actions, options);
@@ -1 +1 @@
1
- {"version":3,"file":"postgreSqlCrud.service.js","sourceRoot":"","sources":["../../../../../src/services/cruds/postgresql/postgreSqlCrud.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgreSqlCrud.service.js","sourceRoot":"","sources":["../../../../../src/services/cruds/postgresql/postgreSqlCrud.service.ts"],"names":[],"mappings":"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"}
@@ -9,24 +9,15 @@ class QueryService {
9
9
  this.poolClient = poolClient;
10
10
  this.connectionService = new connection_service_1.default();
11
11
  }
12
- async runQuery(queryText, values, isolationLevel = 'READ COMMITTED') {
12
+ async runQuery(queryText, values) {
13
13
  const client = await (this.poolClient
14
14
  ? this.poolClient
15
15
  : this.connectionService.getClient());
16
- const mustUseTransaction = isolationLevel !== 'READ COMMITTED';
17
16
  try {
18
- if (mustUseTransaction) {
19
- await client.query('BEGIN');
20
- await client.query(`SET TRANSACTION ISOLATION LEVEL ${isolationLevel}`);
21
- }
22
17
  const result = await client.query(queryText, values);
23
- if (mustUseTransaction)
24
- await client.query(`COMMIT`);
25
18
  return result;
26
19
  }
27
20
  catch (error) {
28
- if (mustUseTransaction)
29
- await client.query('ROLLBACK');
30
21
  console.log('[Postgresql-Client] Query Execution Failed:', error);
31
22
  throw error;
32
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.service.js","sourceRoot":"","sources":["../../../../../src/services/cruds/postgresql/query.service.ts"],"names":[],"mappings":";;;;;AAGA,8EAAqD;AAGrD,MAAqB,YAAY;IAG7B,YAAoB,UAAyB;QAAzB,eAAU,GAAV,UAAU,CAAe;QACzC,IAAI,CAAC,iBAAiB,GAAG,IAAI,4BAAiB,EAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,QAAQ,CACV,SAAiB,EACjB,MAAc,EACd,iBAAyB,gBAAgB;QAEzC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU;YACjC,CAAC,CAAC,IAAI,CAAC,UAAU;YACjB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC;QAE1C,MAAM,kBAAkB,GAAG,cAAc,KAAK,gBAAgB,CAAC;QAE/D,IAAI;YACA,IAAI,kBAAkB,EAAE;gBACpB,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5B,MAAM,MAAM,CAAC,KAAK,CACd,mCAAmC,cAAc,EAAE,CACtD,CAAC;aACL;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAErD,IAAI,kBAAkB;gBAAE,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrD,OAAO,MAAM,CAAC;SACjB;QAAC,OAAO,KAAK,EAAE;YACZ,IAAI,kBAAkB;gBAAE,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;SACf;gBAAS;YACN,IAAI,CAAC,IAAI,CAAC,UAAU;gBAChB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAgB,CAAC,CAAC;SAC9D;IACL,CAAC;CACJ;AAvCD,+BAuCC"}
1
+ {"version":3,"file":"query.service.js","sourceRoot":"","sources":["../../../../../src/services/cruds/postgresql/query.service.ts"],"names":[],"mappings":";;;;;AAGA,8EAAqD;AAGrD,MAAqB,YAAY;IAG7B,YAAoB,UAAyB;QAAzB,eAAU,GAAV,UAAU,CAAe;QACzC,IAAI,CAAC,iBAAiB,GAAG,IAAI,4BAAiB,EAAE,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,QAAQ,CACV,SAAiB,EACjB,MAAc;QAEd,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU;YACjC,CAAC,CAAC,IAAI,CAAC,UAAU;YACjB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC;QAE1C,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACrD,OAAO,MAAM,CAAC;SACjB;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,KAAK,CAAC;SACf;gBAAS;YACN,IAAI,CAAC,IAAI,CAAC,UAAU;gBAChB,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAgB,CAAC,CAAC;SAC9D;IACL,CAAC;CACJ;AA1BD,+BA0BC"}
@@ -3,6 +3,7 @@ import { PoolClient } from 'pg';
3
3
 
4
4
  interface IFilter {
5
5
  attribute: string;
6
+ relativePath?: string;
6
7
  operator?: string;
7
8
  value: unknown;
8
9
  }
@@ -139,10 +140,11 @@ declare class CrudService<T> {
139
140
  remove(filters: IFilter[] | ICompositeFilter | IFilter[][], options?: IRemoveOptions): Promise<void>;
140
141
  findAll(options: IFindOptions): Promise<IFindResult<unknown>>;
141
142
  findCount(findCountOptions: IFindOptions): Promise<number>;
142
- buildFilter(attribute: string, value: any, operator?: string): {
143
+ buildFilter(attribute: string, value: any, operator?: string, relativePath?: undefined): {
143
144
  attribute: string;
144
145
  operator: string;
145
146
  value: any;
147
+ relativePath: undefined;
146
148
  };
147
149
  buildQueryIndex(indexName: string, columns: string[]): {
148
150
  indexName: string;
@@ -152,10 +154,11 @@ declare class CrudService<T> {
152
154
  updateExpression(filters: IFilter[] | ICompositeFilter, actions: IUpdateExpressions, options?: IUpdateExpressionsOptions): Promise<T | null>;
153
155
  }
154
156
 
155
- declare function buildFilter(attribute: string, value: any, operator?: string): {
157
+ declare function buildFilter(attribute: string, value: any, operator?: string, relativePath?: undefined): {
156
158
  attribute: string;
157
159
  operator: string;
158
160
  value: any;
161
+ relativePath: undefined;
159
162
  };
160
163
  declare function buildQueryIndex(indexName: string, columns: string[]): {
161
164
  indexName: string;
@@ -2,11 +2,12 @@ import { FILTER_LOGIC_OPERATORS, CONNECTION_CLOSING_MODES, isMultiPlatformMode,
2
2
  import { Pool } from 'pg';
3
3
 
4
4
  // src/helpers/crudHelpers.ts
5
- function buildFilter(attribute, value, operator = "EQUAL") {
5
+ function buildFilter(attribute, value, operator = "EQUAL", relativePath = void 0) {
6
6
  return {
7
7
  attribute,
8
8
  operator,
9
- value
9
+ value,
10
+ relativePath
10
11
  };
11
12
  }
12
13
  function buildQueryIndex(indexName, columns) {
@@ -29,7 +30,7 @@ var CrudFactory = class {
29
30
  const isMultiPlatformMode2 = ((_a = process.env.PLATFORM_TYPE) == null ? void 0 : _a.toLowerCase()) === "container";
30
31
  let DatabaseCrudService;
31
32
  if (isMultiPlatformMode2) {
32
- const module = await import('./postgreSqlCrud.service-7JIQR5MO.mjs');
33
+ const module = await import('./postgreSqlCrud.service-6TRCHVWO.mjs');
33
34
  DatabaseCrudService = module.PostgreSqlCrudService;
34
35
  } else {
35
36
  const module = await import('./dynamoDbCrud.service-EFYPBZKN.mjs');
@@ -105,8 +106,8 @@ var CrudService = class {
105
106
  (crudService) => crudService.findCount(findCountOptions)
106
107
  );
107
108
  }
108
- buildFilter(attribute, value, operator = "EQUAL") {
109
- return buildFilter(attribute, value, operator);
109
+ buildFilter(attribute, value, operator = "EQUAL", relativePath = void 0) {
110
+ return buildFilter(attribute, value, operator, relativePath);
110
111
  }
111
112
  buildQueryIndex(indexName, columns) {
112
113
  return buildQueryIndex(indexName, columns);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/helpers/crudHelpers.ts","../../src/services/crudFactory.service.ts","../../src/services/crud.service.ts","../../src/schemas/crudSchema.ts","../../src/types/filterLogicOperator.type.ts","../../src/types/connectionClosingMode.type.ts","../../src/services/dbPool.service.ts"],"names":["isMultiPlatformMode"],"mappings":"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","sourcesContent":["import { ISorting } from '../interfaces';\nimport { SortDirection } from '../types';\nimport { SORT_DIRECTIONS } from '../utils/constants';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function buildFilter(attribute: string, value: any, operator = 'EQUAL') {\n return {\n attribute,\n operator,\n value,\n };\n}\n\nexport function buildQueryIndex(indexName: string, columns: string[]) {\n return {\n indexName,\n columns,\n };\n}\n\nexport function buildSort(\n column: string,\n direction: string = SORT_DIRECTIONS.ASC,\n): ISorting {\n return {\n column,\n direction: direction as SortDirection,\n };\n}\n","import { PoolClient } from 'pg';\nimport { ICrudService } from '../interfaces';\nimport { CrudSchema } from '../schemas';\nimport { DbPoolClient } from '../types';\nexport class CrudFactory {\n static async databaseClientService<T>(\n crudSchema: typeof CrudSchema,\n poolClient?: PoolClient,\n ): Promise<ICrudService<T>> {\n const isMultiPlatformMode =\n process.env.PLATFORM_TYPE?.toLowerCase() === 'container';\n\n let DatabaseCrudService: new <T>(\n schema: typeof CrudSchema,\n poolClient?: DbPoolClient,\n ) => ICrudService<T>;\n\n if (isMultiPlatformMode) {\n const module = await import(\n './cruds/postgresql/postgreSqlCrud.service'\n );\n DatabaseCrudService = module.PostgreSqlCrudService;\n } else {\n const module = await import(\n './cruds/dynamodb/dynamoDbCrud.service'\n );\n DatabaseCrudService = module.DynamoDbCrudService;\n }\n\n return new DatabaseCrudService(crudSchema, poolClient);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { PoolClient } from 'pg';\nimport {\n buildQueryIndex,\n buildFilter,\n buildSort,\n} from '../helpers/crudHelpers';\nimport {\n ICompositeFilter,\n ICreateMultipleResponse,\n IFilter,\n IFindOptions,\n IRemoveOptions,\n IUpdateExpressions,\n IUpdateExpressionsOptions,\n} from '../interfaces';\nimport { CrudSchema } from '../schemas';\nimport { CrudFactory } from './crudFactory.service';\n\nclass CrudService<T> {\n private crudSchema: typeof CrudSchema;\n\n constructor(\n crudSchema: typeof CrudSchema,\n private poolClient?: PoolClient,\n ) {\n this.crudSchema = crudSchema;\n }\n\n private async getCrudServiceInstance() {\n const crudService = await CrudFactory.databaseClientService(\n this.crudSchema,\n this.poolClient,\n );\n return crudService;\n }\n\n private getDefaultValue(columnName: string): any {\n const column = this.crudSchema.columns[columnName];\n return column ? column.default : undefined;\n }\n\n private setDefaultValues(data: any) {\n const defaultValues: { [key: string]: any } = {};\n const columns = this.crudSchema.columns;\n\n for (const columnName in columns) {\n const missingColumnValue = !(columnName in data);\n const columnDefaultValue = this.getDefaultValue(columnName);\n if (missingColumnValue && columnDefaultValue) {\n defaultValues[columnName] = columnDefaultValue;\n }\n }\n\n return { ...defaultValues, ...data };\n }\n\n create(data: T | T[]): Promise<unknown | ICreateMultipleResponse> {\n const processedData = Array.isArray(data)\n ? data.map(this.setDefaultValues.bind(this))\n : this.setDefaultValues(data);\n\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.create(processedData),\n );\n }\n\n find(options: IFindOptions) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.find(options),\n );\n }\n\n findItem(options: IFindOptions) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findItem(options),\n );\n }\n\n update(\n filters: IFilter[] | ICompositeFilter,\n data: Partial<T>,\n ): Promise<T | null> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.update(filters, data, {}),\n );\n }\n\n remove(\n filters: IFilter[] | ICompositeFilter | IFilter[][],\n options: IRemoveOptions = {},\n ): Promise<void> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.remove(filters, options),\n );\n }\n\n findAll(options: IFindOptions) {\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const { pagination, ...findAllOptions } = options;\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findAll(findAllOptions),\n );\n }\n\n findCount(findCountOptions: IFindOptions): Promise<number> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findCount(findCountOptions),\n );\n }\n\n buildFilter(attribute: string, value: any, operator = 'EQUAL') {\n return buildFilter(attribute, value, operator);\n }\n\n buildQueryIndex(indexName: string, columns: string[]) {\n return buildQueryIndex(indexName, columns);\n }\n\n buildSort(column: string, direction: string) {\n return buildSort(column, direction);\n }\n\n updateExpression(\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options?: IUpdateExpressionsOptions,\n ): Promise<T | null> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.updateExpressions(filters, actions, options),\n );\n }\n}\n\nexport default CrudService;\n","import { PoolClient } from 'pg';\nimport { ITableName, ITableColumns } from '../interfaces';\n\nexport class CrudSchema {\n static table: string | ITableName;\n static columns: ITableColumns;\n static usePool?: boolean = false;\n static schema: string | null = null;\n static poolClient?: PoolClient;\n}\n","import { FILTER_LOGIC_OPERATORS } from '../utils/constants';\n\nconst VALID_FILTER_LOGIC_OPERATORS: FILTER_LOGIC_OPERATORS[] = Object.values(\n FILTER_LOGIC_OPERATORS,\n);\n\nexport type FilterLogicOperator = (typeof VALID_FILTER_LOGIC_OPERATORS)[number];\n","import { CONNECTION_CLOSING_MODES } from '../utils/constants';\n\nconst VALID_CONNECTION_CLOSING_MODES: CONNECTION_CLOSING_MODES[] =\n Object.values(CONNECTION_CLOSING_MODES);\n\nexport type ConnectionClosingMode =\n (typeof VALID_CONNECTION_CLOSING_MODES)[number];\n","import { Pool } from 'pg';\nimport { isMultiPlatformMode } from '../utils/constants';\n\nexport async function getDbPool() {\n if (!isMultiPlatformMode()) return undefined;\n\n const pool = new Pool({\n connectionString: process.env.MULTIPLATFORM_PG_CONNECTION_STRING,\n });\n const poolClient = await pool.connect();\n return poolClient;\n}\n"]}
1
+ {"version":3,"sources":["../../src/helpers/crudHelpers.ts","../../src/services/crudFactory.service.ts","../../src/services/crud.service.ts","../../src/schemas/crudSchema.ts","../../src/types/filterLogicOperator.type.ts","../../src/types/connectionClosingMode.type.ts","../../src/services/dbPool.service.ts"],"names":["isMultiPlatformMode"],"mappings":"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","sourcesContent":["import { ISorting } from '../interfaces';\nimport { SortDirection } from '../types';\nimport { SORT_DIRECTIONS } from '../utils/constants';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function buildFilter(\n attribute: string,\n value: any,\n operator = 'EQUAL',\n relativePath = undefined,\n) {\n return {\n attribute,\n operator,\n value,\n relativePath,\n };\n}\n\nexport function buildQueryIndex(indexName: string, columns: string[]) {\n return {\n indexName,\n columns,\n };\n}\n\nexport function buildSort(\n column: string,\n direction: string = SORT_DIRECTIONS.ASC,\n): ISorting {\n return {\n column,\n direction: direction as SortDirection,\n };\n}\n","import { PoolClient } from 'pg';\nimport { ICrudService } from '../interfaces';\nimport { CrudSchema } from '../schemas';\nimport { DbPoolClient } from '../types';\nexport class CrudFactory {\n static async databaseClientService<T>(\n crudSchema: typeof CrudSchema,\n poolClient?: PoolClient,\n ): Promise<ICrudService<T>> {\n const isMultiPlatformMode =\n process.env.PLATFORM_TYPE?.toLowerCase() === 'container';\n\n let DatabaseCrudService: new <T>(\n schema: typeof CrudSchema,\n poolClient?: DbPoolClient,\n ) => ICrudService<T>;\n\n if (isMultiPlatformMode) {\n const module = await import(\n './cruds/postgresql/postgreSqlCrud.service'\n );\n DatabaseCrudService = module.PostgreSqlCrudService;\n } else {\n const module = await import(\n './cruds/dynamodb/dynamoDbCrud.service'\n );\n DatabaseCrudService = module.DynamoDbCrudService;\n }\n\n return new DatabaseCrudService(crudSchema, poolClient);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { PoolClient } from 'pg';\nimport {\n buildQueryIndex,\n buildFilter,\n buildSort,\n} from '../helpers/crudHelpers';\nimport {\n ICompositeFilter,\n ICreateMultipleResponse,\n IFilter,\n IFindOptions,\n IRemoveOptions,\n IUpdateExpressions,\n IUpdateExpressionsOptions,\n} from '../interfaces';\nimport { CrudSchema } from '../schemas';\nimport { CrudFactory } from './crudFactory.service';\n\nclass CrudService<T> {\n private crudSchema: typeof CrudSchema;\n\n constructor(\n crudSchema: typeof CrudSchema,\n private poolClient?: PoolClient,\n ) {\n this.crudSchema = crudSchema;\n }\n\n private async getCrudServiceInstance() {\n const crudService = await CrudFactory.databaseClientService(\n this.crudSchema,\n this.poolClient,\n );\n return crudService;\n }\n\n private getDefaultValue(columnName: string): any {\n const column = this.crudSchema.columns[columnName];\n return column ? column.default : undefined;\n }\n\n private setDefaultValues(data: any) {\n const defaultValues: { [key: string]: any } = {};\n const columns = this.crudSchema.columns;\n\n for (const columnName in columns) {\n const missingColumnValue = !(columnName in data);\n const columnDefaultValue = this.getDefaultValue(columnName);\n if (missingColumnValue && columnDefaultValue) {\n defaultValues[columnName] = columnDefaultValue;\n }\n }\n\n return { ...defaultValues, ...data };\n }\n\n create(data: T | T[]): Promise<unknown | ICreateMultipleResponse> {\n const processedData = Array.isArray(data)\n ? data.map(this.setDefaultValues.bind(this))\n : this.setDefaultValues(data);\n\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.create(processedData),\n );\n }\n\n find(options: IFindOptions) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.find(options),\n );\n }\n\n findItem(options: IFindOptions) {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findItem(options),\n );\n }\n\n update(\n filters: IFilter[] | ICompositeFilter,\n data: Partial<T>,\n ): Promise<T | null> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.update(filters, data, {}),\n );\n }\n\n remove(\n filters: IFilter[] | ICompositeFilter | IFilter[][],\n options: IRemoveOptions = {},\n ): Promise<void> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.remove(filters, options),\n );\n }\n\n findAll(options: IFindOptions) {\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const { pagination, ...findAllOptions } = options;\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findAll(findAllOptions),\n );\n }\n\n findCount(findCountOptions: IFindOptions): Promise<number> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.findCount(findCountOptions),\n );\n }\n\n buildFilter(\n attribute: string,\n value: any,\n operator = 'EQUAL',\n relativePath = undefined,\n ) {\n return buildFilter(attribute, value, operator, relativePath);\n }\n\n buildQueryIndex(indexName: string, columns: string[]) {\n return buildQueryIndex(indexName, columns);\n }\n\n buildSort(column: string, direction: string) {\n return buildSort(column, direction);\n }\n\n updateExpression(\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options?: IUpdateExpressionsOptions,\n ): Promise<T | null> {\n return this.getCrudServiceInstance().then((crudService) =>\n crudService.updateExpressions(filters, actions, options),\n );\n }\n}\n\nexport default CrudService;\n","import { PoolClient } from 'pg';\nimport { ITableName, ITableColumns } from '../interfaces';\n\nexport class CrudSchema {\n static table: string | ITableName;\n static columns: ITableColumns;\n static usePool?: boolean = false;\n static schema: string | null = null;\n static poolClient?: PoolClient;\n}\n","import { FILTER_LOGIC_OPERATORS } from '../utils/constants';\n\nconst VALID_FILTER_LOGIC_OPERATORS: FILTER_LOGIC_OPERATORS[] = Object.values(\n FILTER_LOGIC_OPERATORS,\n);\n\nexport type FilterLogicOperator = (typeof VALID_FILTER_LOGIC_OPERATORS)[number];\n","import { CONNECTION_CLOSING_MODES } from '../utils/constants';\n\nconst VALID_CONNECTION_CLOSING_MODES: CONNECTION_CLOSING_MODES[] =\n Object.values(CONNECTION_CLOSING_MODES);\n\nexport type ConnectionClosingMode =\n (typeof VALID_CONNECTION_CLOSING_MODES)[number];\n","import { Pool } from 'pg';\nimport { isMultiPlatformMode } from '../utils/constants';\n\nexport async function getDbPool() {\n if (!isMultiPlatformMode()) return undefined;\n\n const pool = new Pool({\n connectionString: process.env.MULTIPLATFORM_PG_CONNECTION_STRING,\n });\n const poolClient = await pool.connect();\n return poolClient;\n}\n"]}
@@ -35,23 +35,12 @@ var QueryService = class {
35
35
  this.poolClient = poolClient;
36
36
  this.connectionService = new ConnectionService();
37
37
  }
38
- async runQuery(queryText, values, isolationLevel = "READ COMMITTED") {
38
+ async runQuery(queryText, values) {
39
39
  const client = await (this.poolClient ? this.poolClient : this.connectionService.getClient());
40
- const mustUseTransaction = isolationLevel !== "READ COMMITTED";
41
40
  try {
42
- if (mustUseTransaction) {
43
- await client.query("BEGIN");
44
- await client.query(
45
- `SET TRANSACTION ISOLATION LEVEL ${isolationLevel}`
46
- );
47
- }
48
41
  const result = await client.query(queryText, values);
49
- if (mustUseTransaction)
50
- await client.query(`COMMIT`);
51
42
  return result;
52
43
  } catch (error) {
53
- if (mustUseTransaction)
54
- await client.query("ROLLBACK");
55
44
  console.log("[Postgresql-Client] Query Execution Failed:", error);
56
45
  throw error;
57
46
  } finally {
@@ -85,17 +74,27 @@ var PostgresqlClientService = class extends QueryService {
85
74
  return value;
86
75
  }
87
76
  }
88
- buildClause(operator, attribute, value) {
77
+ buildClause(operator, attribute, relativePath, value) {
89
78
  var _a;
90
79
  const formattedValue = format.literal(value);
91
80
  operator = operator ? operator.toUpperCase() : "EQUAL" /* EQUAL */;
92
81
  const postgresOperator = POSTGRES_FILTER_OPERATOR_MAP[operator];
93
82
  if (!postgresOperator)
94
83
  throw new Error(`Unsupported filter operator: ${operator}`);
84
+ let property;
95
85
  const filterProperty = format.ident(attribute);
96
86
  const columnExists = !!this.crudSchema.columns[attribute];
97
87
  const columnType = columnExists && ((_a = this.crudSchema.columns[attribute]) == null ? void 0 : _a.type);
98
- const property = columnExists ? filterProperty : `("qvAttributes" ->> '${attribute}')`;
88
+ if (relativePath != void 0) {
89
+ const attributePath = relativePath.split(".").join(",");
90
+ property = `("${attribute}" #> '{${attributePath}}')`;
91
+ if (value != null) {
92
+ const comparisonValueType = this.getValueTypeAsPostgresDefinition(value);
93
+ property += `::${comparisonValueType}`;
94
+ }
95
+ } else {
96
+ property = columnExists ? filterProperty : `("qvAttributes" ->> '${attribute}')`;
97
+ }
99
98
  if (operator === "IN" /* IN */) {
100
99
  const formattedValues = Array.isArray(value) ? value.map(format.literal) : [formattedValue];
101
100
  return `${property} ${postgresOperator} (${formattedValues.join(
@@ -136,6 +135,7 @@ var PostgresqlClientService = class extends QueryService {
136
135
  return this.buildClause(
137
136
  filter.operator,
138
137
  filter.attribute,
138
+ filter.relativePath,
139
139
  filter.value
140
140
  );
141
141
  });
@@ -170,6 +170,7 @@ var PostgresqlClientService = class extends QueryService {
170
170
  clause = this.buildClause(
171
171
  filter.operator,
172
172
  filter.attribute,
173
+ filter.relativePath,
173
174
  filter.value
174
175
  );
175
176
  }
@@ -391,7 +392,9 @@ var PostgresqlClientService = class extends QueryService {
391
392
  switch (column.type) {
392
393
  case "object":
393
394
  {
394
- const valueSerialized = this.serializeJSONValue(value);
395
+ const valueSerialized = `${JSON.stringify(
396
+ value
397
+ ).replace(/'/g, "''")}`;
395
398
  expValue = `'${valueSerialized}'::jsonb`;
396
399
  }
397
400
  break;
@@ -411,7 +414,8 @@ var PostgresqlClientService = class extends QueryService {
411
414
  if (Object.keys(jsonSetExpressionGroup).length > 0) {
412
415
  Object.keys(jsonSetExpressionGroup).forEach((groupIndex) => {
413
416
  const jsonSetExpression = this.buildJSONBExpression(
414
- jsonSetExpressionGroup[groupIndex]
417
+ jsonSetExpressionGroup[groupIndex],
418
+ "jsonb_set"
415
419
  );
416
420
  updateClauses.push(`${groupIndex} = ${jsonSetExpression}`);
417
421
  });
@@ -426,16 +430,23 @@ var PostgresqlClientService = class extends QueryService {
426
430
  query += ` ${updateClauses.join(", ")}`;
427
431
  query += " WHERE ";
428
432
  query += this.buildFilterClause(filters);
429
- return this.runQuery(query, [], "SERIALIZABLE");
433
+ console.log("query: ", query);
434
+ return this.runQuery(query);
430
435
  }
431
- buildJSONBExpression(jsonSetExpressions) {
436
+ /**
437
+ * @description Builds a jsonb expression like jsonb_insert, or jsonb_set
438
+ * @param jsonSetExpressions
439
+ * @param functionName
440
+ * @returns
441
+ */
442
+ buildJSONBExpression(jsonSetExpressions, functionName) {
432
443
  let jsonSetStringExpr = "";
433
444
  jsonSetExpressions.forEach((expression, index) => {
434
445
  const { columnName, jsonExpr } = expression;
435
446
  if (index === 0) {
436
- jsonSetStringExpr = `jsonb_set(${columnName},${jsonExpr})`;
447
+ jsonSetStringExpr = `${functionName}(${columnName},${jsonExpr})`;
437
448
  } else {
438
- jsonSetStringExpr = `jsonb_set(${jsonSetStringExpr},${jsonExpr})`;
449
+ jsonSetStringExpr = `${functionName}(${jsonSetStringExpr},${jsonExpr})`;
439
450
  }
440
451
  });
441
452
  return jsonSetStringExpr;
@@ -483,13 +494,13 @@ var PostgresqlClientService = class extends QueryService {
483
494
  const attributes = {
484
495
  originalString: groupResult,
485
496
  path: attributesFromGroup[0].trim(),
486
- value: attributesFromGroup[1].trim(),
497
+ value: attributesFromGroup.slice(1).join(",").trim(),
487
498
  functionExpr: ""
488
499
  };
489
500
  if (columnType == "array") {
490
501
  attributes["functionExpr"] = this.buildArrayAppendExpr(attributes);
491
502
  } else {
492
- attributes["functionExpr"] = this.buildJsonbExpr(attributes);
503
+ attributes["functionExpr"] = this.buildJsonbInsertExpr(attributes);
493
504
  }
494
505
  return attributes;
495
506
  }
@@ -500,16 +511,45 @@ var PostgresqlClientService = class extends QueryService {
500
511
  const columnName = arrayPath.shift();
501
512
  return `ARRAY_APPEND("${columnName}",${params.value})`;
502
513
  }
503
- buildJsonbExpr(params) {
514
+ buildJsonbInsertExpr(params) {
504
515
  const arrayPath = params.path.split(".");
505
516
  const columnName = arrayPath.shift();
506
- if (arrayPath.length > 0) {
507
- return `jsonb_insert("${columnName}", '{${arrayPath.join(
508
- ","
509
- )},0}', ${params.value})`;
510
- } else {
511
- return `jsonb_insert("${columnName}",'{0}', ${params.value})`;
517
+ const jsonbInsertExpressions = this.getExpressionsByDefinitionForJSONBInsert(
518
+ columnName,
519
+ params.value
520
+ );
521
+ const expressions = this.buildJSONBExpression(
522
+ jsonbInsertExpressions,
523
+ "jsonb_insert"
524
+ );
525
+ return expressions;
526
+ }
527
+ getExpressionsByDefinitionForJSONBInsert(columnName, value) {
528
+ const jsonbInsertExpressions = [];
529
+ try {
530
+ const parsedValue = JSON.parse(value);
531
+ if (Array.isArray(parsedValue)) {
532
+ parsedValue.forEach((arrayValue) => {
533
+ jsonbInsertExpressions.push({
534
+ jsonExpr: `'{0}','${this.serializeJSONValue(
535
+ arrayValue
536
+ )}'`,
537
+ columnName: `"${columnName}"`
538
+ });
539
+ });
540
+ } else {
541
+ jsonbInsertExpressions.push({
542
+ jsonExpr: `'{0}','${this.serializeJSONValue(parsedValue)}'`,
543
+ columnName: `"${columnName}"`
544
+ });
545
+ }
546
+ } catch (error) {
547
+ jsonbInsertExpressions.push({
548
+ jsonExpr: `'{0}','${value}'`,
549
+ columnName: `"${columnName}"`
550
+ });
512
551
  }
552
+ return jsonbInsertExpressions;
513
553
  }
514
554
  getInsertExprFromJsonbDef(queryValue, columnType) {
515
555
  const listAppendParams = this.getListAppendDefFromValue(
@@ -533,15 +573,15 @@ var PostgresqlClientService = class extends QueryService {
533
573
  if (typeof action.value == "string" && action.value.includes("list_append")) {
534
574
  action.path = action.path.split(".")[0];
535
575
  const column = columns[action.path];
576
+ action.value = this.replaceExpressionAttributeValuesForDynamoFunctions(
577
+ action.value,
578
+ options
579
+ );
536
580
  action.value = this.getInsertExprFromJsonbDef(
537
581
  action.value,
538
582
  column.type
539
583
  );
540
584
  action.dynamoFuncName = "list_append";
541
- action.value = this.replaceExpressionAttributeValuesForDynamoFunctions(
542
- action.value,
543
- options
544
- );
545
585
  } else {
546
586
  action.value = this.replaceExpressionAttributeValues(
547
587
  action.value,
@@ -570,7 +610,7 @@ var PostgresqlClientService = class extends QueryService {
570
610
  const valueSerialized = this.serializeJSONValue(
571
611
  expressionAttributeValues[exprAttribute]
572
612
  );
573
- value = value.replace(exprAttribute, `'${valueSerialized}'`);
613
+ value = value.replace(exprAttribute, `${valueSerialized}`);
574
614
  });
575
615
  }
576
616
  return value;
@@ -594,6 +634,17 @@ var PostgresqlClientService = class extends QueryService {
594
634
  }
595
635
  return value;
596
636
  }
637
+ getValueTypeAsPostgresDefinition(value) {
638
+ switch (typeof value) {
639
+ case "number":
640
+ return "number";
641
+ case "boolean":
642
+ return "boolean";
643
+ case "string":
644
+ default:
645
+ return "text";
646
+ }
647
+ }
597
648
  };
598
649
 
599
650
  // src/services/cruds/postgresql/postgreSqlCrud.service.ts
@@ -685,8 +736,8 @@ var PostgreSqlCrudService = class extends PostgresqlClientService {
685
736
  async remove(filters, options) {
686
737
  await this.deleteCommand(filters, options == null ? void 0 : options.filterGroups);
687
738
  }
688
- runQuery(querySentence, values, isolationLevel) {
689
- return super.runQuery(querySentence, values, isolationLevel);
739
+ runQuery(querySentence, values) {
740
+ return super.runQuery(querySentence, values);
690
741
  }
691
742
  async updateExpressions(filters, actions, options) {
692
743
  const result = await this.updateExpressionCommand(
@@ -700,4 +751,4 @@ var PostgreSqlCrudService = class extends PostgresqlClientService {
700
751
 
701
752
  export { PostgreSqlCrudService };
702
753
  //# sourceMappingURL=out.js.map
703
- //# sourceMappingURL=postgreSqlCrud.service-7JIQR5MO.mjs.map
754
+ //# sourceMappingURL=postgreSqlCrud.service-6TRCHVWO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/services/cruds/postgresql/postgreSqlClient.service.ts","../../src/services/cruds/postgresql/connection.service.ts","../../src/services/cruds/postgresql/query.service.ts","../../src/services/cruds/postgresql/postgreSqlCrud.service.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-console */\n\nimport format from 'pg-format';\nimport { QueryResult } from 'pg';\nimport {\n AggregateFunction,\n DbPoolClient,\n FilterLogicOperator,\n} from '../../../types';\nimport {\n ICompositeFilter,\n IFilter,\n IFindOptions,\n IFindPagination,\n ISorting,\n IUpdateExpressions,\n IUpdateExpressionsOptions,\n} from '../../../interfaces';\nimport QueryService from './query.service';\nimport {\n FILTER_LOGIC_OPERATORS,\n SORT_DIRECTIONS,\n POSTGRES_FILTER_OPERATOR_MAP,\n DEFAULT_PG_SCHEMA,\n FilterOperator,\n DYNAMO_DB_UPDATE_ACTIONS,\n} from '../../../utils/constants';\nimport { CrudSchema } from '../../../schemas';\nimport { getTableName } from '../../../helpers/tableHelper';\nimport { buildAggFunctionAlias } from '../../../helpers/queryHelpers';\n\nexport default class PostgresqlClientService<T> extends QueryService {\n private crudSchema: typeof CrudSchema;\n constructor(tableSchema: typeof CrudSchema, poolClient?: DbPoolClient) {\n super(poolClient);\n this.crudSchema = tableSchema;\n }\n\n get dbSchema() {\n return this.crudSchema.schema || DEFAULT_PG_SCHEMA;\n }\n\n get tableName() {\n return (\n getTableName(this.crudSchema.table, 'alias') ||\n getTableName(this.crudSchema.table)\n );\n }\n\n getWildcardValue(operator: FilterOperator, value: string): string {\n if (\n operator === FilterOperator.CONTAINS ||\n operator === FilterOperator.NOT_CONTAINS\n ) {\n return '%' + value + '%';\n } else if (operator === FilterOperator.STARTS_WITH) {\n return value + '%';\n } else {\n return value;\n }\n }\n\n private buildClause(\n operator: FilterOperator,\n attribute: string,\n relativePath: string | undefined,\n value: any,\n ): string {\n const formattedValue = format.literal(value);\n operator = operator\n ? (operator.toUpperCase() as FilterOperator)\n : FilterOperator.EQUAL;\n const postgresOperator = POSTGRES_FILTER_OPERATOR_MAP[operator];\n\n if (!postgresOperator)\n throw new Error(`Unsupported filter operator: ${operator}`);\n\n let property;\n const filterProperty = format.ident(attribute);\n const columnExists = !!this.crudSchema.columns[attribute];\n const columnType =\n columnExists && this.crudSchema.columns[attribute]?.type;\n\n if (relativePath != undefined) {\n const attributePath = relativePath.split('.').join(',');\n\n property = `(\"${attribute}\" #> '{${attributePath}}')`;\n if (value != null) {\n const comparisonValueType =\n this.getValueTypeAsPostgresDefinition(value);\n property += `::${comparisonValueType}`;\n }\n } else {\n property = columnExists\n ? filterProperty\n : `(\"qvAttributes\" ->> '${attribute}')`;\n }\n\n if (operator === FilterOperator.IN) {\n const formattedValues = Array.isArray(value)\n ? value.map(format.literal)\n : [formattedValue];\n return `${property} ${postgresOperator} (${formattedValues.join(\n ', ',\n )})`;\n }\n\n if (operator === FilterOperator.BETWEEN) {\n return `${property} ${postgresOperator} ${value[0]} AND ${value[1]}`;\n }\n\n /**\n * ? Additional filter to avoid error when column accepts null values.\n */\n if (operator === FilterOperator.NOT_EQUAL && value !== null) {\n return `(${property} ${postgresOperator} ${format.literal(\n value,\n )} OR ${property} IS NULL)`;\n }\n\n if (\n operator === FilterOperator.NOT_EXIST ||\n operator === FilterOperator.EXIST\n ) {\n return `${property} ${postgresOperator}`;\n }\n\n if (\n (operator === FilterOperator.CONTAINS ||\n operator === FilterOperator.NOT_CONTAINS) &&\n columnType === 'array'\n ) {\n const filterValue =\n typeof value === 'number' ? value : `'${value}'`;\n let filterString = `${filterValue} = ANY(${property})`;\n\n if (operator === FilterOperator.NOT_CONTAINS) {\n if (value === null) {\n filterString = `(NOT (${filterString}))`;\n } else {\n filterString = `(NOT (${filterString}) or ${property} IS NULL)`;\n }\n }\n return filterString;\n }\n\n const wildcardValue = this.getWildcardValue(operator, value);\n return `${property} ${postgresOperator} ${format.literal(\n wildcardValue,\n )}`;\n }\n\n private buildFilterClause(\n filters: IFilter[] | ICompositeFilter,\n logicOperator?: FilterLogicOperator,\n ): string {\n if (Array.isArray(filters)) {\n const filterClauses = filters.map((filter) => {\n return this.buildClause(\n filter.operator as FilterOperator,\n filter.attribute,\n filter.relativePath,\n filter.value,\n );\n });\n return filterClauses.join(\n ` ${logicOperator ?? FILTER_LOGIC_OPERATORS.AND} `,\n );\n } else {\n return this.buildQueryByClause(filters);\n }\n }\n\n private isCompositeFilter = function (value: any) {\n return 'OR' in value || 'AND' in value;\n };\n\n buildQueryByClause(filters: IFilter[] | ICompositeFilter): string {\n let filterClauses: string = '';\n let isFirstFilter = true;\n\n for (const [key, value] of Object.entries(filters)) {\n if (!isFirstFilter) {\n filterClauses += key === 'AND' ? ' AND ' : ' OR ';\n }\n\n if (this.isCompositeFilter(value)) {\n filterClauses += '(';\n filterClauses += this.buildQueryByClause(\n value as ICompositeFilter,\n );\n filterClauses += ')';\n } else {\n (value as IFilter[]).forEach((filter: IFilter) => {\n let clause = '';\n if (this.isCompositeFilter(filter)) {\n clause = `(${this.buildQueryByClause(\n filter as ICompositeFilter,\n )})`;\n } else {\n clause = this.buildClause(\n filter.operator as FilterOperator,\n filter.attribute,\n filter.relativePath,\n filter.value,\n );\n }\n filterClauses += `${clause} ${key} `;\n });\n }\n\n isFirstFilter = false;\n }\n\n filterClauses = filterClauses.replace(/\\s+(AND|OR)\\s*$/, '');\n return filterClauses;\n }\n\n private formatOrderByItem(sort: ISorting): string {\n return `${format.ident(sort.column)} ${\n sort.direction || SORT_DIRECTIONS.ASC\n }`;\n }\n\n private buildOrderByClause(querySorting: ISorting[]): string {\n try {\n return querySorting.map(this.formatOrderByItem).join(', ');\n } catch (error) {\n return '';\n }\n }\n\n formatArray(array: any[]) {\n const isNumberArray = typeof array[0] === 'number';\n if (isNumberArray) {\n return `{${array.join(',')}}`;\n } else {\n return `{${array.map((val) => `\"${val}\"`).join(',')}}`;\n }\n }\n\n formatValue(value: any) {\n if (Array.isArray(value)) {\n if (!value?.length) return '{}';\n const isNumberArray = typeof value[0] === 'number';\n if (isNumberArray) {\n return `{${value.join(',')}}`;\n } else {\n return `{${value.map((val: any) => `\"${val}\"`).join(',')}}`;\n }\n }\n return value;\n }\n\n async createCommand(data: any[]): Promise<any> {\n const keys = Object.keys(data[0]); // Assuming all objects have the same keys\n const values = data.map((item) =>\n keys.map((key) => this.formatValue(item[key])),\n );\n\n const query = format(\n `INSERT INTO ${format.ident(this.dbSchema)}.${format.ident(\n this.tableName,\n )} (%I) VALUES %L RETURNING *;`,\n keys,\n values,\n );\n\n return this.runQuery(query);\n }\n\n private addFiltersToQuery(\n query: string,\n filters?: IFilter[] | ICompositeFilter,\n ): string {\n if (!filters) return query;\n\n const isValidArrayFilters = Array.isArray(filters) && filters?.length;\n const isValidCompositeFilters = this.isCompositeFilter(filters);\n if (isValidArrayFilters || isValidCompositeFilters)\n query += ` WHERE ${this.buildFilterClause(filters)}`;\n return query;\n }\n\n addOrderByToQuery(query: string, orderBy?: ISorting[]): string {\n if (orderBy) query += ` ORDER BY ${this.buildOrderByClause(orderBy)}`;\n return query;\n }\n\n private addPaginationToQuery(\n query: string,\n pagination?: IFindPagination,\n ): string {\n if (pagination) {\n const { limit, from } = pagination;\n if (limit) query += ` LIMIT ${limit}`;\n if (from) query += ` OFFSET ${from}`;\n }\n return query;\n }\n\n private getSelectClause(\n aggregateFunction: AggregateFunction | undefined,\n fields: string[] = [],\n ) {\n if (aggregateFunction)\n return `CAST(${aggregateFunction}(1) AS INTEGER) AS \"${buildAggFunctionAlias(\n aggregateFunction,\n )}\"`;\n if (!fields?.length) return '*';\n\n return this.parseFields(fields).join(', ');\n }\n\n private parseFields(fields: String[]): String[] {\n const columnsFromSchema: String[] = Object.keys(\n this.crudSchema.columns,\n );\n const attributes: String[] = fields\n .filter((field) => columnsFromSchema.indexOf(field) !== -1)\n .map((field) => `\"${field}\"`);\n\n fields\n .filter((field) => columnsFromSchema.indexOf(field) === -1)\n .forEach((field) => {\n attributes.push(`\"qvAttributes\" ->> '${field}' as \"${field}\"`);\n });\n return attributes;\n }\n\n async findCommand(options: IFindOptions = {}): Promise<T[]> {\n let query = `SELECT ${this.getSelectClause(\n options.aggregateFunction,\n options.fields,\n )} FROM ${format.ident(this.dbSchema)}.${format.ident(this.tableName)}`;\n query = this.addFiltersToQuery(query, options.filters);\n if (!options.aggregateFunction) {\n query = this.addOrderByToQuery(query, options.sorting);\n query = this.addPaginationToQuery(query, options.pagination);\n }\n return (await this.runQuery(query)).rows;\n }\n\n sanitizeValue(value: any): string {\n if (Array.isArray(value)) {\n if (value.length === 0) '[]';\n const formattedArray = value\n .map((item) => {\n if (typeof item === 'string') {\n return `'${item}'`;\n } else if (typeof item === 'object') {\n return JSON.stringify(item);\n } else {\n return item;\n }\n })\n .join(',');\n\n return JSON.stringify(formattedArray);\n } else {\n return format.literal(value);\n }\n }\n\n async updateCommand(\n filters: IFilter[] | ICompositeFilter,\n data: Partial<any>,\n ): Promise<QueryResult<any>> {\n let query = `UPDATE ${format.ident(this.dbSchema)}.${format.ident(\n this.tableName,\n )} SET`;\n\n const updateClauses = Object.entries(data).map(([key, value]) => {\n const dbValue = format.literal(this.formatValue(value));\n return `${format.ident(key)} = ${dbValue}`;\n });\n query += ` ${updateClauses.join(', ')}`;\n\n query += ' WHERE ';\n query += this.buildFilterClause(filters);\n\n return this.runQuery(query);\n }\n\n private buildFilterClauseForFilterGroups(\n filterGroups: IFilter[][],\n ): string {\n const filterClauses = filterGroups.map((filterGroup) => {\n return `(${this.buildFilterClause(filterGroup)})`;\n });\n return filterClauses.join(' OR ');\n }\n\n async deleteCommand(\n filters?: ICompositeFilter | IFilter[] | IFilter[][],\n useFilterGroups: boolean = false,\n ): Promise<QueryResult<any>> {\n let query = `DELETE FROM ${format.ident(this.dbSchema)}.${format.ident(\n this.tableName,\n )}`;\n if (filters) {\n query += ' WHERE ';\n\n if (useFilterGroups) {\n query += this.buildFilterClauseForFilterGroups(\n filters as IFilter[][],\n );\n } else {\n query += this.buildFilterClause(\n filters as ICompositeFilter | IFilter[],\n );\n }\n }\n\n return this.runQuery(query);\n }\n\n query(queryText: string, values?: any[]) {\n return this.runQuery(queryText, values);\n }\n\n public async updateExpressionCommand(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options: Partial<IUpdateExpressionsOptions> = {},\n ) {\n let query = `UPDATE ${format.ident(this.dbSchema)}.${format.ident(\n this.tableName,\n )} SET`;\n\n const set = actions.SET || [];\n const add = actions.ADD || [];\n const columns = this.crudSchema.columns;\n\n const setValues = this.replacePathAndValueByAttributeNames(\n set,\n options,\n columns,\n DYNAMO_DB_UPDATE_ACTIONS.SET,\n );\n const addValues = this.replacePathAndValueByAttributeNames(\n add,\n options,\n columns,\n DYNAMO_DB_UPDATE_ACTIONS.ADD,\n );\n\n const setValuesAndAddValues: any = setValues.concat(addValues);\n\n const updateClauses: any = [];\n const jsonSetExpressionGroup: any = {};\n const queryFunctions: any = [];\n\n setValuesAndAddValues.forEach((expression: any) => {\n const { path, value, createNewColumn, actionName, dynamoFuncName } =\n expression;\n\n //Dynamo functions replacement\n if (dynamoFuncName) {\n queryFunctions.push({ path, value, dynamoFuncName });\n }\n\n if (path.includes('.') && !dynamoFuncName) {\n const jsonExpr = this.getJSONBSetExpressionByAction(\n path,\n value,\n {\n createNewColumn,\n actionName,\n },\n );\n const columnName: string = jsonExpr.columnName;\n if (!jsonSetExpressionGroup[columnName]) {\n jsonSetExpressionGroup[columnName] = [jsonExpr];\n } else {\n jsonSetExpressionGroup[columnName].push(jsonExpr);\n }\n } else if (!dynamoFuncName) {\n let expValue;\n const column = this.crudSchema.columns[path];\n if (column?.type == undefined)\n throw `Column type definition for column: (${path}) must be in the CrudSchema`;\n let formattedValue;\n switch (column.type) {\n case 'object':\n {\n const valueSerialized = `${JSON.stringify(\n value,\n ).replace(/'/g, \"''\")}`;\n expValue = `'${valueSerialized}'::jsonb`;\n }\n break;\n case 'array':\n formattedValue = format.literal(value);\n expValue = `ARRAY[${formattedValue}]`;\n break;\n default:\n formattedValue = format.literal(value);\n expValue = formattedValue;\n break;\n }\n this.crudSchema.columns;\n updateClauses.push(`${format.ident(path)} = ${expValue}`);\n }\n });\n\n if (Object.keys(jsonSetExpressionGroup).length > 0) {\n Object.keys(jsonSetExpressionGroup).forEach((groupIndex) => {\n const jsonSetExpression = this.buildJSONBExpression(\n jsonSetExpressionGroup[groupIndex],\n 'jsonb_set',\n );\n\n updateClauses.push(`${groupIndex} = ${jsonSetExpression}`);\n });\n }\n\n //This is for dynamo functions transformed to postgresql functions\n if (queryFunctions.length > 0) {\n queryFunctions.forEach((queryFunction: any) => {\n updateClauses.push(\n `${format.ident(queryFunction.path)} = ${\n queryFunction.value\n }`,\n );\n });\n }\n\n query += ` ${updateClauses.join(', ')}`;\n\n query += ' WHERE ';\n query += this.buildFilterClause(filters);\n console.log('query: ', query);\n\n return this.runQuery(query);\n }\n\n /**\n * @description Builds a jsonb expression like jsonb_insert, or jsonb_set\n * @param jsonSetExpressions\n * @param functionName\n * @returns\n */\n private buildJSONBExpression(\n jsonSetExpressions: any,\n functionName: string,\n ) {\n let jsonSetStringExpr = '';\n jsonSetExpressions.forEach((expression: any, index: number) => {\n const { columnName, jsonExpr } = expression;\n if (index === 0) {\n jsonSetStringExpr = `${functionName}(${columnName},${jsonExpr})`;\n } else {\n jsonSetStringExpr = `${functionName}(${jsonSetStringExpr},${jsonExpr})`;\n }\n });\n return jsonSetStringExpr;\n }\n\n /**\n * @description Serializes a JSON value\n * @param value\n * @returns\n */\n private serializeJSONValue(value: any) {\n const valueSerialized =\n typeof value == 'object'\n ? `${JSON.stringify(value).replace(/'/g, \"''\")}`\n : value;\n return valueSerialized;\n }\n\n private getJSONBSetExpressionByAction(\n path: string,\n value: any,\n options: any,\n ) {\n path = path.replace(/\\[(\\d+)\\]/g, '.$1');\n const pathSplitted = path.split('.');\n const parentPath = pathSplitted[0];\n const { createNewColumn, actionName } = options;\n\n const pathSerialized = pathSplitted.slice(1).join(',');\n const valueSerialized = `'${JSON.stringify(value).replace(\n /'/g,\n \"''\",\n )}'`;\n\n if (actionName == DYNAMO_DB_UPDATE_ACTIONS.ADD) {\n if (typeof value != 'string' && !isNaN(value)) {\n const resultExpr = {\n jsonExpr: `'{${pathSerialized}}',to_jsonb(COALESCE((\"${parentPath}\"#>'{${pathSerialized}}')::numeric,0) + ${valueSerialized})`,\n columnName: `\"${parentPath}\"`,\n };\n return resultExpr;\n }\n }\n return {\n jsonExpr: `'{${pathSerialized}}',${valueSerialized},${createNewColumn}`,\n columnName: `\"${parentPath}\"`,\n };\n }\n\n private getListAppendDefFromValue(queryValue: string, columnType: string) {\n const regexListAppend = /list_append\\(([^)]+)\\)/gm;\n const listAppendString = 'list_append(';\n\n const matchList = queryValue.match(regexListAppend) || [];\n const groupResult = matchList[0];\n\n if (groupResult) {\n const attributesFromGroup = groupResult\n .slice(listAppendString.length, -1)\n .split(',');\n const attributes = {\n originalString: groupResult,\n path: attributesFromGroup[0].trim(),\n value: attributesFromGroup.slice(1).join(',').trim(),\n functionExpr: '',\n };\n if (columnType == 'array') {\n attributes['functionExpr'] =\n this.buildArrayAppendExpr(attributes);\n } else {\n attributes['functionExpr'] =\n this.buildJsonbInsertExpr(attributes);\n }\n return attributes;\n }\n\n return null;\n }\n\n private buildArrayAppendExpr(params: any) {\n const arrayPath = params.path.split('.');\n const columnName = arrayPath.shift();\n return `ARRAY_APPEND(\"${columnName}\",${params.value})`;\n }\n\n private buildJsonbInsertExpr(params: any) {\n const arrayPath = params.path.split('.');\n const columnName = arrayPath.shift();\n const jsonbInsertExpressions =\n this.getExpressionsByDefinitionForJSONBInsert(\n columnName,\n params.value,\n );\n\n const expressions = this.buildJSONBExpression(\n jsonbInsertExpressions,\n 'jsonb_insert',\n );\n return expressions;\n }\n\n private getExpressionsByDefinitionForJSONBInsert(\n columnName: string,\n value: string,\n ) {\n const jsonbInsertExpressions = [];\n try {\n const parsedValue = JSON.parse(value);\n if (Array.isArray(parsedValue)) {\n parsedValue.forEach((arrayValue) => {\n jsonbInsertExpressions.push({\n jsonExpr: `'{0}','${this.serializeJSONValue(\n arrayValue,\n )}'`,\n columnName: `\"${columnName}\"`,\n });\n });\n } else {\n jsonbInsertExpressions.push({\n jsonExpr: `'{0}','${this.serializeJSONValue(parsedValue)}'`,\n columnName: `\"${columnName}\"`,\n });\n }\n } catch (error) {\n jsonbInsertExpressions.push({\n jsonExpr: `'{0}','${value}'`,\n columnName: `\"${columnName}\"`,\n });\n }\n return jsonbInsertExpressions;\n }\n\n private getInsertExprFromJsonbDef(queryValue: string, columnType: string) {\n const listAppendParams = this.getListAppendDefFromValue(\n queryValue,\n columnType,\n );\n if (listAppendParams != null) {\n queryValue = queryValue.replace(\n listAppendParams.originalString,\n listAppendParams.functionExpr,\n );\n }\n\n return queryValue;\n }\n\n private replacePathAndValueByAttributeNames(\n actions: any[],\n options: IUpdateExpressionsOptions,\n columns: any,\n actionName: string,\n ) {\n return actions.map((action) => {\n action.path = this.replaceExpressionAttributeNames(\n action.path,\n options,\n );\n if (\n typeof action.value == 'string' &&\n action.value.includes('list_append')\n ) {\n action.path = action.path.split('.')[0];\n const column = columns[action.path];\n action.value =\n this.replaceExpressionAttributeValuesForDynamoFunctions(\n action.value,\n options,\n );\n action.value = this.getInsertExprFromJsonbDef(\n action.value,\n column.type,\n );\n action.dynamoFuncName = 'list_append';\n } else {\n action.value = this.replaceExpressionAttributeValues(\n action.value,\n options,\n );\n }\n\n action.actionName = actionName;\n action.createNewColumn = true;\n return action;\n });\n }\n\n private replaceExpressionAttributeValuesForDynamoFunctions(\n value: string,\n options: any,\n ) {\n const { expressionAttributeNames, expressionAttributeValues } = options;\n const exprAttributeNamesKeys = expressionAttributeNames\n ? Object.keys(expressionAttributeNames)\n : [];\n const exprAttributeValuesKeys = expressionAttributeValues\n ? Object.keys(expressionAttributeValues)\n : [];\n\n //Set for attribute names\n if (exprAttributeNamesKeys.length > 0) {\n exprAttributeNamesKeys.forEach((exprAttribute) => {\n value = value.replace(\n exprAttribute,\n expressionAttributeNames[exprAttribute],\n );\n });\n }\n\n //Set for attribute values\n if (exprAttributeValuesKeys.length > 0) {\n exprAttributeValuesKeys.forEach((exprAttribute) => {\n const valueSerialized = this.serializeJSONValue(\n expressionAttributeValues[exprAttribute],\n );\n value = value.replace(exprAttribute, `${valueSerialized}`);\n });\n }\n return value;\n }\n\n private replaceExpressionAttributeNames(\n path: string,\n options: IUpdateExpressionsOptions,\n ) {\n const { expressionAttributeNames } = options;\n\n if (expressionAttributeNames) {\n Object.keys(expressionAttributeNames).forEach(\n (attributeName: string) => {\n const attributeNameValue: string =\n expressionAttributeNames[attributeName];\n path = path.replace(attributeName, attributeNameValue);\n },\n );\n }\n return path;\n }\n\n private replaceExpressionAttributeValues(\n value: string,\n options: IUpdateExpressionsOptions,\n ) {\n const { expressionAttributeValues } = options;\n if (expressionAttributeValues[value] != undefined) {\n return expressionAttributeValues[value];\n }\n\n return value;\n }\n\n private getValueTypeAsPostgresDefinition(value: any) {\n switch (typeof value) {\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'string':\n default:\n return 'text';\n }\n }\n}\n","import { Client } from 'pg';\n\nexport default class ConnectionService {\n get connectionString() {\n const connectionString =\n process.env.MULTIPLATFORM_PG_CONNECTION_STRING || '';\n if (!connectionString) {\n throw new Error(\n 'MULTIPLATFORM_PG_CONNECTION_STRING environment variable must be configured',\n );\n }\n return connectionString;\n }\n\n async getClient(): Promise<Client> {\n const client: Client = new Client({\n connectionString: this.connectionString,\n });\n await client.connect();\n return client;\n }\n\n releaseClient(client: Client): void {\n try {\n client.end();\n } catch {\n // eslint-disable-next-line no-console\n console.log('Error releasing client');\n }\n }\n}\n","/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Client, QueryResult } from 'pg';\nimport ConnectionService from './connection.service';\nimport { DbPoolClient } from '../../../types';\n\nexport default class QueryService {\n private connectionService: ConnectionService;\n\n constructor(private poolClient?: DbPoolClient) {\n this.connectionService = new ConnectionService();\n }\n\n async runQuery(\n queryText: string,\n values?: any[],\n ): Promise<QueryResult<any>> {\n const client = await (this.poolClient\n ? this.poolClient\n : this.connectionService.getClient());\n\n try {\n const result = await client.query(queryText, values);\n return result;\n } catch (error) {\n console.log('[Postgresql-Client] Query Execution Failed:', error);\n throw error;\n } finally {\n if (!this.poolClient)\n this.connectionService.releaseClient(client as Client);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport PostgresqlClientService from './postgreSqlClient.service';\nimport {\n ICompositeFilter,\n ICreateMultipleResponse,\n ICrudService,\n IFilter,\n IFindOptions,\n IFindResult,\n IRemoveOptions,\n IUpdateExpressions,\n IUpdateExpressionsOptions,\n} from '../../../interfaces';\nimport { CrudSchema } from '../../../schemas';\nimport { findIdColumnName } from '../../../helpers/tableHelper';\nimport { AGGREGATE_FUNCTIONS } from '../../../utils/constants';\nimport { buildAggFunctionAlias } from '../../../helpers/queryHelpers';\nimport { PersistenceErrorWrapper } from '../../../helpers/errorHelper';\nexport class PostgreSqlCrudService<T>\n extends PostgresqlClientService<T>\n implements ICrudService<T>\n{\n constructor(private tableSchema: typeof CrudSchema) {\n super(tableSchema);\n }\n\n private get idColumnName(): string | undefined {\n return findIdColumnName(this.tableSchema.columns);\n }\n\n normalizeInputData(inputData: any) {\n inputData.qvAttributes = {};\n for (const key in inputData) {\n if (!this.tableSchema.columns[key] && key !== 'qvAttributes') {\n inputData.qvAttributes[key] = inputData[key];\n delete inputData[key];\n } else if (\n Array.isArray(inputData[key]) &&\n this.tableSchema.columns[key]?.type !== 'array'\n ) {\n inputData[key] = JSON.stringify(inputData[key]);\n }\n }\n }\n\n getItem(data: { [key: string]: any }): any {\n const resultItem = { ...data, ...data.qvAttributes };\n delete resultItem['qvAttributes'];\n return resultItem;\n }\n\n prepareData(data: T): any {\n const inputData = { ...data } as { [key: string]: any };\n this.normalizeInputData(inputData);\n return inputData;\n }\n\n create(data: T | T[]): Promise<T | ICreateMultipleResponse> {\n if (Array.isArray(data)) {\n const inputDataArray = data.map((item) => this.prepareData(item));\n return this.createCommand(inputDataArray).then((result) => ({\n unprocessedItems: result\n .filter((r: any) => !r.success)\n .map((r: any) => r.inputData),\n }));\n } else {\n const inputData = this.prepareData(data);\n return this.createCommand([inputData]).then((result) =>\n result.rowCount ? this.getItem(result.rows[0]) : null,\n );\n }\n }\n\n findItem(findOptions: IFindOptions): Promise<T | null> {\n return this.findCommand(findOptions).then((data) => {\n return data?.length\n ? this.getItem(data[0] as { [key: string]: any })\n : null;\n });\n }\n\n private async processQueryResult(\n findOptions: IFindOptions,\n omitPagination: boolean = false,\n ): Promise<IFindResult<T>> {\n const rows = await this.findCommand(findOptions);\n const items = rows.map((row) =>\n this.getItem(row as { [key: string]: any }),\n );\n\n const { limit, from } = findOptions?.pagination || {};\n const hasMoreRecords = items.length && items.length === limit;\n const newFrom = limit && hasMoreRecords ? limit + (from || 0) : null;\n\n const result: IFindResult<T> = {\n items,\n pagination: omitPagination ? null : { limit: limit, from: newFrom },\n count: items.length,\n };\n return result;\n }\n\n async find(findOptions: IFindOptions): Promise<IFindResult<T>> {\n return this.processQueryResult(findOptions);\n }\n\n async findAll(findOptions: IFindOptions): Promise<IFindResult<T>> {\n return this.processQueryResult(findOptions, true);\n }\n\n async findCount(findOptions: IFindOptions): Promise<number> {\n const items = await this.findCommand({\n ...findOptions,\n aggregateFunction: AGGREGATE_FUNCTIONS.COUNT,\n });\n\n const aggFunctionProperty = buildAggFunctionAlias(\n AGGREGATE_FUNCTIONS.COUNT,\n );\n const item: any = items.length ? items[0] : {};\n return item[aggFunctionProperty] || 0;\n }\n\n async update(\n filters: IFilter[] | ICompositeFilter,\n data: Partial<T>,\n ): Promise<any> {\n const savedRecord = await this.findItem({ filters });\n\n const inputData: any = {\n ...savedRecord,\n ...data,\n } as {\n [key: string]: any;\n };\n\n await this.updateCommand(filters, this.prepareData(inputData));\n return this.getItem(inputData);\n }\n\n async remove(\n filters: IFilter[] | ICompositeFilter | IFilter[][],\n options: IRemoveOptions,\n ): Promise<void> {\n await this.deleteCommand(filters, options?.filterGroups);\n }\n\n runQuery(querySentence: string, values?: any[]) {\n return super.runQuery(querySentence, values);\n }\n\n async updateExpressions(\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options: IUpdateExpressionsOptions,\n ): Promise<any> {\n const result = await this.updateExpressionCommand(\n filters,\n actions,\n options,\n );\n return PersistenceErrorWrapper(result);\n }\n}\n"]}
@@ -3,6 +3,7 @@ import { PoolClient } from 'pg';
3
3
 
4
4
  interface IFilter {
5
5
  attribute: string;
6
+ relativePath?: string;
6
7
  operator?: string;
7
8
  value: unknown;
8
9
  }
@@ -139,10 +140,11 @@ declare class CrudService<T> {
139
140
  remove(filters: IFilter[] | ICompositeFilter | IFilter[][], options?: IRemoveOptions): Promise<void>;
140
141
  findAll(options: IFindOptions): Promise<IFindResult<unknown>>;
141
142
  findCount(findCountOptions: IFindOptions): Promise<number>;
142
- buildFilter(attribute: string, value: any, operator?: string): {
143
+ buildFilter(attribute: string, value: any, operator?: string, relativePath?: undefined): {
143
144
  attribute: string;
144
145
  operator: string;
145
146
  value: any;
147
+ relativePath: undefined;
146
148
  };
147
149
  buildQueryIndex(indexName: string, columns: string[]): {
148
150
  indexName: string;
@@ -152,10 +154,11 @@ declare class CrudService<T> {
152
154
  updateExpression(filters: IFilter[] | ICompositeFilter, actions: IUpdateExpressions, options?: IUpdateExpressionsOptions): Promise<T | null>;
153
155
  }
154
156
 
155
- declare function buildFilter(attribute: string, value: any, operator?: string): {
157
+ declare function buildFilter(attribute: string, value: any, operator?: string, relativePath?: undefined): {
156
158
  attribute: string;
157
159
  operator: string;
158
160
  value: any;
161
+ relativePath: undefined;
159
162
  };
160
163
  declare function buildQueryIndex(indexName: string, columns: string[]): {
161
164
  indexName: string;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@qrvey/data-persistence",
3
3
  "types": "dist/types/index.d.ts",
4
4
  "main": "dist/cjs/index.js",
5
- "version": "0.3.7-beta",
5
+ "version": "0.3.8",
6
6
  "license": "MIT",
7
7
  "exports": {
8
8
  ".": {
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/services/cruds/postgresql/postgreSqlClient.service.ts","../../src/services/cruds/postgresql/connection.service.ts","../../src/services/cruds/postgresql/query.service.ts","../../src/services/cruds/postgresql/postgreSqlCrud.service.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-console */\n\nimport format from 'pg-format';\nimport { QueryResult } from 'pg';\nimport {\n AggregateFunction,\n DbPoolClient,\n FilterLogicOperator,\n} from '../../../types';\nimport {\n ICompositeFilter,\n IFilter,\n IFindOptions,\n IFindPagination,\n ISorting,\n IUpdateExpressions,\n IUpdateExpressionsOptions,\n} from '../../../interfaces';\nimport QueryService from './query.service';\nimport {\n FILTER_LOGIC_OPERATORS,\n SORT_DIRECTIONS,\n POSTGRES_FILTER_OPERATOR_MAP,\n DEFAULT_PG_SCHEMA,\n FilterOperator,\n DYNAMO_DB_UPDATE_ACTIONS,\n} from '../../../utils/constants';\nimport { CrudSchema } from '../../../schemas';\nimport { getTableName } from '../../../helpers/tableHelper';\nimport { buildAggFunctionAlias } from '../../../helpers/queryHelpers';\n\nexport default class PostgresqlClientService<T> extends QueryService {\n private crudSchema: typeof CrudSchema;\n constructor(tableSchema: typeof CrudSchema, poolClient?: DbPoolClient) {\n super(poolClient);\n this.crudSchema = tableSchema;\n }\n\n get dbSchema() {\n return this.crudSchema.schema || DEFAULT_PG_SCHEMA;\n }\n\n get tableName() {\n return (\n getTableName(this.crudSchema.table, 'alias') ||\n getTableName(this.crudSchema.table)\n );\n }\n\n getWildcardValue(operator: FilterOperator, value: string): string {\n if (\n operator === FilterOperator.CONTAINS ||\n operator === FilterOperator.NOT_CONTAINS\n ) {\n return '%' + value + '%';\n } else if (operator === FilterOperator.STARTS_WITH) {\n return value + '%';\n } else {\n return value;\n }\n }\n\n private buildClause(\n operator: FilterOperator,\n attribute: string,\n value: any,\n ): string {\n const formattedValue = format.literal(value);\n operator = operator\n ? (operator.toUpperCase() as FilterOperator)\n : FilterOperator.EQUAL;\n const postgresOperator = POSTGRES_FILTER_OPERATOR_MAP[operator];\n\n if (!postgresOperator)\n throw new Error(`Unsupported filter operator: ${operator}`);\n\n const filterProperty = format.ident(attribute);\n const columnExists = !!this.crudSchema.columns[attribute];\n const columnType =\n columnExists && this.crudSchema.columns[attribute]?.type;\n const property = columnExists\n ? filterProperty\n : `(\"qvAttributes\" ->> '${attribute}')`;\n\n if (operator === FilterOperator.IN) {\n const formattedValues = Array.isArray(value)\n ? value.map(format.literal)\n : [formattedValue];\n return `${property} ${postgresOperator} (${formattedValues.join(\n ', ',\n )})`;\n }\n\n if (operator === FilterOperator.BETWEEN) {\n return `${property} ${postgresOperator} ${value[0]} AND ${value[1]}`;\n }\n\n /**\n * ? Additional filter to avoid error when column accepts null values.\n */\n if (operator === FilterOperator.NOT_EQUAL && value !== null) {\n return `(${property} ${postgresOperator} ${format.literal(\n value,\n )} OR ${property} IS NULL)`;\n }\n\n if (\n operator === FilterOperator.NOT_EXIST ||\n operator === FilterOperator.EXIST\n ) {\n return `${property} ${postgresOperator}`;\n }\n\n if (\n (operator === FilterOperator.CONTAINS ||\n operator === FilterOperator.NOT_CONTAINS) &&\n columnType === 'array'\n ) {\n const filterValue =\n typeof value === 'number' ? value : `'${value}'`;\n let filterString = `${filterValue} = ANY(${property})`;\n\n if (operator === FilterOperator.NOT_CONTAINS) {\n if (value === null) {\n filterString = `(NOT (${filterString}))`;\n } else {\n filterString = `(NOT (${filterString}) or ${property} IS NULL)`;\n }\n }\n return filterString;\n }\n\n const wildcardValue = this.getWildcardValue(operator, value);\n return `${property} ${postgresOperator} ${format.literal(\n wildcardValue,\n )}`;\n }\n\n private buildFilterClause(\n filters: IFilter[] | ICompositeFilter,\n logicOperator?: FilterLogicOperator,\n ): string {\n if (Array.isArray(filters)) {\n const filterClauses = filters.map((filter) => {\n return this.buildClause(\n filter.operator as FilterOperator,\n filter.attribute,\n filter.value,\n );\n });\n return filterClauses.join(\n ` ${logicOperator ?? FILTER_LOGIC_OPERATORS.AND} `,\n );\n } else {\n return this.buildQueryByClause(filters);\n }\n }\n\n private isCompositeFilter = function (value: any) {\n return 'OR' in value || 'AND' in value;\n };\n\n buildQueryByClause(filters: IFilter[] | ICompositeFilter): string {\n let filterClauses: string = '';\n let isFirstFilter = true;\n\n for (const [key, value] of Object.entries(filters)) {\n if (!isFirstFilter) {\n filterClauses += key === 'AND' ? ' AND ' : ' OR ';\n }\n\n if (this.isCompositeFilter(value)) {\n filterClauses += '(';\n filterClauses += this.buildQueryByClause(\n value as ICompositeFilter,\n );\n filterClauses += ')';\n } else {\n (value as IFilter[]).forEach((filter: IFilter) => {\n let clause = '';\n if (this.isCompositeFilter(filter)) {\n clause = `(${this.buildQueryByClause(\n filter as ICompositeFilter,\n )})`;\n } else {\n clause = this.buildClause(\n filter.operator as FilterOperator,\n filter.attribute,\n filter.value,\n );\n }\n filterClauses += `${clause} ${key} `;\n });\n }\n\n isFirstFilter = false;\n }\n\n filterClauses = filterClauses.replace(/\\s+(AND|OR)\\s*$/, '');\n return filterClauses;\n }\n\n private formatOrderByItem(sort: ISorting): string {\n return `${format.ident(sort.column)} ${\n sort.direction || SORT_DIRECTIONS.ASC\n }`;\n }\n\n private buildOrderByClause(querySorting: ISorting[]): string {\n try {\n return querySorting.map(this.formatOrderByItem).join(', ');\n } catch (error) {\n return '';\n }\n }\n\n formatArray(array: any[]) {\n const isNumberArray = typeof array[0] === 'number';\n if (isNumberArray) {\n return `{${array.join(',')}}`;\n } else {\n return `{${array.map((val) => `\"${val}\"`).join(',')}}`;\n }\n }\n\n formatValue(value: any) {\n if (Array.isArray(value)) {\n if (!value?.length) return '{}';\n const isNumberArray = typeof value[0] === 'number';\n if (isNumberArray) {\n return `{${value.join(',')}}`;\n } else {\n return `{${value.map((val: any) => `\"${val}\"`).join(',')}}`;\n }\n }\n return value;\n }\n\n async createCommand(data: any[]): Promise<any> {\n const keys = Object.keys(data[0]); // Assuming all objects have the same keys\n const values = data.map((item) =>\n keys.map((key) => this.formatValue(item[key])),\n );\n\n const query = format(\n `INSERT INTO ${format.ident(this.dbSchema)}.${format.ident(\n this.tableName,\n )} (%I) VALUES %L RETURNING *;`,\n keys,\n values,\n );\n\n return this.runQuery(query);\n }\n\n private addFiltersToQuery(\n query: string,\n filters?: IFilter[] | ICompositeFilter,\n ): string {\n if (!filters) return query;\n\n const isValidArrayFilters = Array.isArray(filters) && filters?.length;\n const isValidCompositeFilters = this.isCompositeFilter(filters);\n if (isValidArrayFilters || isValidCompositeFilters)\n query += ` WHERE ${this.buildFilterClause(filters)}`;\n return query;\n }\n\n addOrderByToQuery(query: string, orderBy?: ISorting[]): string {\n if (orderBy) query += ` ORDER BY ${this.buildOrderByClause(orderBy)}`;\n return query;\n }\n\n private addPaginationToQuery(\n query: string,\n pagination?: IFindPagination,\n ): string {\n if (pagination) {\n const { limit, from } = pagination;\n if (limit) query += ` LIMIT ${limit}`;\n if (from) query += ` OFFSET ${from}`;\n }\n return query;\n }\n\n private getSelectClause(\n aggregateFunction: AggregateFunction | undefined,\n fields: string[] = [],\n ) {\n if (aggregateFunction)\n return `CAST(${aggregateFunction}(1) AS INTEGER) AS \"${buildAggFunctionAlias(\n aggregateFunction,\n )}\"`;\n if (!fields?.length) return '*';\n\n return this.parseFields(fields).join(', ');\n }\n\n private parseFields(fields: String[]): String[] {\n const columnsFromSchema: String[] = Object.keys(\n this.crudSchema.columns,\n );\n const attributes: String[] = fields\n .filter((field) => columnsFromSchema.indexOf(field) !== -1)\n .map((field) => `\"${field}\"`);\n\n fields\n .filter((field) => columnsFromSchema.indexOf(field) === -1)\n .forEach((field) => {\n attributes.push(`\"qvAttributes\" ->> '${field}' as \"${field}\"`);\n });\n return attributes;\n }\n\n async findCommand(options: IFindOptions = {}): Promise<T[]> {\n let query = `SELECT ${this.getSelectClause(\n options.aggregateFunction,\n options.fields,\n )} FROM ${format.ident(this.dbSchema)}.${format.ident(this.tableName)}`;\n query = this.addFiltersToQuery(query, options.filters);\n if (!options.aggregateFunction) {\n query = this.addOrderByToQuery(query, options.sorting);\n query = this.addPaginationToQuery(query, options.pagination);\n }\n return (await this.runQuery(query)).rows;\n }\n\n sanitizeValue(value: any): string {\n if (Array.isArray(value)) {\n if (value.length === 0) '[]';\n const formattedArray = value\n .map((item) => {\n if (typeof item === 'string') {\n return `'${item}'`;\n } else if (typeof item === 'object') {\n return JSON.stringify(item);\n } else {\n return item;\n }\n })\n .join(',');\n\n return JSON.stringify(formattedArray);\n } else {\n return format.literal(value);\n }\n }\n\n async updateCommand(\n filters: IFilter[] | ICompositeFilter,\n data: Partial<any>,\n ): Promise<QueryResult<any>> {\n let query = `UPDATE ${format.ident(this.dbSchema)}.${format.ident(\n this.tableName,\n )} SET`;\n\n const updateClauses = Object.entries(data).map(([key, value]) => {\n const dbValue = format.literal(this.formatValue(value));\n return `${format.ident(key)} = ${dbValue}`;\n });\n query += ` ${updateClauses.join(', ')}`;\n\n query += ' WHERE ';\n query += this.buildFilterClause(filters);\n\n return this.runQuery(query);\n }\n\n private buildFilterClauseForFilterGroups(\n filterGroups: IFilter[][],\n ): string {\n const filterClauses = filterGroups.map((filterGroup) => {\n return `(${this.buildFilterClause(filterGroup)})`;\n });\n return filterClauses.join(' OR ');\n }\n\n async deleteCommand(\n filters?: ICompositeFilter | IFilter[] | IFilter[][],\n useFilterGroups: boolean = false,\n ): Promise<QueryResult<any>> {\n let query = `DELETE FROM ${format.ident(this.dbSchema)}.${format.ident(\n this.tableName,\n )}`;\n if (filters) {\n query += ' WHERE ';\n\n if (useFilterGroups) {\n query += this.buildFilterClauseForFilterGroups(\n filters as IFilter[][],\n );\n } else {\n query += this.buildFilterClause(\n filters as ICompositeFilter | IFilter[],\n );\n }\n }\n\n return this.runQuery(query);\n }\n\n query(queryText: string, values?: any[]) {\n return this.runQuery(queryText, values);\n }\n\n public async updateExpressionCommand(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options: Partial<IUpdateExpressionsOptions> = {},\n ) {\n let query = `UPDATE ${format.ident(this.dbSchema)}.${format.ident(\n this.tableName,\n )} SET`;\n\n const set = actions.SET || [];\n const add = actions.ADD || [];\n const columns = this.crudSchema.columns;\n\n const setValues = this.replacePathAndValueByAttributeNames(\n set,\n options,\n columns,\n DYNAMO_DB_UPDATE_ACTIONS.SET,\n );\n const addValues = this.replacePathAndValueByAttributeNames(\n add,\n options,\n columns,\n DYNAMO_DB_UPDATE_ACTIONS.ADD,\n );\n\n const setValuesAndAddValues: any = setValues.concat(addValues);\n\n const updateClauses: any = [];\n const jsonSetExpressionGroup: any = {};\n const queryFunctions: any = [];\n\n setValuesAndAddValues.forEach((expression: any) => {\n const { path, value, createNewColumn, actionName, dynamoFuncName } =\n expression;\n\n //Dynamo functions replacement\n if (dynamoFuncName) {\n queryFunctions.push({ path, value, dynamoFuncName });\n }\n\n if (path.includes('.') && !dynamoFuncName) {\n const jsonExpr = this.getJSONBSetExpressionByAction(\n path,\n value,\n {\n createNewColumn,\n actionName,\n },\n );\n const columnName: string = jsonExpr.columnName;\n if (!jsonSetExpressionGroup[columnName]) {\n jsonSetExpressionGroup[columnName] = [jsonExpr];\n } else {\n jsonSetExpressionGroup[columnName].push(jsonExpr);\n }\n } else if (!dynamoFuncName) {\n let expValue;\n const column = this.crudSchema.columns[path];\n if (column?.type == undefined)\n throw `Column type definition for column: (${path}) must be in the CrudSchema`;\n let formattedValue;\n switch (column.type) {\n case 'object':\n {\n const valueSerialized =\n this.serializeJSONValue(value);\n expValue = `'${valueSerialized}'::jsonb`;\n }\n break;\n case 'array':\n formattedValue = format.literal(value);\n expValue = `ARRAY[${formattedValue}]`;\n break;\n default:\n formattedValue = format.literal(value);\n expValue = formattedValue;\n break;\n }\n this.crudSchema.columns;\n updateClauses.push(`${format.ident(path)} = ${expValue}`);\n }\n });\n\n if (Object.keys(jsonSetExpressionGroup).length > 0) {\n Object.keys(jsonSetExpressionGroup).forEach((groupIndex) => {\n const jsonSetExpression = this.buildJSONBExpression(\n jsonSetExpressionGroup[groupIndex],\n );\n\n updateClauses.push(`${groupIndex} = ${jsonSetExpression}`);\n });\n }\n\n //This is for dynamo functions transformed to postgresql functions\n if (queryFunctions.length > 0) {\n queryFunctions.forEach((queryFunction: any) => {\n updateClauses.push(\n `${format.ident(queryFunction.path)} = ${\n queryFunction.value\n }`,\n );\n });\n }\n\n query += ` ${updateClauses.join(', ')}`;\n\n query += ' WHERE ';\n query += this.buildFilterClause(filters);\n\n return this.runQuery(query, [], 'SERIALIZABLE');\n }\n\n private buildJSONBExpression(jsonSetExpressions: any) {\n let jsonSetStringExpr = '';\n jsonSetExpressions.forEach((expression: any, index: number) => {\n const { columnName, jsonExpr } = expression;\n if (index === 0) {\n jsonSetStringExpr = `jsonb_set(${columnName},${jsonExpr})`;\n } else {\n jsonSetStringExpr = `jsonb_set(${jsonSetStringExpr},${jsonExpr})`;\n }\n });\n return jsonSetStringExpr;\n }\n\n /**\n * @description Serializes a JSON value\n * @param value\n * @returns\n */\n private serializeJSONValue(value: any) {\n const valueSerialized =\n typeof value == 'object'\n ? `${JSON.stringify(value).replace(/'/g, \"''\")}`\n : value;\n return valueSerialized;\n }\n\n private getJSONBSetExpressionByAction(\n path: string,\n value: any,\n options: any,\n ) {\n path = path.replace(/\\[(\\d+)\\]/g, '.$1');\n const pathSplitted = path.split('.');\n const parentPath = pathSplitted[0];\n const { createNewColumn, actionName } = options;\n\n const pathSerialized = pathSplitted.slice(1).join(',');\n const valueSerialized = `'${JSON.stringify(value).replace(\n /'/g,\n \"''\",\n )}'`;\n\n if (actionName == DYNAMO_DB_UPDATE_ACTIONS.ADD) {\n if (typeof value != 'string' && !isNaN(value)) {\n const resultExpr = {\n jsonExpr: `'{${pathSerialized}}',to_jsonb(COALESCE((\"${parentPath}\"#>'{${pathSerialized}}')::numeric,0) + ${valueSerialized})`,\n columnName: `\"${parentPath}\"`,\n };\n return resultExpr;\n }\n }\n return {\n jsonExpr: `'{${pathSerialized}}',${valueSerialized},${createNewColumn}`,\n columnName: `\"${parentPath}\"`,\n };\n }\n\n private getListAppendDefFromValue(queryValue: string, columnType: string) {\n const regexListAppend = /list_append\\(([^)]+)\\)/gm;\n const listAppendString = 'list_append(';\n\n const matchList = queryValue.match(regexListAppend) || [];\n const groupResult = matchList[0];\n\n if (groupResult) {\n const attributesFromGroup = groupResult\n .slice(listAppendString.length, -1)\n .split(',');\n const attributes = {\n originalString: groupResult,\n path: attributesFromGroup[0].trim(),\n value: attributesFromGroup[1].trim(),\n functionExpr: '',\n };\n if (columnType == 'array') {\n attributes['functionExpr'] =\n this.buildArrayAppendExpr(attributes);\n } else {\n attributes['functionExpr'] = this.buildJsonbExpr(attributes);\n }\n return attributes;\n }\n\n return null;\n }\n\n private buildArrayAppendExpr(params: any) {\n const arrayPath = params.path.split('.');\n const columnName = arrayPath.shift();\n return `ARRAY_APPEND(\"${columnName}\",${params.value})`;\n }\n\n private buildJsonbExpr(params: any) {\n const arrayPath = params.path.split('.');\n const columnName = arrayPath.shift();\n if (arrayPath.length > 0) {\n return `jsonb_insert(\"${columnName}\", '{${arrayPath.join(\n ',',\n )},0}', ${params.value})`;\n } else {\n return `jsonb_insert(\"${columnName}\",'{0}', ${params.value})`;\n }\n }\n\n private getInsertExprFromJsonbDef(queryValue: string, columnType: string) {\n const listAppendParams = this.getListAppendDefFromValue(\n queryValue,\n columnType,\n );\n if (listAppendParams != null) {\n queryValue = queryValue.replace(\n listAppendParams.originalString,\n listAppendParams.functionExpr,\n );\n }\n\n return queryValue;\n }\n\n private replacePathAndValueByAttributeNames(\n actions: any[],\n options: IUpdateExpressionsOptions,\n columns: any,\n actionName: string,\n ) {\n return actions.map((action) => {\n action.path = this.replaceExpressionAttributeNames(\n action.path,\n options,\n );\n if (\n typeof action.value == 'string' &&\n action.value.includes('list_append')\n ) {\n action.path = action.path.split('.')[0];\n const column = columns[action.path];\n\n action.value = this.getInsertExprFromJsonbDef(\n action.value,\n column.type,\n );\n action.dynamoFuncName = 'list_append';\n action.value =\n this.replaceExpressionAttributeValuesForDynamoFunctions(\n action.value,\n options,\n );\n } else {\n action.value = this.replaceExpressionAttributeValues(\n action.value,\n options,\n );\n }\n\n action.actionName = actionName;\n action.createNewColumn = true;\n return action;\n });\n }\n\n private replaceExpressionAttributeValuesForDynamoFunctions(\n value: string,\n options: any,\n ) {\n const { expressionAttributeNames, expressionAttributeValues } = options;\n const exprAttributeNamesKeys = expressionAttributeNames\n ? Object.keys(expressionAttributeNames)\n : [];\n const exprAttributeValuesKeys = expressionAttributeValues\n ? Object.keys(expressionAttributeValues)\n : [];\n\n //Set for attribute names\n if (exprAttributeNamesKeys.length > 0) {\n exprAttributeNamesKeys.forEach((exprAttribute) => {\n value = value.replace(\n exprAttribute,\n expressionAttributeNames[exprAttribute],\n );\n });\n }\n\n //Set for attribute values\n if (exprAttributeValuesKeys.length > 0) {\n exprAttributeValuesKeys.forEach((exprAttribute) => {\n const valueSerialized = this.serializeJSONValue(\n expressionAttributeValues[exprAttribute],\n );\n value = value.replace(exprAttribute, `'${valueSerialized}'`);\n });\n }\n return value;\n }\n\n private replaceExpressionAttributeNames(\n path: string,\n options: IUpdateExpressionsOptions,\n ) {\n const { expressionAttributeNames } = options;\n\n if (expressionAttributeNames) {\n Object.keys(expressionAttributeNames).forEach(\n (attributeName: string) => {\n const attributeNameValue: string =\n expressionAttributeNames[attributeName];\n path = path.replace(attributeName, attributeNameValue);\n },\n );\n }\n return path;\n }\n\n private replaceExpressionAttributeValues(\n value: string,\n options: IUpdateExpressionsOptions,\n ) {\n const { expressionAttributeValues } = options;\n if (expressionAttributeValues[value] != undefined) {\n return expressionAttributeValues[value];\n }\n\n return value;\n }\n}\n","import { Client } from 'pg';\n\nexport default class ConnectionService {\n get connectionString() {\n const connectionString =\n process.env.MULTIPLATFORM_PG_CONNECTION_STRING || '';\n if (!connectionString) {\n throw new Error(\n 'MULTIPLATFORM_PG_CONNECTION_STRING environment variable must be configured',\n );\n }\n return connectionString;\n }\n\n async getClient(): Promise<Client> {\n const client: Client = new Client({\n connectionString: this.connectionString,\n });\n await client.connect();\n return client;\n }\n\n releaseClient(client: Client): void {\n try {\n client.end();\n } catch {\n // eslint-disable-next-line no-console\n console.log('Error releasing client');\n }\n }\n}\n","/* eslint-disable no-console */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Client, QueryResult } from 'pg';\nimport ConnectionService from './connection.service';\nimport { DbPoolClient } from '../../../types';\n\nexport default class QueryService {\n private connectionService: ConnectionService;\n\n constructor(private poolClient?: DbPoolClient) {\n this.connectionService = new ConnectionService();\n }\n\n async runQuery(\n queryText: string,\n values?: any[],\n isolationLevel: string = 'READ COMMITTED',\n ): Promise<QueryResult<any>> {\n const client = await (this.poolClient\n ? this.poolClient\n : this.connectionService.getClient());\n\n const mustUseTransaction = isolationLevel !== 'READ COMMITTED';\n\n try {\n if (mustUseTransaction) {\n await client.query('BEGIN');\n await client.query(\n `SET TRANSACTION ISOLATION LEVEL ${isolationLevel}`,\n );\n }\n\n const result = await client.query(queryText, values);\n\n if (mustUseTransaction) await client.query(`COMMIT`);\n return result;\n } catch (error) {\n if (mustUseTransaction) await client.query('ROLLBACK');\n console.log('[Postgresql-Client] Query Execution Failed:', error);\n throw error;\n } finally {\n if (!this.poolClient)\n this.connectionService.releaseClient(client as Client);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport PostgresqlClientService from './postgreSqlClient.service';\nimport {\n ICompositeFilter,\n ICreateMultipleResponse,\n ICrudService,\n IFilter,\n IFindOptions,\n IFindResult,\n IRemoveOptions,\n IUpdateExpressions,\n IUpdateExpressionsOptions,\n} from '../../../interfaces';\nimport { CrudSchema } from '../../../schemas';\nimport { findIdColumnName } from '../../../helpers/tableHelper';\nimport { AGGREGATE_FUNCTIONS } from '../../../utils/constants';\nimport { buildAggFunctionAlias } from '../../../helpers/queryHelpers';\nimport { PersistenceErrorWrapper } from '../../../helpers/errorHelper';\nexport class PostgreSqlCrudService<T>\n extends PostgresqlClientService<T>\n implements ICrudService<T>\n{\n constructor(private tableSchema: typeof CrudSchema) {\n super(tableSchema);\n }\n\n private get idColumnName(): string | undefined {\n return findIdColumnName(this.tableSchema.columns);\n }\n\n normalizeInputData(inputData: any) {\n inputData.qvAttributes = {};\n for (const key in inputData) {\n if (!this.tableSchema.columns[key] && key !== 'qvAttributes') {\n inputData.qvAttributes[key] = inputData[key];\n delete inputData[key];\n } else if (\n Array.isArray(inputData[key]) &&\n this.tableSchema.columns[key]?.type !== 'array'\n ) {\n inputData[key] = JSON.stringify(inputData[key]);\n }\n }\n }\n\n getItem(data: { [key: string]: any }): any {\n const resultItem = { ...data, ...data.qvAttributes };\n delete resultItem['qvAttributes'];\n return resultItem;\n }\n\n prepareData(data: T): any {\n const inputData = { ...data } as { [key: string]: any };\n this.normalizeInputData(inputData);\n return inputData;\n }\n\n create(data: T | T[]): Promise<T | ICreateMultipleResponse> {\n if (Array.isArray(data)) {\n const inputDataArray = data.map((item) => this.prepareData(item));\n return this.createCommand(inputDataArray).then((result) => ({\n unprocessedItems: result\n .filter((r: any) => !r.success)\n .map((r: any) => r.inputData),\n }));\n } else {\n const inputData = this.prepareData(data);\n return this.createCommand([inputData]).then((result) =>\n result.rowCount ? this.getItem(result.rows[0]) : null,\n );\n }\n }\n\n findItem(findOptions: IFindOptions): Promise<T | null> {\n return this.findCommand(findOptions).then((data) => {\n return data?.length\n ? this.getItem(data[0] as { [key: string]: any })\n : null;\n });\n }\n\n private async processQueryResult(\n findOptions: IFindOptions,\n omitPagination: boolean = false,\n ): Promise<IFindResult<T>> {\n const rows = await this.findCommand(findOptions);\n const items = rows.map((row) =>\n this.getItem(row as { [key: string]: any }),\n );\n\n const { limit, from } = findOptions?.pagination || {};\n const hasMoreRecords = items.length && items.length === limit;\n const newFrom = limit && hasMoreRecords ? limit + (from || 0) : null;\n\n const result: IFindResult<T> = {\n items,\n pagination: omitPagination ? null : { limit: limit, from: newFrom },\n count: items.length,\n };\n return result;\n }\n\n async find(findOptions: IFindOptions): Promise<IFindResult<T>> {\n return this.processQueryResult(findOptions);\n }\n\n async findAll(findOptions: IFindOptions): Promise<IFindResult<T>> {\n return this.processQueryResult(findOptions, true);\n }\n\n async findCount(findOptions: IFindOptions): Promise<number> {\n const items = await this.findCommand({\n ...findOptions,\n aggregateFunction: AGGREGATE_FUNCTIONS.COUNT,\n });\n\n const aggFunctionProperty = buildAggFunctionAlias(\n AGGREGATE_FUNCTIONS.COUNT,\n );\n const item: any = items.length ? items[0] : {};\n return item[aggFunctionProperty] || 0;\n }\n\n async update(\n filters: IFilter[] | ICompositeFilter,\n data: Partial<T>,\n ): Promise<any> {\n const savedRecord = await this.findItem({ filters });\n\n const inputData: any = {\n ...savedRecord,\n ...data,\n } as {\n [key: string]: any;\n };\n\n await this.updateCommand(filters, this.prepareData(inputData));\n return this.getItem(inputData);\n }\n\n async remove(\n filters: IFilter[] | ICompositeFilter | IFilter[][],\n options: IRemoveOptions,\n ): Promise<void> {\n await this.deleteCommand(filters, options?.filterGroups);\n }\n\n runQuery(querySentence: string, values?: any[], isolationLevel?: string) {\n return super.runQuery(querySentence, values, isolationLevel);\n }\n\n async updateExpressions(\n filters: IFilter[] | ICompositeFilter,\n actions: IUpdateExpressions,\n options: IUpdateExpressionsOptions,\n ): Promise<any> {\n const result = await this.updateExpressionCommand(\n filters,\n actions,\n options,\n );\n return PersistenceErrorWrapper(result);\n }\n}\n"]}