@minimaltech/node-infra 0.3.22 → 0.3.24

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 (139) hide show
  1. package/dist/base/applications/base.application.d.ts +4 -2
  2. package/dist/base/applications/base.application.js +8 -2
  3. package/dist/base/applications/base.application.js.map +1 -1
  4. package/dist/base/applications/default.application.d.ts +0 -3
  5. package/dist/base/applications/default.application.js.map +1 -1
  6. package/dist/base/controllers/relational.controller.js +1 -1
  7. package/dist/base/controllers/relational.controller.js.map +1 -1
  8. package/dist/base/datasources/base.datasource.d.ts +11 -0
  9. package/dist/base/datasources/base.datasource.js +19 -0
  10. package/dist/base/datasources/base.datasource.js.map +1 -0
  11. package/dist/base/datasources/index.d.ts +2 -0
  12. package/dist/base/datasources/index.js +19 -0
  13. package/dist/base/datasources/index.js.map +1 -0
  14. package/dist/base/datasources/types.d.ts +4 -0
  15. package/dist/base/datasources/types.js +3 -0
  16. package/dist/base/datasources/types.js.map +1 -0
  17. package/dist/base/index.d.ts +1 -1
  18. package/dist/base/index.js +1 -1
  19. package/dist/base/index.js.map +1 -1
  20. package/dist/base/repositories/base.repository.js.map +1 -1
  21. package/dist/base/repositories/index.d.ts +1 -1
  22. package/dist/base/repositories/index.js +1 -1
  23. package/dist/base/repositories/index.js.map +1 -1
  24. package/dist/base/repositories/relations/has-many-polymorphic/decorator.d.ts +1 -1
  25. package/dist/base/repositories/relations/has-many-polymorphic/decorator.js +1 -1
  26. package/dist/base/repositories/relations/has-many-polymorphic/index.d.ts +2 -2
  27. package/dist/base/repositories/relations/has-many-polymorphic/index.js +2 -2
  28. package/dist/base/repositories/relations/has-many-polymorphic/index.js.map +1 -1
  29. package/dist/base/repositories/searchable-tz-crud.repository.d.ts +17 -4
  30. package/dist/base/repositories/searchable-tz-crud.repository.js +76 -20
  31. package/dist/base/repositories/searchable-tz-crud.repository.js.map +1 -1
  32. package/dist/base/repositories/tz-crud.repository.d.ts +14 -0
  33. package/dist/base/repositories/tz-crud.repository.js +24 -0
  34. package/dist/base/repositories/tz-crud.repository.js.map +1 -1
  35. package/dist/common/constants.d.ts +40 -5
  36. package/dist/common/constants.js +58 -9
  37. package/dist/common/constants.js.map +1 -1
  38. package/dist/common/environments.d.ts +9 -0
  39. package/dist/common/environments.js +11 -1
  40. package/dist/common/environments.js.map +1 -1
  41. package/dist/common/types.d.ts +18 -3
  42. package/dist/components/authenticate/models/oauth2-client.model.js +3 -0
  43. package/dist/components/authenticate/models/oauth2-client.model.js.map +1 -1
  44. package/dist/components/authenticate/repositories/oauth2.repository.d.ts +1 -1
  45. package/dist/components/authenticate/repositories/oauth2.repository.js +4 -4
  46. package/dist/components/authenticate/repositories/oauth2.repository.js.map +1 -1
  47. package/dist/components/authorize/adapters/adapter-builder.d.ts +1 -1
  48. package/dist/components/authorize/adapters/base.adapter.d.ts +1 -1
  49. package/dist/components/authorize/adapters/casbin-postgres-adapter.helper.d.ts +1 -1
  50. package/dist/components/authorize/adapters/casbin-redis-adapter.helper.d.ts +1 -1
  51. package/dist/components/authorize/migrations/0000-create-view-policy.js +5 -5
  52. package/dist/components/authorize/migrations/0000-create-view-policy.js.map +1 -1
  53. package/dist/components/authorize/repositories/authorize.repository.d.ts +1 -1
  54. package/dist/components/authorize/repositories/authorize.repository.js +6 -6
  55. package/dist/components/authorize/repositories/authorize.repository.js.map +1 -1
  56. package/dist/components/authorize/services/enforcer.service.d.ts +1 -1
  57. package/dist/components/authorize/services/enforcer.service.js +2 -2
  58. package/dist/components/authorize/services/enforcer.service.js.map +1 -1
  59. package/dist/components/crash-report/common/keys.d.ts +1 -1
  60. package/dist/components/crash-report/common/keys.js +2 -2
  61. package/dist/components/crash-report/common/keys.js.map +1 -1
  62. package/dist/components/crash-report/component.js +1 -1
  63. package/dist/components/crash-report/component.js.map +1 -1
  64. package/dist/components/crash-report/providers/third-parties/base.d.ts +0 -1
  65. package/dist/components/crash-report/providers/third-parties/base.js.map +1 -1
  66. package/dist/components/grpc/helpers/grpc-server.js.map +1 -1
  67. package/dist/components/migration/repositories/migration.repository.d.ts +1 -1
  68. package/dist/components/migration/repositories/migration.repository.js +2 -2
  69. package/dist/components/migration/repositories/migration.repository.js.map +1 -1
  70. package/dist/components/socket-io/helpers/socket-io-server.helper.js +1 -7
  71. package/dist/components/socket-io/helpers/socket-io-server.helper.js.map +1 -1
  72. package/dist/datasources/index.d.ts +3 -2
  73. package/dist/datasources/index.js +3 -2
  74. package/dist/datasources/index.js.map +1 -1
  75. package/dist/datasources/kvmem/datasource.d.ts +5 -0
  76. package/dist/datasources/{kvmem.datasource.js → kvmem/datasource.js} +10 -10
  77. package/dist/datasources/kvmem/datasource.js.map +1 -0
  78. package/dist/datasources/kvmem/index.d.ts +1 -0
  79. package/dist/datasources/kvmem/index.js +18 -0
  80. package/dist/datasources/kvmem/index.js.map +1 -0
  81. package/dist/datasources/postgres/datasource.d.ts +7 -0
  82. package/dist/datasources/{postgres.datasource.js → postgres/datasource.js} +22 -21
  83. package/dist/datasources/postgres/datasource.js.map +1 -0
  84. package/dist/datasources/postgres/index.d.ts +2 -0
  85. package/dist/datasources/postgres/index.js +19 -0
  86. package/dist/datasources/postgres/index.js.map +1 -0
  87. package/dist/datasources/postgres/types.d.ts +9 -0
  88. package/dist/datasources/postgres/types.js +3 -0
  89. package/dist/datasources/postgres/types.js.map +1 -0
  90. package/dist/datasources/redis/connector.d.ts +36 -0
  91. package/dist/datasources/redis/connector.js +128 -0
  92. package/dist/datasources/redis/connector.js.map +1 -0
  93. package/dist/datasources/redis/datasource.d.ts +9 -0
  94. package/dist/datasources/redis/datasource.js +48 -0
  95. package/dist/datasources/redis/datasource.js.map +1 -0
  96. package/dist/datasources/redis/index.d.ts +3 -0
  97. package/dist/datasources/redis/index.js +20 -0
  98. package/dist/datasources/redis/index.js.map +1 -0
  99. package/dist/datasources/redis/types.d.ts +10 -0
  100. package/dist/datasources/redis/types.js +3 -0
  101. package/dist/datasources/redis/types.js.map +1 -0
  102. package/dist/helpers/application-environment.helper.d.ts +1 -0
  103. package/dist/helpers/application-environment.helper.js +3 -0
  104. package/dist/helpers/application-environment.helper.js.map +1 -1
  105. package/dist/helpers/logger/default-logger.d.ts +21 -8
  106. package/dist/helpers/logger/default-logger.js +102 -30
  107. package/dist/helpers/logger/default-logger.js.map +1 -1
  108. package/dist/helpers/logger/index.d.ts +2 -1
  109. package/dist/helpers/logger/index.js +2 -1
  110. package/dist/helpers/logger/index.js.map +1 -1
  111. package/dist/helpers/logger/transports/dgram.transport.d.ts +28 -0
  112. package/dist/helpers/logger/transports/dgram.transport.js +84 -0
  113. package/dist/helpers/logger/transports/dgram.transport.js.map +1 -0
  114. package/dist/helpers/logger/transports/index.d.ts +1 -0
  115. package/dist/helpers/logger/transports/index.js +18 -0
  116. package/dist/helpers/logger/transports/index.js.map +1 -0
  117. package/dist/helpers/queue/queue.helper.d.ts +0 -1
  118. package/dist/helpers/queue/queue.helper.js.map +1 -1
  119. package/dist/helpers/redis.helper.d.ts +118 -42
  120. package/dist/helpers/redis.helper.js +163 -62
  121. package/dist/helpers/redis.helper.js.map +1 -1
  122. package/dist/tsconfig.base.json +19 -8
  123. package/dist/utilities/date.utility.d.ts +7 -3
  124. package/dist/utilities/date.utility.js +28 -10
  125. package/dist/utilities/date.utility.js.map +1 -1
  126. package/dist/utilities/index.d.ts +1 -0
  127. package/dist/utilities/index.js +1 -0
  128. package/dist/utilities/index.js.map +1 -1
  129. package/dist/utilities/query.utility.d.ts +30 -0
  130. package/dist/utilities/query.utility.js +143 -0
  131. package/dist/utilities/query.utility.js.map +1 -0
  132. package/package.json +3 -3
  133. package/dist/base/base.datasource.d.ts +0 -9
  134. package/dist/base/base.datasource.js +0 -13
  135. package/dist/base/base.datasource.js.map +0 -1
  136. package/dist/datasources/kvmem.datasource.d.ts +0 -9
  137. package/dist/datasources/kvmem.datasource.js.map +0 -1
  138. package/dist/datasources/postgres.datasource.d.ts +0 -14
  139. package/dist/datasources/postgres.datasource.js.map +0 -1
