@fabx.vn/core 1.0.104 → 1.1.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.
Files changed (132) hide show
  1. package/README.md +2 -6
  2. package/dist/config/database.config.d.ts +1 -0
  3. package/dist/config/database.config.js +2 -1
  4. package/dist/config/database.config.js.map +1 -1
  5. package/dist/config/internal.config.d.ts +4 -1
  6. package/dist/config/internal.config.js +4 -2
  7. package/dist/config/internal.config.js.map +1 -1
  8. package/dist/config/rabbitmq.config.d.ts +1 -5
  9. package/dist/config/rabbitmq.config.js +2 -6
  10. package/dist/config/rabbitmq.config.js.map +1 -1
  11. package/dist/config/redis-cache.config.d.ts +9 -0
  12. package/dist/config/redis-cache.config.js +13 -0
  13. package/dist/config/redis-cache.config.js.map +1 -0
  14. package/dist/config/redis.config.js +1 -1
  15. package/dist/config/redis.config.js.map +1 -1
  16. package/dist/constants/messages.constants.d.ts +0 -5
  17. package/dist/constants/messages.constants.js +0 -5
  18. package/dist/constants/messages.constants.js.map +1 -1
  19. package/dist/core/core.module.js +6 -0
  20. package/dist/core/core.module.js.map +1 -1
  21. package/dist/core/decorators/current-user.decorator.js +17 -1
  22. package/dist/core/decorators/current-user.decorator.js.map +1 -1
  23. package/dist/core/dtos/pagination.dto.d.ts +12 -0
  24. package/dist/core/dtos/pagination.dto.js +25 -1
  25. package/dist/core/dtos/pagination.dto.js.map +1 -1
  26. package/dist/core/entities/base.entity.d.ts +1 -0
  27. package/dist/core/entities/base.entity.js +4 -0
  28. package/dist/core/entities/base.entity.js.map +1 -1
  29. package/dist/core/guards/jwt-auth.guard.js +2 -0
  30. package/dist/core/guards/jwt-auth.guard.js.map +1 -1
  31. package/dist/core/modules/typeorm-filter.module.d.ts +5 -0
  32. package/dist/core/modules/typeorm-filter.module.js +41 -0
  33. package/dist/core/modules/typeorm-filter.module.js.map +1 -0
  34. package/dist/core/services/base-pagination.service.d.ts +9 -1
  35. package/dist/core/services/base-pagination.service.js +91 -0
  36. package/dist/core/services/base-pagination.service.js.map +1 -1
  37. package/dist/core/services/cookie.service.d.ts +1 -0
  38. package/dist/core/services/cookie.service.js +4 -1
  39. package/dist/core/services/cookie.service.js.map +1 -1
  40. package/dist/{services/redis.service.d.ts → core/services/redis-cache.service.d.ts} +6 -1
  41. package/dist/{services/redis.service.js → core/services/redis-cache.service.js} +37 -9
  42. package/dist/core/services/redis-cache.service.js.map +1 -0
  43. package/dist/core/services/redis.service.d.ts +1 -0
  44. package/dist/core/services/redis.service.js +15 -2
  45. package/dist/core/services/redis.service.js.map +1 -1
  46. package/dist/core/services/repository-wrapper.service.d.ts +7 -0
  47. package/dist/core/services/repository-wrapper.service.js +95 -0
  48. package/dist/core/services/repository-wrapper.service.js.map +1 -0
  49. package/dist/core/services/session.service.d.ts +2 -1
  50. package/dist/core/services/session.service.js.map +1 -1
  51. package/dist/core/subscribers/audit.subscriber.js +3 -0
  52. package/dist/core/subscribers/audit.subscriber.js.map +1 -1
  53. package/dist/enums/object-type.enum.d.ts +9 -0
  54. package/dist/enums/object-type.enum.js +14 -0
  55. package/dist/enums/object-type.enum.js.map +1 -0
  56. package/dist/index.d.ts +6 -2
  57. package/dist/index.js +13 -3
  58. package/dist/index.js.map +1 -1
  59. package/dist/libs/axios/axios-client.js +2 -2
  60. package/dist/libs/axios/axios-client.js.map +1 -1
  61. package/dist/tsconfig.tsbuildinfo +1 -1
  62. package/dist/utils/date.utils.d.ts +1 -0
  63. package/dist/utils/date.utils.js +10 -0
  64. package/dist/utils/date.utils.js.map +1 -1
  65. package/package.json +1 -1
  66. package/dist/config/google-oauth.config.d.ts +0 -6
  67. package/dist/config/google-oauth.config.js +0 -10
  68. package/dist/config/google-oauth.config.js.map +0 -1
  69. package/dist/core/services/cache.service.d.ts +0 -13
  70. package/dist/core/services/cache.service.js +0 -51
  71. package/dist/core/services/cache.service.js.map +0 -1
  72. package/dist/core/services/permission.service.d.ts +0 -23
  73. package/dist/core/services/permission.service.js +0 -83
  74. package/dist/core/services/permission.service.js.map +0 -1
  75. package/dist/core.module.d.ts +0 -2
  76. package/dist/core.module.js +0 -72
  77. package/dist/core.module.js.map +0 -1
  78. package/dist/decorators/current-user.decorator.d.ts +0 -1
  79. package/dist/decorators/current-user.decorator.js +0 -9
  80. package/dist/decorators/current-user.decorator.js.map +0 -1
  81. package/dist/decorators/public.decorator.d.ts +0 -2
  82. package/dist/decorators/public.decorator.js +0 -8
  83. package/dist/decorators/public.decorator.js.map +0 -1
  84. package/dist/decorators/require-permissions.decorator.d.ts +0 -4
  85. package/dist/decorators/require-permissions.decorator.js +0 -11
  86. package/dist/decorators/require-permissions.decorator.js.map +0 -1
  87. package/dist/dtos/api-response.dto.d.ts +0 -10
  88. package/dist/dtos/api-response.dto.js +0 -22
  89. package/dist/dtos/api-response.dto.js.map +0 -1
  90. package/dist/dtos/pagination.dto.d.ts +0 -17
  91. package/dist/dtos/pagination.dto.js +0 -61
  92. package/dist/dtos/pagination.dto.js.map +0 -1
  93. package/dist/filters/http-exception.filter.d.ts +0 -5
  94. package/dist/filters/http-exception.filter.js +0 -47
  95. package/dist/filters/http-exception.filter.js.map +0 -1
  96. package/dist/guards/internal-auth.guard.d.ts +0 -7
  97. package/dist/guards/internal-auth.guard.js +0 -42
  98. package/dist/guards/internal-auth.guard.js.map +0 -1
  99. package/dist/guards/jwt-auth.guard.d.ts +0 -12
  100. package/dist/guards/jwt-auth.guard.js +0 -56
  101. package/dist/guards/jwt-auth.guard.js.map +0 -1
  102. package/dist/guards/permission.guard.d.ts +0 -9
  103. package/dist/guards/permission.guard.js +0 -71
  104. package/dist/guards/permission.guard.js.map +0 -1
  105. package/dist/interceptors/request-context.interceptor.d.ts +0 -8
  106. package/dist/interceptors/request-context.interceptor.js +0 -39
  107. package/dist/interceptors/request-context.interceptor.js.map +0 -1
  108. package/dist/services/cookie.service.d.ts +0 -13
  109. package/dist/services/cookie.service.js +0 -50
  110. package/dist/services/cookie.service.js.map +0 -1
  111. package/dist/services/jwt.service.d.ts +0 -37
  112. package/dist/services/jwt.service.js +0 -187
  113. package/dist/services/jwt.service.js.map +0 -1
  114. package/dist/services/rabbitmq-publisher.service.d.ts +0 -9
  115. package/dist/services/rabbitmq-publisher.service.js +0 -57
  116. package/dist/services/rabbitmq-publisher.service.js.map +0 -1
  117. package/dist/services/redis.service.js.map +0 -1
  118. package/dist/services/request-context.service.d.ts +0 -18
  119. package/dist/services/request-context.service.js +0 -40
  120. package/dist/services/request-context.service.js.map +0 -1
  121. package/dist/services/request-info.service.d.ts +0 -8
  122. package/dist/services/request-info.service.js +0 -32
  123. package/dist/services/request-info.service.js.map +0 -1
  124. package/dist/services/session.service.d.ts +0 -21
  125. package/dist/services/session.service.js +0 -70
  126. package/dist/services/session.service.js.map +0 -1
  127. package/dist/strategies/jwt.strategy.d.ts +0 -7
  128. package/dist/strategies/jwt.strategy.js +0 -38
  129. package/dist/strategies/jwt.strategy.js.map +0 -1
  130. package/dist/subscribers/audit.subscriber.d.ts +0 -8
  131. package/dist/subscribers/audit.subscriber.js +0 -40
  132. package/dist/subscribers/audit.subscriber.js.map +0 -1
