@flusys/nestjs-shared 5.4.0 → 5.4.1

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.
@@ -69,7 +69,7 @@ let ApiService = class ApiService {
69
69
  await this.beforeInsertOperation(dto, user, qr);
70
70
  const entities = await this.convertRequestDtoToEntity(dto, user);
71
71
  const saved = await qr.manager.save(this.repository.target, entities);
72
- await this.afterInsertOperation(this.ensureArray(saved), user, qr);
72
+ await this.afterInsertOperation(this.ensureArray(saved), dto, user, qr);
73
73
  return {
74
74
  saved,
75
75
  returnFirst: true
@@ -81,7 +81,7 @@ let ApiService = class ApiService {
81
81
  await this.beforeInsertOperation(dtos, user, qr);
82
82
  const entities = await this.convertRequestDtoToEntity(dtos, user);
83
83
  const saved = await qr.manager.save(this.repository.target, entities);
84
- await this.afterInsertOperation(this.ensureArray(saved), user, qr);
84
+ await this.afterInsertOperation(this.ensureArray(saved), dtos, user, qr);
85
85
  return {
86
86
  saved,
87
87
  returnFirst: false
@@ -93,7 +93,7 @@ let ApiService = class ApiService {
93
93
  await this.beforeUpdateOperation(dto, user, qr);
94
94
  const entities = await this.convertRequestDtoToEntity(dto, user);
95
95
  const saved = await qr.manager.save(this.repository.target, entities);
96
- await this.afterUpdateOperation(this.ensureArray(saved), user, qr);
96
+ await this.afterUpdateOperation(this.ensureArray(saved), dto, user, qr);
97
97
  return {
98
98
  saved,
99
99
  returnFirst: true
@@ -105,7 +105,7 @@ let ApiService = class ApiService {
105
105
  await this.beforeUpdateOperation(dtos, user, qr);
106
106
  const entities = await this.convertRequestDtoToEntity(dtos, user);
107
107
  const saved = await qr.manager.save(this.repository.target, entities);
108
- await this.afterUpdateOperation(this.ensureArray(saved), user, qr);
108
+ await this.afterUpdateOperation(this.ensureArray(saved), dtos, user, qr);
109
109
  return {
110
110
  saved,
111
111
  returnFirst: false
@@ -119,14 +119,14 @@ let ApiService = class ApiService {
119
119
  await this.beforeInsertOperation(toInsert, user, qr);
120
120
  const insertedEntities = await this.convertRequestDtoToEntity(toInsert, user);
121
121
  const insertedSaved = await qr.manager.save(this.repository.target, insertedEntities);
122
- await this.afterInsertOperation(this.ensureArray(insertedSaved), user, qr);
122
+ await this.afterInsertOperation(this.ensureArray(insertedSaved), toInsert, user, qr);
123
123
  allResults.push(...this.ensureArray(insertedSaved));
124
124
  }
125
125
  if (toUpdate.length > 0) {
126
126
  await this.beforeUpdateOperation(toUpdate, user, qr);
127
127
  const updatedEntities = await this.convertRequestDtoToEntity(toUpdate, user);
128
128
  const updatedSaved = await qr.manager.save(this.repository.target, updatedEntities);
129
- await this.afterUpdateOperation(this.ensureArray(updatedSaved), user, qr);
129
+ await this.afterUpdateOperation(this.ensureArray(updatedSaved), toUpdate, user, qr);
130
130
  allResults.push(...this.ensureArray(updatedSaved));
131
131
  }
132
132
  return {
@@ -329,7 +329,7 @@ let ApiService = class ApiService {
329
329
  id
330
330
  };
331
331
  });
332
- await this.afterDeleteOperation(ids, user, queryRunner);
332
+ await this.afterDeleteOperation(ids, option, user, queryRunner);
333
333
  await queryRunner.commitTransaction();
334
334
  await Promise.all([
335
335
  this.clearCacheForAll(),
@@ -390,11 +390,11 @@ let ApiService = class ApiService {
390
390
  }
391
391
  }
392
392
  async beforeInsertOperation(_dto, _user, _queryRunner) {}
393
- async afterInsertOperation(_entity, _user, _queryRunner) {}
393
+ async afterInsertOperation(_entity, _dto, _user, _queryRunner) {}
394
394
  async beforeUpdateOperation(_dto, _user, _queryRunner) {}
395
- async afterUpdateOperation(_entity, _user, _queryRunner) {}
395
+ async afterUpdateOperation(_entity, _dto, _user, _queryRunner) {}
396
396
  async beforeDeleteOperation(_dto, _user, _queryRunner) {}
397
- async afterDeleteOperation(_entity, _user, _queryRunner) {}
397
+ async afterDeleteOperation(_entity, _dto, _user, _queryRunner) {}
398
398
  async getFilterQuery(query, filter, _user) {
399
399
  Object.entries(filter).forEach(([key, value])=>{
400
400
  query.andWhere(`${this.entityName}.${key} = :value`, {
@@ -9,6 +9,9 @@ function _export(target, all) {
9
9
  });
10
10
  }
11
11
  _export(exports, {
12
+ get buildQuery () {
13
+ return buildQuery;
14
+ },
12
15
  get getCastIntType () {
13
16
  return getCastIntType;
14
17
  },
@@ -27,3 +30,8 @@ function getCastIntType() {
27
30
  const driver = _nestjscore.envConfig.getTypeOrmConfig().type;
28
31
  return driver === 'postgres' ? 'INTEGER' : 'UNSIGNED';
29
32
  }
33
+ function buildQuery(sql, dbType) {
34
+ if (dbType !== 'postgres') return sql;
35
+ let index = 0;
36
+ return sql.replace(/\?/g, ()=>`$${++index}`);
37
+ }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  });
5
5
  _export_star(require("./api-controller.class"), exports);
6
6
  _export_star(require("./api-service.class"), exports);
7
- _export_star(require("./handle-custome-db-column-type"), exports);
7
+ _export_star(require("./handle-custome-db"), exports);
8
8
  _export_star(require("./hybrid-cache.class"), exports);
9
9
  _export_star(require("./winston.logger.class"), exports);
10
10
  _export_star(require("../constants/permissions"), exports);
@@ -41,13 +41,13 @@ export declare abstract class ApiService<CreateDtoT extends object, UpdateDtoT e
41
41
  private ensureArray;
42
42
  private executeInTransaction;
43
43
  protected beforeInsertOperation(_dto: CreateDtoT | Array<CreateDtoT>, _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
44
- protected afterInsertOperation(_entity: EntityT[], _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
44
+ protected afterInsertOperation(_entity: EntityT[], _dto: CreateDtoT | Array<CreateDtoT>, _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
45
45
  protected beforeUpdateOperation(_dto: UpdateDtoT | Array<UpdateDtoT>, _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
46
- protected afterUpdateOperation(_entity: EntityT[], _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
46
+ protected afterUpdateOperation(_entity: EntityT[], _dto: UpdateDtoT | Array<UpdateDtoT>, _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
47
47
  protected beforeDeleteOperation(_dto: DeleteDto, _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
48
48
  protected afterDeleteOperation(_entity: Array<{
49
49
  id: string;
50
- }>, _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
50
+ }>, _dto: DeleteDto, _user: ILoggedUserInfo | null, _queryRunner: QueryRunner): Promise<void>;
51
51
  protected getFilterQuery(query: SelectQueryBuilder<EntityT>, filter: Record<string, unknown>, _user: ILoggedUserInfo | null): Promise<{
52
52
  query: SelectQueryBuilder<EntityT>;
53
53
  isRaw: boolean;
@@ -1,2 +1,3 @@
1
1
  export declare function getJsonColumnType(): "simple-json" | "json" | "jsonb";
2
2
  export declare function getCastIntType(): string;
3
+ export declare function buildQuery(sql: string, dbType: string): string;
@@ -1,6 +1,6 @@
1
1
  export * from './api-controller.class';
2
2
  export * from './api-service.class';
3
- export * from './handle-custome-db-column-type';
3
+ export * from './handle-custome-db';
4
4
  export * from './hybrid-cache.class';
5
5
  export * from './winston.logger.class';
6
6
  export * from '../constants/permissions';
@@ -59,7 +59,7 @@ export class ApiService {
59
59
  await this.beforeInsertOperation(dto, user, qr);
60
60
  const entities = await this.convertRequestDtoToEntity(dto, user);
61
61
  const saved = await qr.manager.save(this.repository.target, entities);
62
- await this.afterInsertOperation(this.ensureArray(saved), user, qr);
62
+ await this.afterInsertOperation(this.ensureArray(saved), dto, user, qr);
63
63
  return {
64
64
  saved,
65
65
  returnFirst: true
@@ -71,7 +71,7 @@ export class ApiService {
71
71
  await this.beforeInsertOperation(dtos, user, qr);
72
72
  const entities = await this.convertRequestDtoToEntity(dtos, user);
73
73
  const saved = await qr.manager.save(this.repository.target, entities);
74
- await this.afterInsertOperation(this.ensureArray(saved), user, qr);
74
+ await this.afterInsertOperation(this.ensureArray(saved), dtos, user, qr);
75
75
  return {
76
76
  saved,
77
77
  returnFirst: false
@@ -83,7 +83,7 @@ export class ApiService {
83
83
  await this.beforeUpdateOperation(dto, user, qr);
84
84
  const entities = await this.convertRequestDtoToEntity(dto, user);
85
85
  const saved = await qr.manager.save(this.repository.target, entities);
86
- await this.afterUpdateOperation(this.ensureArray(saved), user, qr);
86
+ await this.afterUpdateOperation(this.ensureArray(saved), dto, user, qr);
87
87
  return {
88
88
  saved,
89
89
  returnFirst: true
@@ -95,7 +95,7 @@ export class ApiService {
95
95
  await this.beforeUpdateOperation(dtos, user, qr);
96
96
  const entities = await this.convertRequestDtoToEntity(dtos, user);
97
97
  const saved = await qr.manager.save(this.repository.target, entities);
98
- await this.afterUpdateOperation(this.ensureArray(saved), user, qr);
98
+ await this.afterUpdateOperation(this.ensureArray(saved), dtos, user, qr);
99
99
  return {
100
100
  saved,
101
101
  returnFirst: false
@@ -109,14 +109,14 @@ export class ApiService {
109
109
  await this.beforeInsertOperation(toInsert, user, qr);
110
110
  const insertedEntities = await this.convertRequestDtoToEntity(toInsert, user);
111
111
  const insertedSaved = await qr.manager.save(this.repository.target, insertedEntities);
112
- await this.afterInsertOperation(this.ensureArray(insertedSaved), user, qr);
112
+ await this.afterInsertOperation(this.ensureArray(insertedSaved), toInsert, user, qr);
113
113
  allResults.push(...this.ensureArray(insertedSaved));
114
114
  }
115
115
  if (toUpdate.length > 0) {
116
116
  await this.beforeUpdateOperation(toUpdate, user, qr);
117
117
  const updatedEntities = await this.convertRequestDtoToEntity(toUpdate, user);
118
118
  const updatedSaved = await qr.manager.save(this.repository.target, updatedEntities);
119
- await this.afterUpdateOperation(this.ensureArray(updatedSaved), user, qr);
119
+ await this.afterUpdateOperation(this.ensureArray(updatedSaved), toUpdate, user, qr);
120
120
  allResults.push(...this.ensureArray(updatedSaved));
121
121
  }
122
122
  return {
@@ -319,7 +319,7 @@ export class ApiService {
319
319
  id
320
320
  };
321
321
  });
322
- await this.afterDeleteOperation(ids, user, queryRunner);
322
+ await this.afterDeleteOperation(ids, option, user, queryRunner);
323
323
  await queryRunner.commitTransaction();
324
324
  await Promise.all([
325
325
  this.clearCacheForAll(),
@@ -380,11 +380,11 @@ export class ApiService {
380
380
  }
381
381
  }
382
382
  async beforeInsertOperation(_dto, _user, _queryRunner) {}
383
- async afterInsertOperation(_entity, _user, _queryRunner) {}
383
+ async afterInsertOperation(_entity, _dto, _user, _queryRunner) {}
384
384
  async beforeUpdateOperation(_dto, _user, _queryRunner) {}
385
- async afterUpdateOperation(_entity, _user, _queryRunner) {}
385
+ async afterUpdateOperation(_entity, _dto, _user, _queryRunner) {}
386
386
  async beforeDeleteOperation(_dto, _user, _queryRunner) {}
387
- async afterDeleteOperation(_entity, _user, _queryRunner) {}
387
+ async afterDeleteOperation(_entity, _dto, _user, _queryRunner) {}
388
388
  async getFilterQuery(query, filter, _user) {
389
389
  Object.entries(filter).forEach(([key, value])=>{
390
390
  query.andWhere(`${this.entityName}.${key} = :value`, {
@@ -9,3 +9,11 @@ export function getCastIntType() {
9
9
  const driver = envConfig.getTypeOrmConfig().type;
10
10
  return driver === 'postgres' ? 'INTEGER' : 'UNSIGNED';
11
11
  }
12
+ /**
13
+ * Converts MySQL-style `?` placeholders to PostgreSQL `$1, $2, ...` placeholders.
14
+ * No-op for MySQL/MariaDB.
15
+ */ export function buildQuery(sql, dbType) {
16
+ if (dbType !== 'postgres') return sql;
17
+ let index = 0;
18
+ return sql.replace(/\?/g, ()=>`$${++index}`);
19
+ }
@@ -1,6 +1,6 @@
1
1
  export * from './api-controller.class';
2
2
  export * from './api-service.class';
3
- export * from './handle-custome-db-column-type';
3
+ export * from './handle-custome-db';
4
4
  export * from './hybrid-cache.class';
5
5
  export * from './winston.logger.class';
6
6
  // Re-export permission constants for convenience
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flusys/nestjs-shared",
3
- "version": "5.4.0",
3
+ "version": "5.4.1",
4
4
  "description": "Common shared utilities for Flusys NestJS applications",
5
5
  "main": "cjs/index.js",
6
6
  "module": "fesm/index.js",
@@ -112,6 +112,6 @@
112
112
  "rxjs": "^7.8.0"
113
113
  },
114
114
  "dependencies": {
115
- "@flusys/nestjs-core": "5.4.0"
115
+ "@flusys/nestjs-core": "5.4.1"
116
116
  }
117
117
  }