@@ -30,20 +30,38 @@ const isWeekday = (date) => {
30
30
  return isoWeekday > 0 && isoWeekday < 6;
31
31
  };
32
32
  exports.isWeekday = isWeekday;
33
- const getPreviousWeekday = () => {
34
- let date = (0, dayjs_1.default)();
35
- while (!(0, exports.isWeekday)(date)) {
36
- date = date.subtract(1, 'day');
33
+ /* export const getPreviousWeekday = () => {
34
+ let date = dayjs();
35
+ while (!isWeekday(date)) {
36
+ date = date.subtract(1, 'day');
37
+ }
38
+
39
+ return date;
40
+ }; */
41
+ const getPreviousWeekday = (opts) => {
42
+ const { date } = opts !== null && opts !== void 0 ? opts : { date: (0, dayjs_1.default)() };
43
+ let rs = (0, dayjs_1.default)(date).clone().subtract(1, 'day');
44
+ while (!(0, exports.isWeekday)(rs.toISOString())) {
45
+ rs = rs.subtract(1, 'day');
37
46
  }
38
- return date;
47
+ return rs;
39
48
  };
40
49
  exports.getPreviousWeekday = getPreviousWeekday;
41
- const getNextWeekday = () => {
42
- let date = (0, dayjs_1.default)();
43
- while (!(0, exports.isWeekday)(date)) {
44
- date = date.add(1, 'day');
50
+ /* export const getNextWeekday = () => {
51
+ let date = dayjs();
52
+ while (!isWeekday(date)) {
53
+ date = date.add(1, 'day');
54
+ }
55
+
56
+ return date;
57
+ }; */
58
+ const getNextWeekday = (opts) => {
59
+ const { date } = opts !== null && opts !== void 0 ? opts : { date: (0, dayjs_1.default)() };
60
+ let rs = (0, dayjs_1.default)(date).clone().add(1, 'day');
61
+ while (!(0, exports.isWeekday)(rs.toISOString())) {
62
+ rs = rs.add(1, 'day');
45
63
  }
46
- return date;
64
+ return rs;
47
65
  };
48
66
  exports.getNextWeekday = getNextWeekday;
49
67
  const getDateTz = (opts) => {
@@ -1 +1 @@
1
- {"version":3,"file":"date.utility.js","sourceRoot":"","sources":["../../src/utilities/date.utility.ts"],"names":[],"mappings":";;;;;;;AAAA,kDAA0B;AA4DjB,gBA5DF,eAAK,CA4DE;AA1Dd,uFAAqE;AACrE,mEAAiD;AACjD,qEAAmD;AACnD,2DAAyC;AACzC,mEAAiD;AACjD,mDAAwC;AAExC,eAAK,CAAC,MAAM,CAAC,2BAAuB,CAAC,CAAC;AACtC,eAAK,CAAC,MAAM,CAAC,aAAS,CAAC,CAAC;AACxB,eAAK,CAAC,MAAM,CAAC,kBAAc,CAAC,CAAC;AAC7B,eAAK,CAAC,MAAM,CAAC,iBAAa,CAAC,CAAC;AAC5B,eAAK,CAAC,MAAM,CAAC,iBAAa,CAAC,CAAC;AAE5B,MAAM,EAAE,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,mCAAI,kBAAkB,CAAC;AAC1E,eAAK,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEjB,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE;IAClC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAFW,QAAA,KAAK,SAEhB;AAEK,MAAM,SAAS,GAAG,CAAC,IAAiB,EAAE,EAAE;;IAC7C,MAAM,UAAU,GAAG,MAAA,IAAA,eAAK,EAAC,IAAI,CAAC,0CAAE,UAAU,EAAE,CAAC;IAC7C,OAAO,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC;AAHW,QAAA,SAAS,aAGpB;AAEK,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,IAAI,IAAI,GAAG,IAAA,eAAK,GAAE,CAAC;IACnB,OAAO,CAAC,IAAA,iBAAS,EAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAPW,QAAA,kBAAkB,sBAO7B;AAEK,MAAM,cAAc,GAAG,GAAG,EAAE;IACjC,IAAI,IAAI,GAAG,IAAA,eAAK,GAAE,CAAC;IACnB,OAAO,CAAC,IAAA,iBAAS,EAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB;AAEK,MAAM,SAAS,GAAG,CAAC,IAKzB,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IACrE,OAAO,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC,CAAC;AARW,QAAA,SAAS,aAQpB;AAEK,MAAM,MAAM,GAAG,GAAG,EAAE;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9B,OAAO,IAAA,qBAAK,EAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAA,EAAE,EAAI,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAHW,QAAA,MAAM,UAGjB"}
1
+ {"version":3,"file":"date.utility.js","sourceRoot":"","sources":["../../src/utilities/date.utility.ts"],"names":[],"mappings":";;;;;;;AAAA,kDAA0B;AAkFjB,gBAlFF,eAAK,CAkFE;AAhFd,uFAAqE;AACrE,mEAAiD;AACjD,qEAAmD;AACnD,2DAAyC;AACzC,mEAAiD;AACjD,mDAAwC;AAExC,eAAK,CAAC,MAAM,CAAC,2BAAuB,CAAC,CAAC;AACtC,eAAK,CAAC,MAAM,CAAC,aAAS,CAAC,CAAC;AACxB,eAAK,CAAC,MAAM,CAAC,kBAAc,CAAC,CAAC;AAC7B,eAAK,CAAC,MAAM,CAAC,iBAAa,CAAC,CAAC;AAC5B,eAAK,CAAC,MAAM,CAAC,iBAAa,CAAC,CAAC;AAE5B,MAAM,EAAE,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,mCAAI,kBAAkB,CAAC;AAC1E,eAAK,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEjB,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE;IAClC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAFW,QAAA,KAAK,SAEhB;AAEK,MAAM,SAAS,GAAG,CAAC,IAA0B,EAAE,EAAE;;IACtD,MAAM,UAAU,GAAG,MAAA,IAAA,eAAK,EAAC,IAAI,CAAC,0CAAE,UAAU,EAAE,CAAC;IAC7C,OAAO,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC;AAC1C,CAAC,CAAC;AAHW,QAAA,SAAS,aAGpB;AAEF;;;;;;;KAOK;AAEE,MAAM,kBAAkB,GAAG,CAAC,IAAsC,EAAE,EAAE;IAC3E,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,IAAI,EAAE,IAAA,eAAK,GAAE,EAAE,CAAC;IAE3C,IAAI,EAAE,GAAG,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAA,iBAAS,EAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACpC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B;AAEF;;;;;;;KAOK;AAEE,MAAM,cAAc,GAAG,CAAC,IAAsC,EAAE,EAAE;IACvE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,IAAI,EAAE,IAAA,eAAK,GAAE,EAAE,CAAC;IAE3C,IAAI,EAAE,GAAG,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,IAAA,iBAAS,EAAC,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QACpC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AAEK,MAAM,SAAS,GAAG,CAAC,IAKzB,EAAE,EAAE;IACH,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,GAAG,KAAK,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC;IACrE,OAAO,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACvE,CAAC,CAAC;AARW,QAAA,SAAS,aAQpB;AAEK,MAAM,MAAM,GAAG,GAAG,EAAE;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAC9B,OAAO,IAAA,qBAAK,EAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,SAAA,EAAE,EAAI,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAHW,QAAA,MAAM,UAGjB"}
@@ -4,5 +4,6 @@ export * from './error.utility';
4
4
  export * from './parse.utility';
5
5
  export * from './performance.utility';
6
6
  export * from './promise.utility';
7
+ export * from './query.utility';
7
8
  export * from './request.utility';
8
9
  export * from './url.utility';
@@ -20,6 +20,7 @@ __exportStar(require("./error.utility"), exports);
20
20
  __exportStar(require("./parse.utility"), exports);
21
21
  __exportStar(require("./performance.utility"), exports);
22
22
  __exportStar(require("./promise.utility"), exports);
23
+ __exportStar(require("./query.utility"), exports);
23
24
  __exportStar(require("./request.utility"), exports);
24
25
  __exportStar(require("./url.utility"), exports);
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,iDAA+B;AAC/B,kDAAgC;AAChC,kDAAgC;AAChC,wDAAsC;AACtC,oDAAkC;AAClC,oDAAkC;AAClC,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,iDAA+B;AAC/B,kDAAgC;AAChC,kDAAgC;AAChC,wDAAsC;AACtC,oDAAkC;AAClC,kDAAgC;AAChC,oDAAkC;AAClC,gDAA8B"}
@@ -0,0 +1,30 @@
1
+ import { BaseTzEntity } from '../base';
2
+ import { AnyType, EntityClassType } from '../common';
3
+ export declare const getTableDefinition: <T extends BaseTzEntity>(opts: {
4
+ model: EntityClassType<T>;
5
+ alias?: string;
6
+ }) => {
7
+ table: {
8
+ name: string;
9
+ alias: string;
10
+ nameWithQuotation: string;
11
+ };
12
+ tableWithAlias: string;
13
+ columns: { [key in keyof T]: string; };
14
+ columnsNoAlias: { [key in keyof T]: string; };
15
+ };
16
+ export declare const getValue: (value: AnyType) => any;
17
+ export declare const buildBatchUpdateQuery: <E>(opts: {
18
+ tableName: string;
19
+ keys: (keyof E)[];
20
+ data: AnyType[];
21
+ setKeys: (keyof E | {
22
+ sourceKey: keyof E;
23
+ targetKey: keyof E;
24
+ })[];
25
+ whereKeys: (keyof E | {
26
+ sourceKey: keyof E;
27
+ targetKey: keyof E;
28
+ })[];
29
+ whereRaws?: string[];
30
+ }) => string;
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.buildBatchUpdateQuery = exports.getValue = exports.getTableDefinition = void 0;
7
+ const helpers_1 = require("../helpers");
8
+ const get_1 = __importDefault(require("lodash/get"));
9
+ const pick_1 = __importDefault(require("lodash/pick"));
10
+ const snakeCase_1 = __importDefault(require("lodash/snakeCase"));
11
+ const error_utility_1 = require("./error.utility");
12
+ const getTableDefinition = (opts) => {
13
+ const { model, alias } = opts;
14
+ const tableAlias = alias !== null && alias !== void 0 ? alias : model.name.toLowerCase();
15
+ const tableNameWithAlias = `"${model.name}" ${tableAlias}`;
16
+ const tableColumns = Object.entries(model.definition.properties)
17
+ .map(([key, value]) => {
18
+ var _a, _b, _c;
19
+ const columnName = (_c = (_a = value === null || value === void 0 ? void 0 : value.name) !== null && _a !== void 0 ? _a : (_b = value === null || value === void 0 ? void 0 : value.postgresql) === null || _b === void 0 ? void 0 : _b.columnName) !== null && _c !== void 0 ? _c : key;
20
+ return {
21
+ [`${key}`]: `${tableAlias}.${columnName}`,
22
+ };
23
+ })
24
+ .reduce((acc, cur) => {
25
+ return Object.assign(Object.assign({}, acc), cur);
26
+ }, {});
27
+ const tableColumnsNoAlias = Object.entries(model.definition.properties)
28
+ .map(([key, value]) => {
29
+ var _a, _b, _c;
30
+ const columnName = (_c = (_a = value === null || value === void 0 ? void 0 : value.name) !== null && _a !== void 0 ? _a : (_b = value === null || value === void 0 ? void 0 : value.postgresql) === null || _b === void 0 ? void 0 : _b.columnName) !== null && _c !== void 0 ? _c : key;
31
+ return {
32
+ [`${key}`]: `${columnName}`,
33
+ };
34
+ })
35
+ .reduce((acc, cur) => {
36
+ return Object.assign(Object.assign({}, acc), cur);
37
+ }, {});
38
+ return {
39
+ table: { name: model.name, alias: tableAlias, nameWithQuotation: `"${model.name}"` },
40
+ tableWithAlias: tableNameWithAlias,
41
+ columns: tableColumns,
42
+ columnsNoAlias: tableColumnsNoAlias,
43
+ };
44
+ };
45
+ exports.getTableDefinition = getTableDefinition;
46
+ // --------------------------------------------------------------------------------
47
+ const getValue = (value) => {
48
+ switch (typeof value) {
49
+ case null: {
50
+ return 'null';
51
+ }
52
+ case 'number': {
53
+ return value === null || value === void 0 ? void 0 : value.toString();
54
+ }
55
+ case 'boolean': {
56
+ return value;
57
+ }
58
+ case 'string': {
59
+ if ((value === null || value === void 0 ? void 0 : value.toString().trim()) === '') {
60
+ return "''";
61
+ }
62
+ return `'${value === null || value === void 0 ? void 0 : value.toString().replace(/'/g, "''")}'`;
63
+ }
64
+ default: {
65
+ return `'${value}'`;
66
+ }
67
+ }
68
+ };
69
+ exports.getValue = getValue;
70
+ // --------------------------------------------------------------------------------
71
+ const buildBatchUpdateQuery = (opts) => {
72
+ const { data, tableName, keys, setKeys, whereKeys, whereRaws = [] } = opts;
73
+ const withAlias = 't';
74
+ if (!data.length || !keys.length || !setKeys.length || !whereKeys.length) {
75
+ helpers_1.applicationLogger.error('[batchUpdate] Missing required fields | Data: %d | Keys: %d | Set Keys: %d | Where Keys: %d', data.length, keys.length, setKeys.length, whereKeys.length);
76
+ throw (0, error_utility_1.getError)({
77
+ message: '[batchUpdate] Missing required fields',
78
+ });
79
+ }
80
+ // ----------------------------------------
81
+ const formattedData = data.map(obj => (0, pick_1.default)(obj, ...keys));
82
+ const withValues = formattedData.map(obj => {
83
+ const values = [];
84
+ for (const k of Object.keys(obj).sort()) {
85
+ const value = (0, get_1.default)(obj, k, null);
86
+ switch (typeof value) {
87
+ case 'object': {
88
+ values.push((0, exports.getValue)(JSON.stringify(value)));
89
+ break;
90
+ }
91
+ default: {
92
+ values.push((0, exports.getValue)(value));
93
+ break;
94
+ }
95
+ }
96
+ }
97
+ return `(${values.toString()})`;
98
+ });
99
+ const withKeys = keys.map(key => (0, snakeCase_1.default)(String(key))).sort();
100
+ // ----------------------------------------
101
+ const updateSets = [];
102
+ for (const key of setKeys) {
103
+ switch (typeof key) {
104
+ case 'string': {
105
+ updateSets.push(`"${(0, snakeCase_1.default)(key)}" = ${withAlias}."${(0, snakeCase_1.default)(key)}"`);
106
+ break;
107
+ }
108
+ case 'object': {
109
+ updateSets.push(`"${(0, snakeCase_1.default)(String(key.targetKey))}" = ${withAlias}."${(0, snakeCase_1.default)(String(key.sourceKey))}"::JSONB`);
110
+ break;
111
+ }
112
+ default: {
113
+ break;
114
+ }
115
+ }
116
+ }
117
+ // ----------------------------------------
118
+ const updateWheres = [];
119
+ for (const key of whereKeys) {
120
+ switch (typeof key) {
121
+ case 'string': {
122
+ updateWheres.push(`"${tableName}"."${(0, snakeCase_1.default)(key)}" = ${withAlias}."${(0, snakeCase_1.default)(key)}"`);
123
+ break;
124
+ }
125
+ case 'object': {
126
+ updateWheres.push(`${(0, snakeCase_1.default)(String(key.targetKey))} = ${withAlias}."${(0, snakeCase_1.default)(String(key.sourceKey))}"`);
127
+ break;
128
+ }
129
+ default: {
130
+ break;
131
+ }
132
+ }
133
+ }
134
+ // ----------------------------------------
135
+ return `WITH ${withAlias} (${withKeys}) AS (VALUES ${withValues})
136
+ UPDATE "${tableName}"
137
+ SET ${updateSets.join(', ')}
138
+ FROM ${withAlias}
139
+ WHERE ${updateWheres.join(' AND ')}
140
+ ${whereRaws.length ? `AND ${whereRaws.join(', AND')}` : ''};`;
141
+ };
142
+ exports.buildBatchUpdateQuery = buildBatchUpdateQuery;
143
+ //# sourceMappingURL=query.utility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.utility.js","sourceRoot":"","sources":["../../src/utilities/query.utility.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minimaltech/node-infra",
3
- "version": "0.3.22",
3
+ "version": "0.3.24",
4
4
  "description": "Minimal Technology NodeJS Infrastructure - Loopback 4 Framework",
5
5
  "keywords": [
6
6
  "web",
@@ -142,11 +142,11 @@
142
142
  "mocha": "^11.0.1",
143
143
  "mqtt": "^5.10.3",
144
144
  "multer": "1.4.5-lts.1",
145
- "rxjs": "^7.8.1",
146
145
  "socket.io": "^4.8.1",
147
146
  "socket.io-client": "^4.8.1",
148
147
  "winston": "^3.17.0",
149
- "winston-daily-rotate-file": "^5.0.0"
148
+ "winston-daily-rotate-file": "^5.0.0",
149
+ "winston-transport": "^4.9.0"
150
150
  },
151
151
  "devDependencies": {
152
152
  "@loopback/build": "^11.0.7",
@@ -1,9 +0,0 @@
1
- import { juggler } from '@loopback/repository';
2
- import { ApplicationLogger } from '../helpers';
3
- export declare class BaseDataSource extends juggler.DataSource {
4
- protected logger: ApplicationLogger;
5
- constructor(opts: {
6
- dsConfig: object;
7
- scope: string;
8
- });
9
- }
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.BaseDataSource = void 0;
4
- const repository_1 = require("@loopback/repository");
5
- const helpers_1 = require("../helpers");
6
- class BaseDataSource extends repository_1.juggler.DataSource {
7
- constructor(opts) {
8
- super(opts.dsConfig);
9
- this.logger = helpers_1.LoggerFactory.getLogger([opts.scope]);
10
- }
11
- }
12
- exports.BaseDataSource = BaseDataSource;
13
- //# sourceMappingURL=base.datasource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base.datasource.js","sourceRoot":"","sources":["../../src/base/base.datasource.ts"],"names":[],"mappings":";;;AAAA,qDAA+C;AAC/C,uCAA6D;AAE7D,MAAa,cAAe,SAAQ,oBAAO,CAAC,UAAU;IAGpD,YAAY,IAAyC;QACnD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,uBAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;CACF;AAPD,wCAOC"}
@@ -1,9 +0,0 @@
1
- import { BaseDataSource } from '../base/base.datasource';
2
- export declare class KvMemDataSource extends BaseDataSource {
3
- static dataSourceName: string;
4
- static readonly defaultConfig: {
5
- name: string;
6
- connector: string;
7
- };
8
- constructor(dsConfig?: object);
9
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"kvmem.datasource.js","sourceRoot":"","sources":["../../src/datasources/kvmem.datasource.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAAwD;AACxD,yCAAwC;AAExC,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,WAAW;CACvB,CAAC;AAEF,IAAa,eAAe,uBAA5B,MAAa,eAAgB,SAAQ,gCAAc;IAIjD,YAEE,WAAmB,SAAS;QAE5B,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC;;AAVU,0CAAe;AACnB,8BAAc,GAAG,SAAS,CAAC,IAAI,AAAjB,CAAkB;AACvB,6BAAa,GAAG,SAAS,AAAZ,CAAa;0BAF/B,eAAe;IAKvB,WAAA,IAAA,aAAM,EAAC,sBAAsB,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;GAL1D,eAAe,CAW3B"}
@@ -1,14 +0,0 @@
1
- import { BaseDataSource } from '../base/base.datasource';
2
- export declare class PostgresDataSource extends BaseDataSource {
3
- static dataSourceName: string | undefined;
4
- static readonly defaultConfig: {
5
- connector: string;
6
- name: string | undefined;
7
- host: string | undefined;
8
- port: string | undefined;
9
- user: string | undefined;
10
- password: string | undefined;
11
- database: string | undefined;
12
- };
13
- constructor(dsConfig?: object);
14
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"postgres.datasource.js","sourceRoot":"","sources":["../../src/datasources/postgres.datasource.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,4DAAwD;AACxD,2CAAuC;AACvC,yCAAwC;AACxC,qDAA6B;AAC7B,6DAAqC;AAErC,MAAM,SAAS,GAAG;IAChB,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB;IACzC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACvC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACvC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;IAC3C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;IAC/C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB;CAChD,CAAC;AAEF,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,gCAAc;IAIpD,YAEE,WAAmB,SAAS;QAE5B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAA,aAAG,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAClC,QAAQ,OAAO,KAAK,EAAE,CAAC;gBACrB,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;wBACxB,MAAM,IAAA,oBAAQ,EAAC;4BACb,OAAO,EAAE,8CAA8C,GAAG,aAAa,KAAK,EAAE;yBAC/E,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,KAAK,QAAQ,CAAC,CAAC,CAAC;oBACd,IAAI,CAAC,KAAK,IAAI,IAAA,iBAAO,EAAC,KAAK,CAAC,EAAE,CAAC;wBAC7B,MAAM,IAAA,oBAAQ,EAAC;4BACb,OAAO,EAAE,8CAA8C,GAAG,aAAa,KAAK,EAAE;yBAC/E,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,OAAO,CAAC,CAAC,CAAC;oBACR,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAkB,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE,QAAQ,CAAC,CAAC;IAC5E,CAAC;;AAnCU,gDAAkB;AACtB,iCAAc,GAAG,SAAS,CAAC,IAAI,AAAjB,CAAkB;AACvB,gCAAa,GAAG,SAAS,AAAZ,CAAa;6BAF/B,kBAAkB;IAK1B,WAAA,IAAA,aAAM,EAAC,sBAAsB,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;GAL1D,kBAAkB,CAoC9B"}