package/README.md CHANGED
@@ -127,7 +127,7 @@ export class MyService {
127
127
  ### Config
128
128
 
129
129
  - `jwtConfig`, `redisConfig`, `databaseConfig`, `rabbitmqConfig`, `RABBITMQ_ROUTING_KEYS`
130
- - `cookieConfig`, `internalConfig`, `corsConfig`, `googleOAuthConfig`
130
+ - `cookieConfig`, `internalConfig`, `corsConfig`
131
131
 
132
132
  ### Constants
133
133
 
@@ -152,19 +152,15 @@ JWT_REFRESH_EXPIRES_IN=7d
152
152
  SHARED_REDIS_HOST=localhost
153
153
  SHARED_REDIS_PORT=6379
154
154
  SHARED_REDIS_PASSWORD=
155
- SHARED_REDIS_DB=0
156
155
 
157
156
  # RabbitMQ
158
157
  RABBITMQ_HOST=rabbitmq
159
158
  RABBITMQ_PORT=5672
160
159
  RABBITMQ_USER=admin
161
160
  RABBITMQ_PASSWORD=admin123
162
- RABBITMQ_VHOST=/erp
161
+ RABBITMQ_VHOST=/
163
162
  RABBITMQ_EVENTS_EXCHANGE=events_exchange
164
163
 
165
- # Cookie
166
- AUTH_COOKIE_NAME=auth_tokens
167
-
168
164
  # Internal Service
169
165
  INTERNAL_SECRET=internal-secret
170
166
  ```
@@ -10,4 +10,5 @@ export declare const databaseConfig: {
10
10
  synchronize: boolean;
11
11
  autoLoadEntities: boolean;
12
12
  timezone: string;
13
+ dateStrings: boolean;
13
14
  };
@@ -12,6 +12,7 @@ exports.databaseConfig = {
12
12
  logging: process.env.NODE_ENV === "development",
13
13
  synchronize: true,
14
14
  autoLoadEntities: true,
15
- timezone: "+07:00",
15
+ timezone: "local",
16
+ dateStrings: false,
16
17
  };
17
18
  //# sourceMappingURL=database.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.config.js","sourceRoot":"","sources":["../../src/config/database.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,OAAgB;IACtB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW;IAC3C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc;IAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,cAAc;IACtD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,YAAY;IACpD,QAAQ,EAAE,CAAC,SAAS,GAAG,kCAAkC,CAAC;IAC1D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;IAC/C,WAAW,EAAE,IAAI;IACjB,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,QAAQ;CACnB,CAAC"}
1
+ {"version":3,"file":"database.config.js","sourceRoot":"","sources":["../../src/config/database.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,OAAgB;IACtB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,WAAW;IAC3C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc;IAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,cAAc;IACtD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,YAAY;IACpD,QAAQ,EAAE,CAAC,SAAS,GAAG,kCAAkC,CAAC;IAC1D,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;IAC/C,WAAW,EAAE,IAAI;IACjB,gBAAgB,EAAE,IAAI;IACtB,QAAQ,EAAE,OAAO;IACjB,WAAW,EAAE,KAAK;CACnB,CAAC"}
@@ -3,6 +3,9 @@ export declare const internalConfig: {
3
3
  userManagementServiceUrl: string;
4
4
  communicationServiceUrl: string;
5
5
  mediaServiceUrl: string;
6
- phuCuongPlusServiceUrl: string;
6
+ procurementServiceUrl: string;
7
+ salesServiceUrl: string;
8
+ masterDataServiceUrl: string;
9
+ tenantServiceUrl: string;
7
10
  internalSecret: string;
8
11
  };
@@ -8,8 +8,10 @@ exports.internalConfig = {
8
8
  communicationServiceUrl: process.env.COMMUNICATION_SERVICE_URL ||
9
9
  "http://service-communication:3003",
10
10
  mediaServiceUrl: process.env.MEDIA_SERVICE_URL || "http://service-media:3004",
11
- phuCuongPlusServiceUrl: process.env.PHU_CUONG_PLUS_SERVICE_URL ||
12
- "http://service-phu-cuong-plus:3005",
11
+ procurementServiceUrl: process.env.PROCUREMENT_SERVICE_URL || "http://service-procurement:3006",
12
+ salesServiceUrl: process.env.SALES_SERVICE_URL || "http://service-sales:3007",
13
+ masterDataServiceUrl: process.env.MASTER_DATA_SERVICE_URL || "http://service-master-data:3008",
14
+ tenantServiceUrl: process.env.TENANT_SERVICE_URL || "http://service-tenant:3009",
13
15
  internalSecret: process.env.INTERNAL_SECRET || "internal-secret",
14
16
  };
15
17
  //# sourceMappingURL=internal.config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"internal.config.js","sourceRoot":"","sources":["../../src/config/internal.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B;IAC1E,wBAAwB,EACtB,OAAO,CAAC,GAAG,CAAC,2BAA2B;QACvC,qCAAqC;IACvC,uBAAuB,EACrB,OAAO,CAAC,GAAG,CAAC,yBAAyB;QACrC,mCAAmC;IACrC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,2BAA2B;IAC7E,sBAAsB,EACpB,OAAO,CAAC,GAAG,CAAC,0BAA0B;QACtC,oCAAoC;IACtC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,iBAAiB;CACjE,CAAC"}
1
+ {"version":3,"file":"internal.config.js","sourceRoot":"","sources":["../../src/config/internal.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B;IAC1E,wBAAwB,EACtB,OAAO,CAAC,GAAG,CAAC,2BAA2B;QACvC,qCAAqC;IACvC,uBAAuB,EACrB,OAAO,CAAC,GAAG,CAAC,yBAAyB;QACrC,mCAAmC;IACrC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,2BAA2B;IAC7E,qBAAqB,EACnB,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,iCAAiC;IAC1E,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,2BAA2B;IAC7E,oBAAoB,EAClB,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,iCAAiC;IAC1E,gBAAgB,EACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,4BAA4B;IAChE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,iBAAiB;CACjE,CAAC"}
@@ -4,11 +4,7 @@ export declare const rabbitmqConfig: {
4
4
  user: string;
5
5
  password: string;
6
6
  vhost: string;
7
- authQueue: string;
8
- userMgmtQueue: string;
9
- communicationQueue: string;
10
- mediaQueue: string;
11
- phuCuongPlusQueue: string;
7
+ queueName: string;
12
8
  eventsExchange: string;
13
9
  readonly url: string;
14
10
  };
@@ -6,12 +6,8 @@ exports.rabbitmqConfig = {
6
6
  port: parseInt(process.env.RABBITMQ_PORT, 10) || 5672,
7
7
  user: process.env.RABBITMQ_USER || "admin",
8
8
  password: process.env.RABBITMQ_PASSWORD || "admin123",
9
- vhost: process.env.RABBITMQ_VHOST || "/erp",
10
- authQueue: process.env.AUTH_QUEUE || "auth_queue",
11
- userMgmtQueue: process.env.USER_MGMT_QUEUE || "user_mgmt_queue",
12
- communicationQueue: process.env.COMMUNICATION_QUEUE || "communication_queue",
13
- mediaQueue: process.env.MEDIA_QUEUE || "media_queue",
14
- phuCuongPlusQueue: process.env.PHU_CUONG_PLUS_QUEUE || "phu_cuong_plus_queue",
9
+ vhost: process.env.RABBITMQ_VHOST || "/",
10
+ queueName: process.env.RABBITMQ_QUEUE_NAME || "queue_name",
15
11
  eventsExchange: process.env.RABBITMQ_EVENTS_EXCHANGE || "events_exchange",
16
12
  get url() {
17
13
  return `amqp://${this.user}:${this.password}@${this.host}:${this.port}/${encodeURIComponent(this.vhost)}`;
@@ -1 +1 @@
1
- {"version":3,"file":"rabbitmq.config.js","sourceRoot":"","sources":["../../src/config/rabbitmq.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,UAAU;IAC7C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,IAAI;IACrD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO;IAC1C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,UAAU;IACrD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,MAAM;IAC3C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,YAAY;IACjD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,iBAAiB;IAC/D,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,qBAAqB;IAC5E,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,aAAa;IACpD,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,sBAAsB;IAC7E,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,iBAAiB;IACzE,IAAI,GAAG;QACL,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IACtD,IAAI,CAAC,IACP,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC;AAMW,QAAA,qBAAqB,GAAG;IAKnC,uBAAuB,EAAE,yBAAyB;IAMlD,iBAAiB,EAAE,mBAAmB;IAMtC,mBAAmB,EAAE,qBAAqB;IAM1C,oBAAoB,EAAE,sBAAsB;IAM5C,oBAAoB,EAAE,sBAAsB;IAM5C,oBAAoB,EAAE,sBAAsB;CACpC,CAAC"}
1
+ {"version":3,"file":"rabbitmq.config.js","sourceRoot":"","sources":["../../src/config/rabbitmq.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,UAAU;IAC7C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,IAAI;IACrD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO;IAC1C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,UAAU;IACrD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG;IACxC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,YAAY;IAC1D,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,iBAAiB;IACzE,IAAI,GAAG;QACL,OAAO,UAAU,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,IACtD,IAAI,CAAC,IACP,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvC,CAAC;CACF,CAAC;AAMW,QAAA,qBAAqB,GAAG;IAKnC,uBAAuB,EAAE,yBAAyB;IAMlD,iBAAiB,EAAE,mBAAmB;IAMtC,mBAAmB,EAAE,qBAAqB;IAM1C,oBAAoB,EAAE,sBAAsB;IAM5C,oBAAoB,EAAE,sBAAsB;IAM5C,oBAAoB,EAAE,sBAAsB;CACpC,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const redisCacheConfig: {
2
+ host: string;
3
+ port: number;
4
+ password: string;
5
+ db: number;
6
+ retryDelayOnFailover: number;
7
+ enableReadyCheck: boolean;
8
+ maxRetriesPerRequest: any;
9
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.redisCacheConfig = void 0;
4
+ exports.redisCacheConfig = {
5
+ host: process.env.REDIS_CACHE_HOST || "redis-shared",
6
+ port: parseInt(process.env.REDIS_CACHE_PORT || "6379"),
7
+ password: process.env.REDIS_CACHE_PASSWORD || undefined,
8
+ db: parseInt(process.env.REDIS_CACHE_DB || "0"),
9
+ retryDelayOnFailover: 100,
10
+ enableReadyCheck: false,
11
+ maxRetriesPerRequest: null,
12
+ };
13
+ //# sourceMappingURL=redis-cache.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-cache.config.js","sourceRoot":"","sources":["../../src/config/redis-cache.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,gBAAgB,GAAG;IAC9B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,cAAc;IACpD,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,MAAM,CAAC;IACtD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,SAAS;IACvD,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC;IAC/C,oBAAoB,EAAE,GAAG;IACzB,gBAAgB,EAAE,KAAK;IACvB,oBAAoB,EAAE,IAAI;CAC3B,CAAC"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.redisConfig = void 0;
4
4
  exports.redisConfig = {
5
- host: process.env.SHARED_REDIS_HOST || "localhost",
5
+ host: process.env.SHARED_REDIS_HOST || "redis-shared",
6
6
  port: parseInt(process.env.SHARED_REDIS_PORT || "6379"),
7
7
  password: process.env.SHARED_REDIS_PASSWORD || undefined,
8
8
  db: parseInt(process.env.SHARED_REDIS_DB || "0"),
@@ -1 +1 @@
1
- {"version":3,"file":"redis.config.js","sourceRoot":"","sources":["../../src/config/redis.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,WAAW;IAClD,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC;IACvD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS;IACxD,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC;IAChD,oBAAoB,EAAE,GAAG;IACzB,gBAAgB,EAAE,KAAK;IACvB,oBAAoB,EAAE,IAAI;CAC3B,CAAC"}
1
+ {"version":3,"file":"redis.config.js","sourceRoot":"","sources":["../../src/config/redis.config.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACzB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAc;IACrD,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM,CAAC;IACvD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS;IACxD,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC;IAChD,oBAAoB,EAAE,GAAG;IACzB,gBAAgB,EAAE,KAAK;IACvB,oBAAoB,EAAE,IAAI;CAC3B,CAAC"}
@@ -58,7 +58,6 @@ export declare const MESSAGES: {
58
58
  readonly EMAIL_ALREADY_EXISTS: "Email đã tồn tại";
59
59
  readonly AUTHENTICATION_FAILED: "Xác thực thất bại";
60
60
  readonly INTERNAL_SERVER_ERROR: "Lỗi hệ thống";
61
- readonly USER_NOT_FOUND_IN_GOOGLE_OAUTH: "Không tìm thấy người dùng trong dữ liệu Google OAuth";
62
61
  };
63
62
  readonly EMAIL_VERIFICATION: {
64
63
  readonly INVALID_OR_EXPIRED_TOKEN: "Token xác thực email không hợp lệ hoặc đã hết hạn";
@@ -87,10 +86,6 @@ export declare const MESSAGES: {
87
86
  readonly METHODS_RETRIEVED_SUCCESS: "Lấy danh sách phương thức xác thực 2 bước thành công";
88
87
  readonly METHOD_REMOVED_SUCCESS: "Xóa phương thức xác thực 2 bước thành công";
89
88
  };
90
- readonly GOOGLE_OAUTH: {
91
- readonly REDIRECT_TO_LINK_ACCOUNT: "Chuyển hướng đến Google OAuth để liên kết tài khoản";
92
- readonly NO_EMAIL_IN_PROFILE: "Không tìm thấy email trong hồ sơ Google";
93
- };
94
89
  readonly JWT: {
95
90
  readonly INVALID_TOKEN_SIGNATURE: "Chữ ký token không hợp lệ";
96
91
  readonly TOKEN_VALIDATION_FAILED: "Xác thực token thất bại";
@@ -61,7 +61,6 @@ exports.MESSAGES = {
61
61
  EMAIL_ALREADY_EXISTS: "Email đã tồn tại",
62
62
  AUTHENTICATION_FAILED: "Xác thực thất bại",
63
63
  INTERNAL_SERVER_ERROR: "Lỗi hệ thống",
64
- USER_NOT_FOUND_IN_GOOGLE_OAUTH: "Không tìm thấy người dùng trong dữ liệu Google OAuth",
65
64
  },
66
65
  EMAIL_VERIFICATION: {
67
66
  INVALID_OR_EXPIRED_TOKEN: "Token xác thực email không hợp lệ hoặc đã hết hạn",
@@ -90,10 +89,6 @@ exports.MESSAGES = {
90
89
  METHODS_RETRIEVED_SUCCESS: "Lấy danh sách phương thức xác thực 2 bước thành công",
91
90
  METHOD_REMOVED_SUCCESS: "Xóa phương thức xác thực 2 bước thành công",
92
91
  },
93
- GOOGLE_OAUTH: {
94
- REDIRECT_TO_LINK_ACCOUNT: "Chuyển hướng đến Google OAuth để liên kết tài khoản",
95
- NO_EMAIL_IN_PROFILE: "Không tìm thấy email trong hồ sơ Google",
96
- },
97
92
  JWT: {
98
93
  INVALID_TOKEN_SIGNATURE: "Chữ ký token không hợp lệ",
99
94
  TOKEN_VALIDATION_FAILED: "Xác thực token thất bại",
@@ -1 +1 @@
1
- {"version":3,"file":"messages.constants.js","sourceRoot":"","sources":["../../src/constants/messages.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG;IAEtB,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,gBAAgB;IAC3B,QAAQ,EAAE,kBAAkB;IAC5B,gBAAgB,EAAE,cAAc;IAGhC,UAAU,EAAE;QACV,QAAQ,EAAE,wBAAwB;QAClC,MAAM,EAAE,qBAAqB;QAC7B,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,oBAAoB;QAC3B,cAAc,EAAE,mBAAmB;QACnC,aAAa,EAAE,wCAAwC;QACvD,iBAAiB,EAAE,sBAAsB;QACzC,eAAe,EAAE,8BAA8B;QAC/C,mBAAmB,EAAE,kCAAkC;QACvD,UAAU,EAAE,qBAAqB;QACjC,UAAU,EAAE,kBAAkB;QAC9B,OAAO,EAAE,sBAAsB;QAC/B,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,gBAAgB;QACxB,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,yBAAyB;QAClC,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,2CAA2C;QACxD,WAAW,EAAE,kBAAkB;QAC/B,QAAQ,EAAE,yBAAyB;QACnC,YAAY,EAAE,qBAAqB;QACnC,SAAS,EAAE,4BAA4B;QACvC,SAAS,EAAE,kCAAkC;QAC7C,eAAe,EAAE,oCAAoC;QACrD,YAAY,EAAE,oCAAoC;QAClD,aAAa,EAAE,sCAAsC;QACrD,mBAAmB,EAAE,kCAAkC;KACxD;IAGD,IAAI,EAAE;QACJ,aAAa,EAAE,sBAAsB;QACrC,cAAc,EAAE,sBAAsB;QACtC,eAAe,EAAE,0BAA0B;QAC3C,oBAAoB,EAAE,oBAAoB;QAC1C,sBAAsB,EAAE,qCAAqC;QAC7D,gBAAgB,EAAE,2BAA2B;QAC7C,mBAAmB,EAAE,gCAAgC;QACrD,qBAAqB,EAAE,4BAA4B;QACnD,cAAc,EAAE,2BAA2B;QAC3C,0BAA0B,EAAE,8BAA8B;QAC1D,YAAY,EAAE,oBAAoB;QAClC,aAAa,EAAE,oBAAoB;QACnC,cAAc,EAAE,wBAAwB;QACxC,uBAAuB,EAAE,8BAA8B;QACvD,sBAAsB,EAAE,4BAA4B;QACpD,gBAAgB,EACd,sEAAsE;QACxE,QAAQ,EAAE,yBAAyB;QACnC,aAAa,EAAE,oCAAoC;QACnD,aAAa,EAAE,qBAAqB;QACpC,wBAAwB,EAAE,yBAAyB;QACnD,kBAAkB,EAChB,uEAAuE;QACzE,oBAAoB,EAAE,kBAAkB;QACxC,qBAAqB,EAAE,mBAAmB;QAC1C,qBAAqB,EAAE,cAAc;QACrC,8BAA8B,EAC5B,sDAAsD;KACzD;IAGD,kBAAkB,EAAE;QAClB,wBAAwB,EACtB,mDAAmD;QACrD,sBAAsB,EAAE,wBAAwB;QAChD,sBAAsB,EAAE,2BAA2B;KACpD;IAGD,cAAc,EAAE;QACd,wBAAwB,EACtB,qDAAqD;QACvD,aAAa,EAAE,mCAAmC;QAClD,oBAAoB,EAAE,iDAAiD;QACvE,WAAW,EAAE,cAAc;QAC3B,aAAa,EAAE,6BAA6B;KAC7C;IAGD,IAAI,EAAE;QACJ,oBAAoB,EAAE,kBAAkB;QACxC,sBAAsB,EAAE,qCAAqC;QAC7D,eAAe,EAAE,2BAA2B;KAC7C;IAGD,eAAe,EAAE;QACf,aAAa,EAAE,uDAAuD;QACtE,gBAAgB,EACd,qEAAqE;QACvE,yBAAyB,EACvB,2DAA2D;QAC7D,YAAY,EAAE,iCAAiC;QAC/C,uBAAuB,EAAE,+CAA+C;QACxE,oBAAoB,EAAE,4BAA4B;QAClD,yBAAyB,EACvB,sDAAsD;QACxD,sBAAsB,EAAE,4CAA4C;KACrE;IAGD,YAAY,EAAE;QACZ,wBAAwB,EACtB,qDAAqD;QACvD,mBAAmB,EAAE,yCAAyC;KAC/D;IAGD,GAAG,EAAE;QACH,uBAAuB,EAAE,2BAA2B;QACpD,uBAAuB,EAAE,yBAAyB;KACnD;IAGD,aAAa,EAAE;QACb,yBAAyB,EAAE,yCAAyC;QACpE,sBAAsB,EAAE,oBAAoB;QAC5C,iCAAiC,EAC/B,2CAA2C;KAC9C;IAGD,eAAe,EAAE;QACf,kBAAkB,EAChB,+DAA+D;KAClE;IAGD,GAAG,EAAE;QACH,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,KAAK;QACZ,qBAAqB,EAAE,qBAAqB;QAC5C,gBAAgB,EAAE,+BAA+B;KAClD;CACO,CAAC"}
1
+ {"version":3,"file":"messages.constants.js","sourceRoot":"","sources":["../../src/constants/messages.constants.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,9 @@ const request_info_service_1 = require("./services/request-info.service");
16
16
  const jwt_service_1 = require("./services/jwt.service");
17
17
  const session_service_1 = require("./services/session.service");
18
18
  const redis_service_1 = require("./services/redis.service");
19
+ const redis_cache_service_1 = require("./services/redis-cache.service");
19
20
  const rabbitmq_publisher_service_1 = require("./services/rabbitmq-publisher.service");
21
+ const repository_wrapper_service_1 = require("./services/repository-wrapper.service");
20
22
  const jwt_strategy_1 = require("./strategies/jwt.strategy");
21
23
  const jwt_auth_guard_1 = require("./guards/jwt-auth.guard");
22
24
  const internal_auth_guard_1 = require("./guards/internal-auth.guard");
@@ -42,10 +44,12 @@ exports.CoreModule = CoreModule = __decorate([
42
44
  ],
43
45
  providers: [
44
46
  redis_service_1.RedisService,
47
+ redis_cache_service_1.RedisCacheService,
45
48
  request_info_service_1.RequestInfoService,
46
49
  jwt_service_1.CoreJwtService,
47
50
  session_service_1.SessionService,
48
51
  rabbitmq_publisher_service_1.RabbitMQPublisher,
52
+ repository_wrapper_service_1.RepositoryWrapperService,
49
53
  jwt_strategy_1.JwtStrategy,
50
54
  jwt_auth_guard_1.JwtAuthGuard,
51
55
  internal_auth_guard_1.InternalAuthGuard,
@@ -61,7 +65,9 @@ exports.CoreModule = CoreModule = __decorate([
61
65
  jwt_service_1.CoreJwtService,
62
66
  session_service_1.SessionService,
63
67
  redis_service_1.RedisService,
68
+ redis_cache_service_1.RedisCacheService,
64
69
  rabbitmq_publisher_service_1.RabbitMQPublisher,
70
+ repository_wrapper_service_1.RepositoryWrapperService,
65
71
  jwt_strategy_1.JwtStrategy,
66
72
  jwt_auth_guard_1.JwtAuthGuard,
67
73
  internal_auth_guard_1.InternalAuthGuard,
@@ -1 +1 @@
1
- {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../../src/core/core.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,+CAAkD;AAClD,qCAAwC;AACxC,uCAA+C;AAC/C,mDAA+C;AAG/C,8EAAyE;AACzE,4DAA4D;AAC5D,oEAAgE;AAChE,gEAA4D;AAC5D,0FAA8E;AAG9E,gEAA4D;AAG5D,gEAA2D;AAC3D,0EAAqE;AAGrE,gGAA2F;AAG3F,yEAAqE;AAqD9D,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAnDtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,yBAAc;YACd,eAAS,CAAC,aAAa,CAAC;gBACtB,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;oBACjB,MAAM,EAAE,sBAAS,CAAC,MAAM;oBACxB,WAAW,EAAE;wBACX,SAAS,EAAE,sBAAS,CAAC,SAAS;qBAC/B;iBACF,CAAC;aACH,CAAC;SACH;QACD,SAAS,EAAE;YAET,4BAAY;YACZ,yCAAkB;YAClB,4BAAc;YACd,gCAAc;YACd,8CAAiB;YAEjB,0BAAW;YAEX,6BAAY;YACZ,uCAAiB;YAEjB,uDAAyB;YACzB;gBACE,OAAO,EAAE,sBAAe;gBACxB,QAAQ,EAAE,uDAAyB;aACpC;YAED,kCAAe;SAChB;QACD,OAAO,EAAE;YAEP,yCAAkB;YAClB,4BAAc;YACd,gCAAc;YACd,4BAAY;YACZ,8CAAiB;YAEjB,0BAAW;YAEX,6BAAY;YACZ,uCAAiB;YAEjB,uDAAyB;SAC1B;KACF,CAAC;GACW,UAAU,CAAG"}
1
+ {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../../src/core/core.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,+CAAkD;AAClD,qCAAwC;AACxC,uCAA+C;AAC/C,mDAA+C;AAG/C,8EAAyE;AACzE,4DAA4D;AAC5D,oEAAgE;AAChE,gEAA4D;AAC5D,4EAAuE;AACvE,0FAA8E;AAC9E,0FAAqF;AAGrF,gEAA4D;AAG5D,gEAA2D;AAC3D,0EAAqE;AAGrE,gGAA2F;AAG3F,yEAAqE;AAyD9D,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IAvDtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,yBAAc;YACd,eAAS,CAAC,aAAa,CAAC;gBACtB,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;oBACjB,MAAM,EAAE,sBAAS,CAAC,MAAM;oBACxB,WAAW,EAAE;wBACX,SAAS,EAAE,sBAAS,CAAC,SAAS;qBAC/B;iBACF,CAAC;aACH,CAAC;SACH;QACD,SAAS,EAAE;YAET,4BAAY;YACZ,uCAAiB;YACjB,yCAAkB;YAClB,4BAAc;YACd,gCAAc;YACd,8CAAiB;YACjB,qDAAwB;YAExB,0BAAW;YAEX,6BAAY;YACZ,uCAAiB;YAEjB,uDAAyB;YACzB;gBACE,OAAO,EAAE,sBAAe;gBACxB,QAAQ,EAAE,uDAAyB;aACpC;YAED,kCAAe;SAChB;QACD,OAAO,EAAE;YAEP,yCAAkB;YAClB,4BAAc;YACd,gCAAc;YACd,4BAAY;YACZ,uCAAiB;YACjB,8CAAiB;YACjB,qDAAwB;YAExB,0BAAW;YAEX,6BAAY;YACZ,uCAAiB;YAEjB,uDAAyB;SAC1B;KACF,CAAC;GACW,UAAU,CAAG"}
@@ -1,9 +1,25 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CurrentUser = void 0;
4
+ const messages_constants_1 = require("../../constants/messages.constants");
4
5
  const common_1 = require("@nestjs/common");
5
6
  exports.CurrentUser = (0, common_1.createParamDecorator)((data, ctx) => {
6
7
  const request = ctx.switchToHttp().getRequest();
7
- return request.user;
8
+ const user = request.user;
9
+ if (!user) {
10
+ throw new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.INVALID_TOKEN);
11
+ }
12
+ return {
13
+ companyId: parseInt(user.companyId || "0"),
14
+ uuid: user.uuid || "",
15
+ userId: parseInt(user.userId || "0"),
16
+ orgUnitId: parseInt(user.orgUnitId || "0"),
17
+ email: user.email || "",
18
+ fullName: user.fullName || "",
19
+ employeeCode: user.employeeCode || "",
20
+ avatar: user.avatar || "",
21
+ dataScope: user.dataScope || "",
22
+ permissions: user.permissions || [],
23
+ };
8
24
  });
9
25
  //# sourceMappingURL=current-user.decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"current-user.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/current-user.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAAwE;AAE3D,QAAA,WAAW,GAAG,IAAA,6BAAoB,EAC7C,CAAC,IAAa,EAAE,GAAqB,EAAE,EAAE;IACvC,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC,CACF,CAAC"}
1
+ {"version":3,"file":"current-user.decorator.js","sourceRoot":"","sources":["../../../src/core/decorators/current-user.decorator.ts"],"names":[],"mappings":";;;AAAA,sEAAyD;AAEzD,2CAIwB;AAEX,QAAA,WAAW,GAAG,IAAA,6BAAoB,EAC7C,CAAC,IAAa,EAAE,GAAqB,EAAkB,EAAE;IACvD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;QAC1C,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;QACrB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;QACpC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC;QAC1C,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE;QACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE;KACpC,CAAC;AACJ,CAAC,CACF,CAAC"}
@@ -15,3 +15,15 @@ export declare class PaginationResponseDto<T> {
15
15
  data: T[];
16
16
  meta: PaginationMetaDto;
17
17
  }
18
+ export declare class FindAllWithFiltersDto extends PaginationDto {
19
+ filters?: Record<string, string[]>;
20
+ }
21
+ export interface FilterValueDto {
22
+ value: string | number;
23
+ label: string;
24
+ count: number;
25
+ }
26
+ export interface GetFilterValuesDto extends PaginationDto {
27
+ column: string;
28
+ search?: string;
29
+ }
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.PaginationResponseDto = exports.PaginationMetaDto = exports.PaginationDto = void 0;
12
+ exports.FindAllWithFiltersDto = exports.PaginationResponseDto = exports.PaginationMetaDto = exports.PaginationDto = void 0;
13
13
  const class_validator_1 = require("class-validator");
14
14
  const class_transformer_1 = require("class-transformer");
15
15
  const messages_constants_1 = require("../../constants/messages.constants");
@@ -58,4 +58,28 @@ exports.PaginationMetaDto = PaginationMetaDto;
58
58
  class PaginationResponseDto {
59
59
  }
60
60
  exports.PaginationResponseDto = PaginationResponseDto;
61
+ class FindAllWithFiltersDto extends PaginationDto {
62
+ }
63
+ exports.FindAllWithFiltersDto = FindAllWithFiltersDto;
64
+ __decorate([
65
+ (0, class_validator_1.IsOptional)(),
66
+ (0, class_transformer_1.Transform)(({ value }) => {
67
+ if (!value)
68
+ return undefined;
69
+ if (typeof value === "object" && value !== null) {
70
+ const result = {};
71
+ Object.keys(value).forEach((key) => {
72
+ if (Array.isArray(value[key])) {
73
+ result[key] = value[key];
74
+ }
75
+ else if (value[key] !== undefined && value[key] !== null) {
76
+ result[key] = [String(value[key])];
77
+ }
78
+ });
79
+ return Object.keys(result).length > 0 ? result : undefined;
80
+ }
81
+ return undefined;
82
+ }),
83
+ __metadata("design:type", Object)
84
+ ], FindAllWithFiltersDto.prototype, "filters", void 0);
61
85
  //# sourceMappingURL=pagination.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.dto.js","sourceRoot":"","sources":["../../../src/core/dtos/pagination.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAOyB;AACzB,yDAAoD;AACpD,sEAAyD;AAEzD,MAAa,aAAa;IAA1B;QAKE,SAAI,GAAY,CAAC,CAAC;QAOlB,UAAK,GAAY,EAAE,CAAC;QAapB,aAAQ,GAAoB,MAAM,CAAC;IACrC,CAAC;CAAA;AA1BD,sCA0BC;AArBC;IAJC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,0BAAQ,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,6BAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;IAC1D,IAAA,qBAAG,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,6BAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;;2CAChC;AAOlB;IALC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,IAAA,0BAAQ,EAAC,EAAE,EAAE,EAAE,OAAO,EAAE,6BAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IAC3D,IAAA,qBAAG,EAAC,CAAC,EAAE,EAAE,OAAO,EAAE,6BAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;IAClD,IAAA,qBAAG,EAAC,GAAG,EAAE,EAAE,OAAO,EAAE,6BAAQ,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;;4CACjC;AAIpB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,6BAAS,EAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;;6CACxB;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,6BAAQ,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;;6CAC3C;AAKhB;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,EAAC,EAAE,OAAO,EAAE,6BAAQ,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;IACvD,IAAA,sBAAI,EAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,6BAAQ,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;;+CACnC;AAGrC,MAAa,iBAAiB;CAK7B;AALD,8CAKC;AAED,MAAa,qBAAqB;CAGjC;AAHD,sDAGC"}
1
+ {"version":3,"file":"pagination.dto.js","sourceRoot":"","sources":["../../../src/core/dtos/pagination.dto.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export declare abstract class BaseEntity {
2
2
  id: number;
3
+ companyId: number;
3
4
  searchKeyword: string;
4
5
  createdOrg: number;
5
6
  createdBy: number;
@@ -18,6 +18,10 @@ __decorate([
18
18
  (0, typeorm_1.PrimaryGeneratedColumn)({ type: "bigint" }),
19
19
  __metadata("design:type", Number)
20
20
  ], BaseEntity.prototype, "id", void 0);
21
+ __decorate([
22
+ (0, typeorm_1.Column)({ name: "company_id", type: "bigint" }),
23
+ __metadata("design:type", Number)
24
+ ], BaseEntity.prototype, "companyId", void 0);
21
25
  __decorate([
22
26
  (0, typeorm_1.Column)({ name: "search_keyword", type: "text", nullable: true }),
23
27
  __metadata("design:type", String)
@@ -1 +1 @@
1
- {"version":3,"file":"base.entity.js","sourceRoot":"","sources":["../../../src/core/entities/base.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAMiB;AAEjB,MAAsB,UAAU;CA2B/B;AA3BD,gCA2BC;AAzBC;IADC,IAAA,gCAAsB,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;sCAChC;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDAC3C;AAGtB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CAC7C;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC7C;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC7C;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC7C;AAGlB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC9B,IAAI;6CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9C,IAAI;6CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9C,IAAI;6CAAC"}
1
+ {"version":3,"file":"base.entity.js","sourceRoot":"","sources":["../../../src/core/entities/base.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAMiB;AAEjB,MAAsB,UAAU;CA8B/B;AA9BD,gCA8BC;AA5BC;IADC,IAAA,gCAAsB,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;sCAChC;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;;6CAC7B;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDAC3C;AAGtB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8CAC7C;AAGnB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC7C;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC7C;AAGlB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CAC7C;AAGlB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;8BAC9B,IAAI;6CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9C,IAAI;6CAAC;AAGhB;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BAC9C,IAAI;6CAAC"}
@@ -37,7 +37,9 @@ let JwtAuthGuard = JwtAuthGuard_1 = class JwtAuthGuard extends (0, passport_1.Au
37
37
  if (!tokens?.accessToken) {
38
38
  throw new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.NO_TOKEN);
39
39
  }
40
+ this.logger.log(`Access token: ${tokens.accessToken}`);
40
41
  const currentUser = await this.coreJwtService.getCurrentUser(tokens.accessToken);
42
+ this.logger.log(`Current user: ${JSON.stringify(currentUser)}`);
41
43
  if (!currentUser) {
42
44
  throw new common_1.UnauthorizedException(messages_constants_1.MESSAGES.AUTH.INVALID_TOKEN);
43
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../../src/core/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAKwB;AACxB,+CAA6C;AAC7C,uCAAyC;AACzC,4DAA4D;AAC5D,kEAA8D;AAC9D,sEAAyD;AACzD,wEAAkE;AAG3D,IAAM,YAAY,oBAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAGhD,YACU,SAAoB,EACpB,cAA8B;QAEtC,KAAK,EAAE,CAAC;QAHA,cAAS,GAAT,SAAS,CAAW;QACpB,mBAAc,GAAd,cAAc,CAAgB;QAJvB,WAAM,GAAG,IAAI,eAAM,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC;IAOxD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,8BAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAC1D,MAAM,CAAC,WAAW,CACnB,CAAC;QAEF,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;QAE3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,GAAQ,EAAE,IAAS,EAAE,IAAS;QAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,IAAI;YAAE,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA5CY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAKU,gBAAS;QACJ,4BAAc;GAL7B,YAAY,CA4CxB"}
1
+ {"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../../src/core/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAKwB;AACxB,+CAA6C;AAC7C,uCAAyC;AACzC,4DAA4D;AAC5D,kEAA8D;AAC9D,sEAAyD;AACzD,wEAAkE;AAG3D,IAAM,YAAY,oBAAlB,MAAM,YAAa,SAAQ,IAAA,oBAAS,EAAC,KAAK,CAAC;IAGhD,YACU,SAAoB,EACpB,cAA8B;QAEtC,KAAK,EAAE,CAAC;QAHA,cAAS,GAAT,SAAS,CAAW;QACpB,mBAAc,GAAd,cAAc,CAAgB;QAJvB,WAAM,GAAG,IAAI,eAAM,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC;IAOxD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAU,gCAAa,EAAE;YACxE,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,CAAC;QAEH,IAAI,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,8BAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;YACzB,MAAM,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAC1D,MAAM,CAAC,WAAW,CACnB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;QAE3B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,GAAQ,EAAE,IAAS,EAAE,IAAS;QAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QACjC,IAAI,GAAG,IAAI,CAAC,IAAI;YAAE,IAAI,8BAAqB,CAAC,6BAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzE,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA9CY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAKU,gBAAS;QACJ,4BAAc;GAL7B,YAAY,CA8CxB"}
@@ -0,0 +1,5 @@
1
+ import { DynamicModule } from "@nestjs/common";
2
+ import { Type } from "@nestjs/common";
3
+ export declare class TypeOrmFilterModule {
4
+ static forFeature(entities: Type<any>[]): DynamicModule;
5
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var TypeOrmFilterModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TypeOrmFilterModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const typeorm_1 = require("@nestjs/typeorm");
13
+ const repository_wrapper_service_1 = require("../services/repository-wrapper.service");
14
+ const typeorm_2 = require("@nestjs/typeorm");
15
+ let TypeOrmFilterModule = TypeOrmFilterModule_1 = class TypeOrmFilterModule {
16
+ static forFeature(entities) {
17
+ const typeOrmModule = typeorm_1.TypeOrmModule.forFeature(entities);
18
+ const wrappedProviders = entities.map((entity) => {
19
+ const repositoryToken = (0, typeorm_1.getRepositoryToken)(entity);
20
+ return {
21
+ provide: repositoryToken,
22
+ useFactory: (dataSource, wrapperService) => {
23
+ const originalRepository = dataSource.getRepository(entity);
24
+ return wrapperService.wrap(originalRepository);
25
+ },
26
+ inject: [(0, typeorm_2.getDataSourceToken)(), repository_wrapper_service_1.RepositoryWrapperService],
27
+ };
28
+ });
29
+ return {
30
+ module: TypeOrmFilterModule_1,
31
+ imports: [typeOrmModule],
32
+ providers: [repository_wrapper_service_1.RepositoryWrapperService, ...wrappedProviders],
33
+ exports: wrappedProviders,
34
+ };
35
+ }
36
+ };
37
+ exports.TypeOrmFilterModule = TypeOrmFilterModule;
38
+ exports.TypeOrmFilterModule = TypeOrmFilterModule = TypeOrmFilterModule_1 = __decorate([
39
+ (0, common_1.Module)({})
40
+ ], TypeOrmFilterModule);
41
+ //# sourceMappingURL=typeorm-filter.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeorm-filter.module.js","sourceRoot":"","sources":["../../../src/core/modules/typeorm-filter.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AACvD,6CAAoE;AAGpE,0FAAqF;AACrF,6CAAqD;AAa9C,IAAM,mBAAmB,2BAAzB,MAAM,mBAAmB;IAC9B,MAAM,CAAC,UAAU,CAAC,QAAqB;QAErC,MAAM,aAAa,GAAG,uBAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAGzD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC/C,MAAM,eAAe,GAAG,IAAA,4BAAkB,EAAC,MAAM,CAAC,CAAC;YAEnD,OAAO;gBACL,OAAO,EAAE,eAAe;gBACxB,UAAU,EAAE,CACV,UAAsB,EACtB,cAAwC,EACxC,EAAE;oBAEF,MAAM,kBAAkB,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBAE5D,OAAO,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM,EAAE,CAAC,IAAA,4BAAkB,GAAE,EAAE,qDAAwB,CAAC;aACzD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,MAAM,EAAE,qBAAmB;YAC3B,OAAO,EAAE,CAAC,aAAa,CAAC;YACxB,SAAS,EAAE,CAAC,qDAAwB,EAAE,GAAG,gBAAgB,CAAC;YAC1D,OAAO,EAAE,gBAAgB;SAC1B,CAAC;IACJ,CAAC;CACF,CAAA;AA/BY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,mBAAmB,CA+B/B"}
@@ -1,9 +1,17 @@
1
1
  import { Repository, SelectQueryBuilder } from "typeorm";
2
- import { PaginationDto, PaginationResponseDto } from "../dtos/pagination.dto";
2
+ import { PaginationDto, PaginationResponseDto, FilterValueDto, GetFilterValuesDto } from "../dtos/pagination.dto";
3
3
  export declare abstract class BasePaginationService<T> {
4
4
  protected repository: Repository<T>;
5
5
  protected constructor(repository: Repository<T>);
6
+ protected getDateColumns(): string[];
7
+ protected getDuplicateErrorMessage(): string;
8
+ protected getQueryAlias(): string;
9
+ protected getDeletedAtField(): string | null;
6
10
  protected paginate<TEntity>(queryBuilder: SelectQueryBuilder<TEntity>, paginationDto: PaginationDto): Promise<PaginationResponseDto<TEntity>>;
7
11
  protected buildSearchQuery(queryBuilder: SelectQueryBuilder<T>, searchFields: string[], search?: string): SelectQueryBuilder<T>;
8
12
  protected buildOrderQuery(queryBuilder: SelectQueryBuilder<T>, sortBy?: string, sortType?: "ASC" | "DESC", fieldMapping?: Record<string, string>): SelectQueryBuilder<T>;
13
+ protected isDateColumn(column: string): boolean;
14
+ protected handleDuplicateError(error: any, message?: string): never;
15
+ protected buildColumnFilters(queryBuilder: SelectQueryBuilder<T>, filters: Record<string, string[]>, fieldMapping: Record<string, string>, alias?: string): SelectQueryBuilder<T>;
16
+ protected getFilterValuesInternal(dto: GetFilterValuesDto, columnMapping: Record<string, string>, fieldMapping?: Record<string, string>): Promise<PaginationResponseDto<FilterValueDto>>;
9
17
  }
@@ -1,10 +1,23 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.BasePaginationService = void 0;
4
+ const common_1 = require("@nestjs/common");
4
5
  class BasePaginationService {
5
6
  constructor(repository) {
6
7
  this.repository = repository;
7
8
  }
9
+ getDateColumns() {
10
+ return [];
11
+ }
12
+ getDuplicateErrorMessage() {
13
+ return "Duplicate entry";
14
+ }
15
+ getQueryAlias() {
16
+ return "entity";
17
+ }
18
+ getDeletedAtField() {
19
+ return "deletedAt";
20
+ }
8
21
  async paginate(queryBuilder, paginationDto) {
9
22
  const { page = 1, limit = 10 } = paginationDto;
10
23
  const skip = (page - 1) * limit;
@@ -40,6 +53,84 @@ class BasePaginationService {
40
53
  }
41
54
  return queryBuilder;
42
55
  }
56
+ isDateColumn(column) {
57
+ return this.getDateColumns().includes(column);
58
+ }
59
+ handleDuplicateError(error, message) {
60
+ if (error.code === "ER_DUP_ENTRY") {
61
+ throw new common_1.ConflictException(message || this.getDuplicateErrorMessage());
62
+ }
63
+ throw error;
64
+ }
65
+ buildColumnFilters(queryBuilder, filters, fieldMapping, alias) {
66
+ const entityAlias = alias || this.getQueryAlias();
67
+ Object.entries(filters).forEach(([column, values]) => {
68
+ if (values?.length > 0) {
69
+ const dbField = fieldMapping[column] || `${entityAlias}.${column}`;
70
+ const condition = this.isDateColumn(column)
71
+ ? `DATE(${dbField}) IN (:...${column}Values)`
72
+ : `${dbField} IN (:...${column}Values)`;
73
+ queryBuilder.andWhere(condition, { [`${column}Values`]: values });
74
+ }
75
+ });
76
+ return queryBuilder;
77
+ }
78
+ async getFilterValuesInternal(dto, columnMapping, fieldMapping) {
79
+ const { column, search, page = 1, limit = 100 } = dto;
80
+ const entityAlias = this.getQueryAlias();
81
+ const entityColumn = columnMapping[column] || column;
82
+ const isDateColumn = this.isDateColumn(column);
83
+ const dbField = fieldMapping?.[column]
84
+ ? fieldMapping[column].replace(`${entityAlias}.`, "")
85
+ : entityColumn;
86
+ const selectExpression = isDateColumn
87
+ ? `DATE(${entityAlias}.${dbField}) AS value`
88
+ : `${entityAlias}.${dbField} AS value`;
89
+ const searchCondition = isDateColumn
90
+ ? `DATE(${entityAlias}.${dbField}) LIKE :search`
91
+ : `${entityAlias}.${dbField} LIKE :search`;
92
+ const baseQuery = this.repository
93
+ .createQueryBuilder(entityAlias)
94
+ .select(selectExpression)
95
+ .groupBy("value");
96
+ const deletedAtField = this.getDeletedAtField();
97
+ if (deletedAtField) {
98
+ baseQuery.where(`${entityAlias}.${deletedAtField} IS NULL`);
99
+ }
100
+ if (search) {
101
+ baseQuery.having(searchCondition, { search: `%${search}%` });
102
+ }
103
+ const total = (await baseQuery.getRawMany()).length;
104
+ const dataQuery = this.repository
105
+ .createQueryBuilder(entityAlias)
106
+ .select(selectExpression)
107
+ .addSelect("COUNT(*) AS count")
108
+ .groupBy("value")
109
+ .orderBy("value", "ASC")
110
+ .skip((page - 1) * limit)
111
+ .take(limit);
112
+ if (deletedAtField) {
113
+ dataQuery.where(`${entityAlias}.${deletedAtField} IS NULL`);
114
+ }
115
+ if (search) {
116
+ dataQuery.having(searchCondition, { search: `%${search}%` });
117
+ }
118
+ const results = await dataQuery.getRawMany();
119
+ const data = results.map((r) => ({
120
+ value: r.value,
121
+ label: String(r.value),
122
+ count: parseInt(String(r.count), 10),
123
+ }));
124
+ return {
125
+ data,
126
+ meta: {
127
+ total,
128
+ page,
129
+ limit,
130
+ totalPages: Math.ceil(total / limit),
131
+ },
132
+ };
133
+ }
43
134
  }
44
135
  exports.BasePaginationService = BasePaginationService;
45
136
  //# sourceMappingURL=base-pagination.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base-pagination.service.js","sourceRoot":"","sources":["../../../src/core/services/base-pagination.service.ts"],"names":[],"mappings":";;;AAOA,MAAsB,qBAAqB;IACzC,YAAgC,UAAyB;QAAzB,eAAU,GAAV,UAAU,CAAe;IAAG,CAAC;IAEnD,KAAK,CAAC,QAAQ,CACtB,YAAyC,EACzC,aAA4B;QAE5B,MAAM,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC;QAC/C,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAGhC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,CAAC;QAG5C,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;QAGjE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAsB;YAC9B,IAAI;YACJ,KAAK;YACL,KAAK;YACL,UAAU;SACX,CAAC;QAEF,OAAO;YACL,IAAI;YACJ,IAAI;SACL,CAAC;IACJ,CAAC;IAES,gBAAgB,CACxB,YAAmC,EACnC,YAAsB,EACtB,MAAe;QAEf,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAC9B,OAAO,YAAY,CAAC;QACtB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;QACxC,MAAM,UAAU,GAAG,YAAY,CAAC,GAAG,CACjC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,gBAAgB,KAAK,EAAE,CAClD,CAAC;QAEF,OAAO,YAAY,CAAC,QAAQ,CAC1B,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAC9B,YAAY,CAAC,MAAM,CACjB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACvB,MAAM,CAAC,SAAS,KAAK,EAAE,CAAC,GAAG,UAAU,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC,EACD,EAA4B,CAC7B,CACF,CAAC;IACJ,CAAC;IAES,eAAe,CACvB,YAAmC,EACnC,MAAe,EACf,WAA2B,MAAM,EACjC,YAAqC;QAErC,IAAI,MAAM,IAAI,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;YAErC,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACrC,OAAO,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAtED,sDAsEC"}
1
+ {"version":3,"file":"base-pagination.service.js","sourceRoot":"","sources":["../../../src/core/services/base-pagination.service.ts"],"names":[],"mappings":"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"}