@joktec/mysql 0.2.12 → 0.2.14

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 (147) hide show
  1. package/README.md +211 -81
  2. package/dist/__tests__/mysql.column.decorator.spec.d.ts +2 -0
  3. package/dist/__tests__/mysql.column.decorator.spec.d.ts.map +1 -0
  4. package/dist/__tests__/mysql.column.decorator.spec.js +60 -0
  5. package/dist/__tests__/mysql.column.decorator.spec.js.map +1 -0
  6. package/dist/__tests__/mysql.dialect.spec.d.ts +2 -0
  7. package/dist/__tests__/mysql.dialect.spec.d.ts.map +1 -0
  8. package/dist/__tests__/mysql.dialect.spec.js +28 -0
  9. package/dist/__tests__/mysql.dialect.spec.js.map +1 -0
  10. package/dist/__tests__/mysql.exception.spec.d.ts +2 -0
  11. package/dist/__tests__/mysql.exception.spec.d.ts.map +1 -0
  12. package/dist/__tests__/mysql.exception.spec.js +42 -0
  13. package/dist/__tests__/mysql.exception.spec.js.map +1 -0
  14. package/dist/__tests__/mysql.helper.spec.d.ts +2 -0
  15. package/dist/__tests__/mysql.helper.spec.d.ts.map +1 -0
  16. package/dist/__tests__/mysql.helper.spec.js +80 -0
  17. package/dist/__tests__/mysql.helper.spec.js.map +1 -0
  18. package/dist/__tests__/mysql.module.integration.spec.d.ts +2 -0
  19. package/dist/__tests__/mysql.module.integration.spec.d.ts.map +1 -0
  20. package/dist/__tests__/mysql.module.integration.spec.js +67 -0
  21. package/dist/__tests__/mysql.module.integration.spec.js.map +1 -0
  22. package/dist/__tests__/mysql.repo.cursor.spec.d.ts +2 -0
  23. package/dist/__tests__/mysql.repo.cursor.spec.d.ts.map +1 -0
  24. package/dist/__tests__/mysql.repo.cursor.spec.js +146 -0
  25. package/dist/__tests__/mysql.repo.cursor.spec.js.map +1 -0
  26. package/dist/__tests__/mysql.service.spec.d.ts +2 -0
  27. package/dist/__tests__/mysql.service.spec.d.ts.map +1 -0
  28. package/dist/__tests__/mysql.service.spec.js +70 -0
  29. package/dist/__tests__/mysql.service.spec.js.map +1 -0
  30. package/dist/__tests__/mysql.utils.spec.d.ts +2 -0
  31. package/dist/__tests__/mysql.utils.spec.d.ts.map +1 -0
  32. package/dist/__tests__/mysql.utils.spec.js +21 -0
  33. package/dist/__tests__/mysql.utils.spec.js.map +1 -0
  34. package/dist/decorators/column.decorator.d.ts +11 -0
  35. package/dist/decorators/column.decorator.d.ts.map +1 -0
  36. package/dist/decorators/column.decorator.js +35 -0
  37. package/dist/decorators/column.decorator.js.map +1 -0
  38. package/dist/decorators/columns/array.column.d.ts +2 -0
  39. package/dist/decorators/columns/array.column.d.ts.map +1 -0
  40. package/dist/decorators/columns/array.column.js +8 -0
  41. package/dist/decorators/columns/array.column.js.map +1 -0
  42. package/dist/decorators/columns/bool.column.d.ts +2 -0
  43. package/dist/decorators/columns/bool.column.d.ts.map +1 -0
  44. package/dist/decorators/columns/bool.column.js +8 -0
  45. package/dist/decorators/columns/bool.column.js.map +1 -0
  46. package/dist/decorators/columns/column.factory.d.ts +5 -0
  47. package/dist/decorators/columns/column.factory.d.ts.map +1 -0
  48. package/dist/decorators/columns/column.factory.js +40 -0
  49. package/dist/decorators/columns/column.factory.js.map +1 -0
  50. package/dist/decorators/columns/column.type.d.ts +33 -0
  51. package/dist/decorators/columns/column.type.d.ts.map +1 -0
  52. package/dist/decorators/columns/column.type.js +3 -0
  53. package/dist/decorators/columns/column.type.js.map +1 -0
  54. package/dist/decorators/columns/column.util.d.ts +15 -0
  55. package/dist/decorators/columns/column.util.d.ts.map +1 -0
  56. package/dist/decorators/columns/column.util.js +82 -0
  57. package/dist/decorators/columns/column.util.js.map +1 -0
  58. package/dist/decorators/columns/date.column.d.ts +2 -0
  59. package/dist/decorators/columns/date.column.d.ts.map +1 -0
  60. package/dist/decorators/columns/date.column.js +8 -0
  61. package/dist/decorators/columns/date.column.js.map +1 -0
  62. package/dist/decorators/columns/enum.column.d.ts +3 -0
  63. package/dist/decorators/columns/enum.column.d.ts.map +1 -0
  64. package/dist/decorators/columns/enum.column.js +8 -0
  65. package/dist/decorators/columns/enum.column.js.map +1 -0
  66. package/dist/decorators/columns/index.d.ts +14 -0
  67. package/dist/decorators/columns/index.d.ts.map +1 -0
  68. package/dist/decorators/columns/index.js +30 -0
  69. package/dist/decorators/columns/index.js.map +1 -0
  70. package/dist/decorators/columns/nested.column.d.ts +4 -0
  71. package/dist/decorators/columns/nested.column.d.ts.map +1 -0
  72. package/dist/decorators/columns/nested.column.js +12 -0
  73. package/dist/decorators/columns/nested.column.js.map +1 -0
  74. package/dist/decorators/columns/number.column.d.ts +3 -0
  75. package/dist/decorators/columns/number.column.d.ts.map +1 -0
  76. package/dist/decorators/columns/number.column.js +15 -0
  77. package/dist/decorators/columns/number.column.js.map +1 -0
  78. package/dist/decorators/columns/primary.column.d.ts +3 -0
  79. package/dist/decorators/columns/primary.column.d.ts.map +1 -0
  80. package/dist/decorators/columns/primary.column.js +48 -0
  81. package/dist/decorators/columns/primary.column.js.map +1 -0
  82. package/dist/decorators/columns/string.column.d.ts +3 -0
  83. package/dist/decorators/columns/string.column.d.ts.map +1 -0
  84. package/dist/decorators/columns/string.column.js +25 -0
  85. package/dist/decorators/columns/string.column.js.map +1 -0
  86. package/dist/decorators/columns/swagger.column.d.ts +4 -0
  87. package/dist/decorators/columns/swagger.column.d.ts.map +1 -0
  88. package/dist/decorators/columns/swagger.column.js +40 -0
  89. package/dist/decorators/columns/swagger.column.js.map +1 -0
  90. package/dist/decorators/columns/transform.column.d.ts +4 -0
  91. package/dist/decorators/columns/transform.column.d.ts.map +1 -0
  92. package/dist/decorators/columns/transform.column.js +15 -0
  93. package/dist/decorators/columns/transform.column.js.map +1 -0
  94. package/dist/decorators/index.d.ts +1 -0
  95. package/dist/decorators/index.d.ts.map +1 -1
  96. package/dist/decorators/index.js +1 -0
  97. package/dist/decorators/index.js.map +1 -1
  98. package/dist/decorators/table.decorator.d.ts.map +1 -1
  99. package/dist/decorators/table.decorator.js +18 -12
  100. package/dist/decorators/table.decorator.js.map +1 -1
  101. package/dist/helpers/mysql.finder.d.ts.map +1 -1
  102. package/dist/helpers/mysql.finder.js.map +1 -1
  103. package/dist/helpers/mysql.helper.d.ts +21 -6
  104. package/dist/helpers/mysql.helper.d.ts.map +1 -1
  105. package/dist/helpers/mysql.helper.js +152 -82
  106. package/dist/helpers/mysql.helper.js.map +1 -1
  107. package/dist/helpers/mysql.utils.d.ts.map +1 -1
  108. package/dist/helpers/mysql.utils.js +28 -11
  109. package/dist/helpers/mysql.utils.js.map +1 -1
  110. package/dist/index.d.ts +1 -0
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +5 -0
  113. package/dist/index.js.map +1 -1
  114. package/dist/models/mysql.model.d.ts.map +1 -1
  115. package/dist/models/mysql.model.js.map +1 -1
  116. package/dist/models/mysql.option.d.ts +11 -2
  117. package/dist/models/mysql.option.d.ts.map +1 -1
  118. package/dist/mysql.config.d.ts +1 -17
  119. package/dist/mysql.config.d.ts.map +1 -1
  120. package/dist/mysql.config.js +1 -17
  121. package/dist/mysql.config.js.map +1 -1
  122. package/dist/mysql.exception.d.ts.map +1 -1
  123. package/dist/mysql.exception.js +48 -4
  124. package/dist/mysql.exception.js.map +1 -1
  125. package/dist/mysql.module.d.ts.map +1 -1
  126. package/dist/mysql.module.js.map +1 -1
  127. package/dist/mysql.repo.d.ts +8 -0
  128. package/dist/mysql.repo.d.ts.map +1 -1
  129. package/dist/mysql.repo.js +164 -33
  130. package/dist/mysql.repo.js.map +1 -1
  131. package/dist/mysql.service.d.ts.map +1 -1
  132. package/dist/mysql.service.js +8 -2
  133. package/dist/mysql.service.js.map +1 -1
  134. package/dist/services/index.d.ts +1 -0
  135. package/dist/services/index.d.ts.map +1 -1
  136. package/dist/services/index.js +1 -0
  137. package/dist/services/index.js.map +1 -1
  138. package/dist/services/mysql.dialect.d.ts +14 -0
  139. package/dist/services/mysql.dialect.d.ts.map +1 -0
  140. package/dist/services/mysql.dialect.js +50 -0
  141. package/dist/services/mysql.dialect.js.map +1 -0
  142. package/dist/services/mysql.strategy.d.ts +1 -1
  143. package/dist/services/mysql.strategy.d.ts.map +1 -1
  144. package/dist/services/mysql.strategy.js +1 -1
  145. package/dist/services/mysql.strategy.js.map +1 -1
  146. package/dist/tsconfig.tsbuildinfo +1 -1
  147. package/package.json +14 -10
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.exception.js","sourceRoot":"","sources":["../src/mysql.exception.ts"],"names":[],"mappings":";;;AAAA,uCAAmG;AACnG,mCAAmC;AACnC,qCAA2C;AAE3C,MAAa,cAAe,SAAQ,8BAAuB;IACzD,YAAY,MAAc,iBAAiB,EAAE,KAAW;QACtD,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpB,CAAC;CACF;AAJD,wCAIC;AAEY,QAAA,UAAU,GAAG,IAAA,0BAAmB,EAAC,KAAK,EAAE,OAA8B,EAAgB,EAAE;IACnG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,0BAAgB,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,IAAA,kBAAS,EAAC,GAAG,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"mysql.exception.js","sourceRoot":"","sources":["../src/mysql.exception.ts"],"names":[],"mappings":";;;AAAA,uCAAmG;AACnG,qCAA2C;AAE3C,MAAa,cAAe,SAAQ,8BAAuB;IACzD,YAAY,MAAc,iBAAiB,EAAE,KAAW;QACtD,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACpB,CAAC;CACF;AAJD,wCAIC;AAKY,QAAA,UAAU,GAAG,IAAA,0BAAmB,EAAC,KAAK,EAAE,OAA8B,EAAgB,EAAE;IACnG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACjC,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,0BAAgB,EAAE,CAAC;YACpC,MAAM,IAAI,cAAc,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,GAAG,YAAY,cAAc;YAAE,MAAM,GAAG,CAAC;QAC7C,MAAM,IAAI,cAAc,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,uBAAuB,CAAC,GAAqB;IACpD,MAAM,WAAW,GAAI,GAAW,CAAC,WAAW,IAAI,EAAE,CAAC;IACnD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC;IAE3E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc,CAAC;QACpB,KAAK,IAAI,CAAC;QACV,KAAK,OAAO;YACV,OAAO,qBAAqB,CAAC;QAC/B,KAAK,sBAAsB,CAAC;QAC5B,KAAK,wBAAwB,CAAC;QAC9B,KAAK,sBAAsB,CAAC;QAC5B,KAAK,wBAAwB,CAAC;QAC9B,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,IAAI,CAAC;QACV,KAAK,OAAO;YACV,OAAO,6BAA6B,CAAC;QACvC,KAAK,mBAAmB,CAAC;QACzB,KAAK,IAAI,CAAC;QACV,KAAK,OAAO;YACV,OAAO,0BAA0B,CAAC;QACpC,KAAK,oBAAoB,CAAC;QAC1B,KAAK,IAAI,CAAC;QACV,KAAK,OAAO;YACV,OAAO,sBAAsB,CAAC;QAChC,KAAK,kBAAkB,CAAC;QACxB,KAAK,IAAI,CAAC;QACV,KAAK,OAAO;YACV,OAAO,gBAAgB,CAAC;QAC1B,KAAK,sBAAsB,CAAC;QAC5B,KAAK,IAAI,CAAC;QACV,KAAK,OAAO;YACV,OAAO,oBAAoB,CAAC;QAC9B,KAAK,cAAc,CAAC;QACpB,KAAK,WAAW,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,yBAAyB,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,4BAA4B,CAAC;QACtC;YACE,OAAO,oBAAoB,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.module.d.ts","sourceRoot":"","sources":["../src/mysql.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAkB,MAAM,cAAc,CAAC;AAG7E,OAAO,EAGL,kBAAkB,EAGnB,MAAM,gBAAgB,CAAC;AAGxB,qBASa,WAAW;IACtB,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,kBAAkB,EAAE,GAAG,aAAa;CA2B7D"}
1
+ {"version":3,"file":"mysql.module.d.ts","sourceRoot":"","sources":["../src/mysql.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAkB,MAAM,cAAc,CAAC;AAG7E,OAAO,EAGL,kBAAkB,EAGnB,MAAM,gBAAgB,CAAC;AAGxB,qBASa,WAAW;IAItB,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,kBAAkB,EAAE,GAAG,aAAa;CA2B7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.module.js","sourceRoot":"","sources":["../src/mysql.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,uCAA6E;AAC7E,yCAAwC;AACxC,mCAAiC;AACjC,iDAMwB;AACxB,mDAA+C;AAWxC,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,OAAO,CAAC,GAAG,IAA0B;QAC1C,MAAM,cAAc,GAAuB,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,GAAuB,EAAE,EAAE;YACxG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,qBAAc,CAAC,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,MAAM,mBAAmB,GAA4B,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC,MAAM,CACvE,CAAC,IAAY,EAAE,GAAuB,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,qBAAc,CAAC,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC,EACD,EAAE,CACH,CAAC;QAEF,IAAI,IAAA,gBAAO,EAAC,cAAc,CAAC;YAAE,cAAc,CAAC,qBAAc,CAAC,GAAG,EAAE,CAAC;QACjE,IAAI,IAAA,gBAAO,EAAC,mBAAmB,CAAC;YAAE,mBAAmB,CAAC,qBAAc,CAAC,GAAG,EAAE,CAAC;QAE3E,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,SAAS,EAAE;gBACT,4BAAY;gBACZ,EAAE,OAAO,EAAE,iCAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE;gBACzD,EAAE,OAAO,EAAE,sCAAuB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;aACpE;YACD,OAAO,EAAE,CAAC,4BAAY,CAAC;SACxB,CAAC;IACJ,CAAC;CACF,CAAA;AA5BY,kCAAW;sBAAX,WAAW;IATvB,IAAA,aAAM,GAAE;IACR,IAAA,aAAM,EAAC;QACN,SAAS,EAAE;YACT,4BAAY;YACZ,EAAE,OAAO,EAAE,iCAAkB,EAAE,QAAQ,EAAE,EAAE,CAAC,qBAAc,CAAC,EAAE,EAAE,EAAE,EAAE;YACnE,EAAE,OAAO,EAAE,sCAAuB,EAAE,QAAQ,EAAE,EAAE,CAAC,qBAAc,CAAC,EAAE,EAAE,EAAE,EAAE;SACzE;QACD,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CA4BvB"}
1
+ {"version":3,"file":"mysql.module.js","sourceRoot":"","sources":["../src/mysql.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,uCAA6E;AAC7E,yCAAwC;AACxC,mCAAiC;AACjC,iDAMwB;AACxB,mDAA+C;AAWxC,IAAM,WAAW,mBAAjB,MAAM,WAAW;IAItB,MAAM,CAAC,OAAO,CAAC,GAAG,IAA0B;QAC1C,MAAM,cAAc,GAAuB,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAY,EAAE,GAAuB,EAAE,EAAE;YACxG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,qBAAc,CAAC,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;QACd,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,MAAM,mBAAmB,GAA4B,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC,MAAM,CACvE,CAAC,IAAY,EAAE,GAAuB,EAAE,EAAE;YACxC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,qBAAc,CAAC,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC,EACD,EAAE,CACH,CAAC;QAEF,IAAI,IAAA,gBAAO,EAAC,cAAc,CAAC;YAAE,cAAc,CAAC,qBAAc,CAAC,GAAG,EAAE,CAAC;QACjE,IAAI,IAAA,gBAAO,EAAC,mBAAmB,CAAC;YAAE,mBAAmB,CAAC,qBAAc,CAAC,GAAG,EAAE,CAAC;QAE3E,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,SAAS,EAAE;gBACT,4BAAY;gBACZ,EAAE,OAAO,EAAE,iCAAkB,EAAE,QAAQ,EAAE,cAAc,EAAE;gBACzD,EAAE,OAAO,EAAE,sCAAuB,EAAE,QAAQ,EAAE,mBAAmB,EAAE;aACpE;YACD,OAAO,EAAE,CAAC,4BAAY,CAAC;SACxB,CAAC;IACJ,CAAC;CACF,CAAA;AA/BY,kCAAW;sBAAX,WAAW;IATvB,IAAA,aAAM,GAAE;IACR,IAAA,aAAM,EAAC;QACN,SAAS,EAAE;YACT,4BAAY;YACZ,EAAE,OAAO,EAAE,iCAAkB,EAAE,QAAQ,EAAE,EAAE,CAAC,qBAAc,CAAC,EAAE,EAAE,EAAE,EAAE;YACnE,EAAE,OAAO,EAAE,sCAAuB,EAAE,QAAQ,EAAE,EAAE,CAAC,qBAAc,CAAC,EAAE,EAAE,EAAE,EAAE;SACzE;QACD,OAAO,EAAE,CAAC,4BAAY,CAAC;KACxB,CAAC;GACW,WAAW,CA+BvB"}
@@ -16,11 +16,16 @@ export declare abstract class MysqlRepo<T extends MysqlModel, ID extends MysqlId
16
16
  onApplicationBootstrap(): void;
17
17
  get entityManager(): EntityManager;
18
18
  get repository(): Repository<T>;
19
+ private get dialect();
20
+ private getRepository;
19
21
  protected transform(docs: any | any[]): T | T[];
20
22
  qb(query?: IMysqlRequest<T>, opts?: IMysqlOption<T>): SelectQueryBuilder<T>;
21
23
  finder(query?: IMysqlRequest<T>, opts?: IMysqlOption<T>): FindManyOptions<T>;
22
24
  private whereById;
23
25
  paginate(query: IMysqlRequest<T>, opts?: IMysqlOption<T>): Promise<IMysqlResponse<T>>;
26
+ private paginateByCursor;
27
+ private assertCursorColumns;
28
+ private applyCursorCondition;
24
29
  find(query: IMysqlRequest<T>, opts?: IMysqlOption<T>): Promise<T[]>;
25
30
  count(query: IMysqlRequest<T>, opts?: IMysqlOption<T>): Promise<number>;
26
31
  findOne(cond: ID | ICondition<T>, query?: Omit<IMysqlRequest<T>, 'condition'>, opts?: IMysqlOption<T>): Promise<T>;
@@ -36,5 +41,8 @@ export declare abstract class MysqlRepo<T extends MysqlModel, ID extends MysqlId
36
41
  bulkUpsert(body: DeepPartial<T>[], onConflicts: KeyOf<T>[], opts?: IMysqlOption<T> & Omit<UpsertOptions<T>, 'conflictPaths'> & {
37
42
  chunkSize?: number;
38
43
  }): Promise<T[]>;
44
+ private reloadUpsertResult;
45
+ private resolveReloadCondition;
46
+ private pickDefined;
39
47
  }
40
48
  //# sourceMappingURL=mysql.repo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.repo.d.ts","sourceRoot":"","sources":["../src/mysql.repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysql.repo.d.ts","sourceRoot":"","sources":["../src/mysql.repo.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ const core_1 = require("@joktec/core");
14
14
  const utils_1 = require("@joktec/utils");
15
15
  const lodash_1 = require("lodash");
16
16
  const helpers_1 = require("./helpers");
17
+ const mysql_config_1 = require("./mysql.config");
17
18
  const mysql_exception_1 = require("./mysql.exception");
18
19
  const mysql_service_1 = require("./mysql.service");
19
20
  let MysqlRepo = class MysqlRepo {
@@ -32,6 +33,15 @@ let MysqlRepo = class MysqlRepo {
32
33
  get repository() {
33
34
  return this.mysqlService.getRepository(this.model, this.conId);
34
35
  }
36
+ get dialect() {
37
+ return this.mysqlService.getConfig(this.conId).dialect || mysql_config_1.Dialect.MYSQL;
38
+ }
39
+ getRepository(opts = {}) {
40
+ const manager = opts.queryRunner?.manager || opts.manager;
41
+ if (manager)
42
+ return manager.getRepository(this.model);
43
+ return this.repository;
44
+ }
35
45
  transform(docs) {
36
46
  if ((0, lodash_1.isNil)(docs))
37
47
  return null;
@@ -41,18 +51,19 @@ let MysqlRepo = class MysqlRepo {
41
51
  return ((0, lodash_1.isArray)(docs) ? transformDocs : transformDocs[0]);
42
52
  }
43
53
  qb(query = {}, opts = {}) {
44
- const metadata = Reflect.getMetadata('searchableKeywords', this.model);
45
- const qb = this.repository.createQueryBuilder(this.model.name);
54
+ const repository = this.getRepository(opts);
55
+ const context = { metadata: repository.metadata, dialect: this.dialect };
56
+ const qb = repository.createQueryBuilder(this.model.name);
46
57
  if (query.condition)
47
- helpers_1.MysqlHelper.applyCondition(qb, query.condition);
58
+ helpers_1.MysqlHelper.applyCondition(qb, query.condition, context);
48
59
  if (query.select)
49
- helpers_1.MysqlHelper.applyProjection(qb, query.select);
60
+ helpers_1.MysqlHelper.applyProjection(qb, query.select, context);
50
61
  if (query.sort)
51
- helpers_1.MysqlHelper.applyOrder(qb, query.sort);
62
+ helpers_1.MysqlHelper.applyOrder(qb, query.sort, context);
52
63
  helpers_1.MysqlHelper.applyPagination(qb, query);
53
64
  if (query.populate)
54
- helpers_1.MysqlHelper.applyRelations(qb, query.populate);
55
- if (opts.withDeleted)
65
+ helpers_1.MysqlHelper.applyRelations(qb, query.populate, context);
66
+ if (query.withDeleted || opts.withDeleted)
56
67
  qb.withDeleted();
57
68
  if (opts.comment)
58
69
  qb.comment(opts.comment);
@@ -83,25 +94,110 @@ let MysqlRepo = class MysqlRepo {
83
94
  }
84
95
  whereById(pkValue) {
85
96
  const primaryColumns = this.repository.metadata.primaryColumns.map(pk => pk.propertyName);
86
- return primaryColumns.reduce((curr, acc) => {
87
- curr[acc] = pkValue;
88
- return curr;
89
- }, {});
97
+ if (primaryColumns.length !== 1) {
98
+ throw new mysql_exception_1.MysqlException('MYSQL_COMPOSITE_PRIMARY_KEY_REQUIRES_CONDITION', {
99
+ model: this.model.name,
100
+ primaryColumns,
101
+ });
102
+ }
103
+ return { [primaryColumns[0]]: pkValue };
90
104
  }
91
105
  async paginate(query, opts = {}) {
106
+ if (core_1.CursorPagination.isCursorRequest(query))
107
+ return this.paginateByCursor(query, opts);
92
108
  const findQuery = { ...query };
93
- const countQuery = (0, lodash_1.omit)(query, ['select', 'page', 'limit', 'offset', 'sort']);
109
+ const countQuery = (0, lodash_1.omit)(query, [
110
+ 'select',
111
+ 'page',
112
+ 'limit',
113
+ 'offset',
114
+ 'cursor',
115
+ 'cursorKey',
116
+ 'sort',
117
+ ]);
94
118
  const [items, total] = await Promise.all([this.find(findQuery, opts), this.count(countQuery, opts)]);
95
119
  return { items, total };
96
120
  }
121
+ async paginateByCursor(query, opts = {}) {
122
+ const limit = core_1.CursorPagination.getLimit(query.limit);
123
+ const primaryKeys = this.repository.metadata.primaryColumns.map(pk => pk.propertyName);
124
+ const defaultKeys = primaryKeys.length ? ['createdAt', ...primaryKeys] : ['createdAt'];
125
+ let cursor;
126
+ try {
127
+ cursor = core_1.CursorPagination.resolve({
128
+ cursor: query.cursor,
129
+ cursorKey: query.cursorKey,
130
+ defaultKeys,
131
+ tieBreakerKeys: primaryKeys,
132
+ sort: query.sort,
133
+ });
134
+ }
135
+ catch (err) {
136
+ throw new mysql_exception_1.MysqlException('MYSQL_INVALID_CURSOR', err);
137
+ }
138
+ this.assertCursorColumns(cursor.keys, opts);
139
+ const findQuery = (0, lodash_1.omit)(query, ['page', 'limit', 'offset', 'cursor', 'cursorKey', 'sort']);
140
+ const qb = this.qb(findQuery, opts);
141
+ const cursorContext = { metadata: this.getRepository(opts).metadata, dialect: this.dialect };
142
+ this.applyCursorCondition(qb, cursor.keys, cursor.directions, cursor.values, opts);
143
+ cursor.keys.forEach((key, index) => {
144
+ qb.addOrderBy(helpers_1.MysqlHelper.column(qb, key, cursorContext), cursor.directions[index] === 'asc' ? 'ASC' : 'DESC');
145
+ });
146
+ qb.take(limit + 1);
147
+ const countQuery = (0, lodash_1.omit)(query, [
148
+ 'select',
149
+ 'page',
150
+ 'limit',
151
+ 'offset',
152
+ 'cursor',
153
+ 'cursorKey',
154
+ 'sort',
155
+ ]);
156
+ const [rawItems, total] = await Promise.all([qb.getMany(), this.count(countQuery, opts)]);
157
+ const transformedItems = this.transform(rawItems);
158
+ const { items, hasNextPage, nextCursor } = core_1.CursorPagination.slice(transformedItems, limit, cursor.keys, cursor.directions);
159
+ return { items, total, hasNextPage, nextCursor };
160
+ }
161
+ assertCursorColumns(keys, opts = {}) {
162
+ const repository = this.getRepository(opts);
163
+ const columnPaths = new Set(repository.metadata.columns.map(column => column.propertyPath || column.propertyName));
164
+ const invalidKey = keys.find(key => !columnPaths.has(key));
165
+ if (invalidKey)
166
+ throw new mysql_exception_1.MysqlException('MYSQL_UNKNOWN_COLUMN', { key: invalidKey, model: this.model.name });
167
+ }
168
+ applyCursorCondition(qb, keys, directions, values, opts = {}) {
169
+ if (!values?.length)
170
+ return;
171
+ const context = { metadata: this.getRepository(opts).metadata, dialect: this.dialect };
172
+ const columns = keys.map(key => helpers_1.MysqlHelper.column(qb, key, context));
173
+ const clauses = columns.map((column, index) => {
174
+ const equality = keys.slice(0, index).map((equalityKey, equalityIndex) => {
175
+ const param = `cursor_${equalityIndex}_eq`;
176
+ qb.setParameter(param, values[equalityIndex]);
177
+ return `${helpers_1.MysqlHelper.column(qb, equalityKey, context)} = :${param}`;
178
+ });
179
+ const operator = directions[index] === 'asc' ? '>' : '<';
180
+ const param = `cursor_${index}`;
181
+ qb.setParameter(param, values[index]);
182
+ return [...equality, `${column} ${operator} :${param}`].join(' AND ');
183
+ });
184
+ qb.andWhere(`(${clauses.map(clause => `(${clause})`).join(' OR ')})`);
185
+ }
97
186
  async find(query, opts = {}) {
98
- const options = this.finder(query, opts);
99
- const docs = await this.repository.find(options);
187
+ const docs = await this.qb(query, opts).getMany();
100
188
  return this.transform(docs);
101
189
  }
102
190
  async count(query, opts = {}) {
103
- const options = this.finder(query, opts);
104
- return this.repository.count(options);
191
+ const countQuery = (0, lodash_1.omit)(query, [
192
+ 'select',
193
+ 'page',
194
+ 'limit',
195
+ 'offset',
196
+ 'cursor',
197
+ 'cursorKey',
198
+ 'sort',
199
+ ]);
200
+ return this.qb(countQuery, opts).getCount();
105
201
  }
106
202
  async findOne(cond, query = {}, opts = {}) {
107
203
  const condition = {};
@@ -110,14 +206,14 @@ let MysqlRepo = class MysqlRepo {
110
206
  else
111
207
  Object.assign(condition, cond);
112
208
  const mergeQuery = Object.assign({}, query, { condition });
113
- const options = this.finder(mergeQuery, opts);
114
- const doc = await this.repository.findOne(options);
209
+ const doc = await this.qb({ ...mergeQuery, limit: 1 }, opts).getOne();
115
210
  return this.transform(doc);
116
211
  }
117
212
  async create(body, opts = {}) {
118
213
  const transformBody = this.transform(body);
119
- const entity = this.repository.create(transformBody);
120
- return this.repository.save(entity, opts);
214
+ const repository = this.getRepository(opts);
215
+ const entity = repository.create(transformBody);
216
+ return repository.save(entity, opts);
121
217
  }
122
218
  async update(cond, body, options = {}) {
123
219
  const condition = {};
@@ -125,45 +221,80 @@ let MysqlRepo = class MysqlRepo {
125
221
  Object.assign(condition, { ...this.whereById(cond) });
126
222
  else
127
223
  Object.assign(condition, cond);
128
- const entity = await this.findOne(condition, options);
224
+ const entity = await this.findOne(condition, {}, options);
129
225
  if (!entity)
130
226
  return null;
131
227
  const transformBody = this.transform({ ...entity, ...body });
132
- const doc = await this.repository.save(transformBody, options);
228
+ const doc = await this.getRepository(options).save(transformBody, options);
133
229
  return this.transform(doc);
134
230
  }
135
231
  async delete(cond, opts = {}) {
136
- const entity = await this.findOne(cond, opts);
232
+ const entity = await this.findOne(cond, { withDeleted: opts.withDeleted }, opts);
137
233
  if (!entity)
138
234
  return null;
139
- const func = opts?.force ? this.repository.remove : this.repository.softRemove;
140
- const doc = await func(entity);
235
+ const repository = this.getRepository(opts);
236
+ const doc = opts?.force || !repository.metadata.deleteDateColumn
237
+ ? await repository.remove(entity, opts)
238
+ : await repository.softRemove(entity, opts);
141
239
  return this.transform(doc);
142
240
  }
143
241
  async restore(cond, opts = {}) {
144
- const entity = await this.findOne(cond, opts);
242
+ const entity = await this.findOne(cond, { withDeleted: true }, opts);
145
243
  if (!entity)
146
244
  return null;
147
- const doc = await this.repository.recover(entity);
245
+ const doc = await this.getRepository(opts).recover(entity, opts);
148
246
  return this.transform(doc);
149
247
  }
150
248
  async upsert(body, onConflicts, opts = {}) {
151
- const transformBody = this.repository.create(body);
152
- const result = await this.repository.upsert(transformBody, { ...opts, conflictPaths: onConflicts });
153
- return this.transform(result.generatedMaps[0]);
249
+ const repository = this.getRepository(opts);
250
+ const transformBody = repository.create(body);
251
+ const result = await repository.upsert(transformBody, { ...opts, conflictPaths: onConflicts });
252
+ return this.reloadUpsertResult(transformBody, result.generatedMaps?.[0], onConflicts, opts);
154
253
  }
155
254
  async bulkUpsert(body, onConflicts, opts = {}) {
156
255
  const chunkSize = (0, utils_1.toInt)(opts?.chunkSize, 1000);
157
256
  const chunkItems = (0, lodash_1.chunk)(body, chunkSize);
158
257
  const results = [];
258
+ const repository = this.getRepository(opts);
159
259
  for (const chunkItem of chunkItems) {
160
- const transformBody = this.repository.create(chunkItem);
161
- const result = await this.repository.upsert(transformBody, { ...opts, conflictPaths: onConflicts });
162
- const transformResult = this.transform(result.generatedMaps);
260
+ const transformBody = repository.create(chunkItem);
261
+ const result = await repository.upsert(transformBody, { ...opts, conflictPaths: onConflicts });
262
+ const transformResult = await Promise.all(transformBody.map((item, index) => this.reloadUpsertResult(item, result.generatedMaps?.[index], onConflicts, opts)));
163
263
  results.push(transformResult);
164
264
  }
165
265
  return results.flat();
166
266
  }
267
+ async reloadUpsertResult(body, generatedMap, onConflicts, opts) {
268
+ if (opts.reload === false && generatedMap)
269
+ return this.transform(generatedMap);
270
+ const condition = this.resolveReloadCondition(body, generatedMap, onConflicts);
271
+ if (!condition) {
272
+ if (generatedMap)
273
+ return this.transform(generatedMap);
274
+ throw new mysql_exception_1.MysqlException('MYSQL_UPSERT_RELOAD_FAILED', { model: this.model.name, onConflicts });
275
+ }
276
+ const doc = await this.findOne(condition, {}, opts);
277
+ if (!doc)
278
+ throw new mysql_exception_1.MysqlException('MYSQL_UPSERT_RELOAD_FAILED', { model: this.model.name, condition });
279
+ return doc;
280
+ }
281
+ resolveReloadCondition(body, generatedMap, onConflicts) {
282
+ const source = { ...body, ...(generatedMap || {}) };
283
+ const primaryKeys = this.repository.metadata.primaryColumns.map(column => column.propertyName);
284
+ const primaryCondition = this.pickDefined(source, primaryKeys);
285
+ if (primaryCondition)
286
+ return primaryCondition;
287
+ return this.pickDefined(source, onConflicts);
288
+ }
289
+ pickDefined(source, keys) {
290
+ const entries = keys.map(key => [key, source[key]]);
291
+ if (!entries.length || entries.some(([, value]) => (0, lodash_1.isNil)(value)))
292
+ return null;
293
+ return entries.reduce((acc, [key, value]) => {
294
+ acc[key] = value;
295
+ return acc;
296
+ }, {});
297
+ }
167
298
  };
168
299
  exports.MysqlRepo = MysqlRepo;
169
300
  __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.repo.js","sourceRoot":"","sources":["../src/mysql.repo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysql.repo.js","sourceRoot":"","sources":["../src/mysql.repo.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.service.d.ts","sourceRoot":"","sources":["../src/mysql.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAA6C,MAAM,cAAc,CAAC;AAE7G,OAAO,EAAgB,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAEL,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7C,qBACa,YAAa,SAAQ,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAE,YAAW,WAAW;IAEvE,OAAO,CAAC,aAAa;IAChB,OAAO,CAAC,kBAAkB;gBADvB,aAAa,EAAE,kBAAkB,EAC5B,kBAAkB,EAAE,uBAAuB;cAMtE,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAqBxD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAE,MAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBxE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAE,MAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAStE,aAAa,CAAC,KAAK,GAAE,MAAuB,GAAG,UAAU;IAIzD,gBAAgB,CAAC,KAAK,GAAE,MAAuB,GAAG,aAAa;IAI/D,aAAa,CAAC,CAAC,SAAS,UAAU,EACvC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAC3B,KAAK,GAAE,MAAuB,GAC7B,UAAU,CAAC,CAAC,CAAC;CAGjB"}
1
+ {"version":3,"file":"mysql.service.d.ts","sourceRoot":"","sources":["../src/mysql.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAA6C,MAAM,cAAc,CAAC;AAE7G,OAAO,EAAgB,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAEL,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAQ7C,qBACa,YAAa,SAAQ,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAE,YAAW,WAAW;IAEvE,OAAO,CAAC,aAAa;IAChB,OAAO,CAAC,kBAAkB;gBADvB,aAAa,EAAE,kBAAkB,EAC5B,kBAAkB,EAAE,uBAAuB;cAMtE,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAyBxD,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAE,MAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,GAAE,MAAuB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWtE,aAAa,CAAC,KAAK,GAAE,MAAuB,GAAG,UAAU;IAIzD,gBAAgB,CAAC,KAAK,GAAE,MAAuB,GAAG,aAAa;IAO/D,aAAa,CAAC,CAAC,SAAS,UAAU,EACvC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,EAC3B,KAAK,GAAE,MAAuB,GAC7B,UAAU,CAAC,CAAC,CAAC;CAGjB"}
@@ -27,6 +27,7 @@ let MysqlService = class MysqlService extends core_1.AbstractClientService {
27
27
  this.subscriberRegistry = subscriberRegistry;
28
28
  }
29
29
  async init(config) {
30
+ (0, services_1.assertFirstClassDialect)(config.dialect);
30
31
  const connection = (0, lodash_1.pick)(config, ['host', 'port', 'username', 'password', 'database']);
31
32
  const options = {
32
33
  ...config,
@@ -41,13 +42,14 @@ let MysqlService = class MysqlService extends core_1.AbstractClientService {
41
42
  options['replication'] = { master: { ...connection }, slaves: [...config.slaves] };
42
43
  }
43
44
  const AppDataSource = new typeorm_1.DataSource(options);
44
- this.logService.info('`%s` Connection to MySQL established on host %s', config.conId, config.host);
45
+ this.logService.info('`%s` MySQL datasource created on host %s', config.conId, config.host);
45
46
  return AppDataSource;
46
47
  }
47
48
  async start(client, conId = core_1.DEFAULT_CON_ID) {
48
49
  const config = this.getConfig(conId);
49
50
  try {
50
- await client.initialize();
51
+ if (!client.isInitialized)
52
+ await client.initialize();
51
53
  this.logService.info('`%s` Connected to MySQL successfully', conId);
52
54
  if (this.modelRegistry[conId]) {
53
55
  if (config.sync) {
@@ -58,15 +60,19 @@ let MysqlService = class MysqlService extends core_1.AbstractClientService {
58
60
  }
59
61
  catch (err) {
60
62
  this.logService.error(err, '`%s` Error when connecting to MySQL', conId);
63
+ throw err;
61
64
  }
62
65
  }
63
66
  async stop(client, conId = core_1.DEFAULT_CON_ID) {
64
67
  try {
68
+ if (!client.isInitialized)
69
+ return;
65
70
  await client.destroy();
66
71
  this.logService.warn('`%s` Close connection to MySQL successfully', conId);
67
72
  }
68
73
  catch (err) {
69
74
  this.logService.error(err, '`%s` Error when close connection to MySQL', conId);
75
+ throw err;
70
76
  }
71
77
  }
72
78
  getDataSource(conId = core_1.DEFAULT_CON_ID) {
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.service.js","sourceRoot":"","sources":["../src/mysql.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mysql.service.js","sourceRoot":"","sources":["../src/mysql.service.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export * from './mysql.benchmark';
2
+ export * from './mysql.dialect';
2
3
  export * from './mysql.strategy';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -15,5 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./mysql.benchmark"), exports);
18
+ __exportStar(require("./mysql.dialect"), exports);
18
19
  __exportStar(require("./mysql.strategy"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,kDAAgC;AAChC,mDAAiC"}
@@ -0,0 +1,14 @@
1
+ import { Dialect } from '../mysql.config';
2
+ export interface MysqlDialectCapabilities {
3
+ dialect: Dialect;
4
+ firstClass: boolean;
5
+ caseInsensitiveLike: 'LIKE' | 'ILIKE';
6
+ arrayOperators: boolean;
7
+ fullTextIndex: boolean;
8
+ generatedMapsReliable: boolean;
9
+ }
10
+ export declare const FIRST_CLASS_DIALECTS: Dialect[];
11
+ export declare function isFirstClassDialect(dialect: Dialect): boolean;
12
+ export declare function getMysqlDialectCapabilities(dialect?: Dialect): MysqlDialectCapabilities;
13
+ export declare function assertFirstClassDialect(dialect: Dialect): void;
14
+ //# sourceMappingURL=mysql.dialect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.dialect.d.ts","sourceRoot":"","sources":["../../src/services/mysql.dialect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1C,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC;IACtC,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAED,eAAO,MAAM,oBAAoB,EAAE,OAAO,EAAuD,CAAC;AAKlG,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAE7D;AAKD,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,OAAuB,GAAG,wBAAwB,CA+BtG;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAI9D"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FIRST_CLASS_DIALECTS = void 0;
4
+ exports.isFirstClassDialect = isFirstClassDialect;
5
+ exports.getMysqlDialectCapabilities = getMysqlDialectCapabilities;
6
+ exports.assertFirstClassDialect = assertFirstClassDialect;
7
+ const mysql_config_1 = require("../mysql.config");
8
+ const mysql_exception_1 = require("../mysql.exception");
9
+ exports.FIRST_CLASS_DIALECTS = [mysql_config_1.Dialect.MYSQL, mysql_config_1.Dialect.MARIADB, mysql_config_1.Dialect.POSTGRES];
10
+ function isFirstClassDialect(dialect) {
11
+ return exports.FIRST_CLASS_DIALECTS.includes(dialect);
12
+ }
13
+ function getMysqlDialectCapabilities(dialect = mysql_config_1.Dialect.MYSQL) {
14
+ switch (dialect) {
15
+ case mysql_config_1.Dialect.POSTGRES:
16
+ return {
17
+ dialect,
18
+ firstClass: true,
19
+ caseInsensitiveLike: 'ILIKE',
20
+ arrayOperators: true,
21
+ fullTextIndex: false,
22
+ generatedMapsReliable: true,
23
+ };
24
+ case mysql_config_1.Dialect.MARIADB:
25
+ case mysql_config_1.Dialect.MYSQL:
26
+ return {
27
+ dialect,
28
+ firstClass: true,
29
+ caseInsensitiveLike: 'LIKE',
30
+ arrayOperators: false,
31
+ fullTextIndex: true,
32
+ generatedMapsReliable: false,
33
+ };
34
+ default:
35
+ return {
36
+ dialect,
37
+ firstClass: false,
38
+ caseInsensitiveLike: 'LIKE',
39
+ arrayOperators: false,
40
+ fullTextIndex: false,
41
+ generatedMapsReliable: false,
42
+ };
43
+ }
44
+ }
45
+ function assertFirstClassDialect(dialect) {
46
+ if (!isFirstClassDialect(dialect)) {
47
+ throw new mysql_exception_1.MysqlException('MYSQL_UNSUPPORTED_DIALECT', { dialect, supported: exports.FIRST_CLASS_DIALECTS });
48
+ }
49
+ }
50
+ //# sourceMappingURL=mysql.dialect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.dialect.js","sourceRoot":"","sources":["../../src/services/mysql.dialect.ts"],"names":[],"mappings":";;;AAiBA,kDAEC;AAKD,kEA+BC;AAED,0DAIC;AA7DD,kDAA0C;AAC1C,wDAAoD;AAWvC,QAAA,oBAAoB,GAAc,CAAC,sBAAO,CAAC,KAAK,EAAE,sBAAO,CAAC,OAAO,EAAE,sBAAO,CAAC,QAAQ,CAAC,CAAC;AAKlG,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,OAAO,4BAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC;AAKD,SAAgB,2BAA2B,CAAC,UAAmB,sBAAO,CAAC,KAAK;IAC1E,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,sBAAO,CAAC,QAAQ;YACnB,OAAO;gBACL,OAAO;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,OAAO;gBAC5B,cAAc,EAAE,IAAI;gBACpB,aAAa,EAAE,KAAK;gBACpB,qBAAqB,EAAE,IAAI;aAC5B,CAAC;QACJ,KAAK,sBAAO,CAAC,OAAO,CAAC;QACrB,KAAK,sBAAO,CAAC,KAAK;YAChB,OAAO;gBACL,OAAO;gBACP,UAAU,EAAE,IAAI;gBAChB,mBAAmB,EAAE,MAAM;gBAC3B,cAAc,EAAE,KAAK;gBACrB,aAAa,EAAE,IAAI;gBACnB,qBAAqB,EAAE,KAAK;aAC7B,CAAC;QACJ;YACE,OAAO;gBACL,OAAO;gBACP,UAAU,EAAE,KAAK;gBACjB,mBAAmB,EAAE,MAAM;gBAC3B,cAAc,EAAE,KAAK;gBACrB,aAAa,EAAE,KAAK;gBACpB,qBAAqB,EAAE,KAAK;aAC7B,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAgB,uBAAuB,CAAC,OAAgB;IACtD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,gCAAc,CAAC,2BAA2B,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,4BAAoB,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC"}
@@ -4,7 +4,7 @@ export declare class MysqlNamingStrategy extends DefaultNamingStrategy implement
4
4
  columnName(propertyName: string, customName: string, embeddedPrefixes: string[]): string;
5
5
  relationName(propertyName: string): string;
6
6
  joinColumnName(relationName: string, referencedColumnName: string): string;
7
- joinTableName(firstTableName: string, secondTableName: string, firstPropertyName: string, secondPropertyName: string): string;
7
+ joinTableName(firstTableName: string, secondTableName: string, firstPropertyName: string, _secondPropertyName: string): string;
8
8
  joinTableColumnName(tableName: string, propertyName: string, columnName?: string): string;
9
9
  indexName(tableOrName: string, columnNames: string[]): string;
10
10
  uniqueConstraintName(tableOrName: string, columnNames: string[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.strategy.d.ts","sourceRoot":"","sources":["../../src/services/mysql.strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAGzE,qBAAa,mBAAoB,SAAQ,qBAAsB,YAAW,uBAAuB;IAC/F,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAIxD,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM;IAIxF,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAI1C,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM;IAI1E,aAAa,CACX,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EACzB,kBAAkB,EAAE,MAAM,GACzB,MAAM;IAIT,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAIzF,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAI7D,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAIxE,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,sBAAsB,CAAC,EAAE,MAAM,EAAE,GAChC,MAAM;IAUT,qCAAqC,CAAC,eAAe,EAAE,GAAG,EAAE,yBAAyB,EAAE,GAAG,GAAG,MAAM;IAInG,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;CAGpE"}
1
+ {"version":3,"file":"mysql.strategy.d.ts","sourceRoot":"","sources":["../../src/services/mysql.strategy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAGzE,qBAAa,mBAAoB,SAAQ,qBAAsB,YAAW,uBAAuB;IAC/F,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAIxD,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,MAAM;IAIxF,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAI1C,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,GAAG,MAAM;IAI1E,aAAa,CACX,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,iBAAiB,EAAE,MAAM,EACzB,mBAAmB,EAAE,MAAM,GAC1B,MAAM;IAIT,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAIzF,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAI7D,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM;IAIxE,cAAc,CACZ,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,oBAAoB,CAAC,EAAE,MAAM,EAC7B,sBAAsB,CAAC,EAAE,MAAM,EAAE,GAChC,MAAM;IAUT,qCAAqC,CAAC,eAAe,EAAE,GAAG,EAAE,yBAAyB,EAAE,GAAG,GAAG,MAAM;IAInG,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;CAGpE"}
@@ -17,7 +17,7 @@ class MysqlNamingStrategy extends typeorm_1.DefaultNamingStrategy {
17
17
  joinColumnName(relationName, referencedColumnName) {
18
18
  return (0, StringUtils_1.snakeCase)(relationName + '_' + referencedColumnName);
19
19
  }
20
- joinTableName(firstTableName, secondTableName, firstPropertyName, secondPropertyName) {
20
+ joinTableName(firstTableName, secondTableName, firstPropertyName, _secondPropertyName) {
21
21
  return (0, StringUtils_1.snakeCase)(firstTableName + '_' + firstPropertyName.replace(/\./gi, '_') + '_' + secondTableName);
22
22
  }
23
23
  joinTableColumnName(tableName, propertyName, columnName) {
@@ -1 +1 @@
1
- {"version":3,"file":"mysql.strategy.js","sourceRoot":"","sources":["../../src/services/mysql.strategy.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AACzC,qCAAyE;AACzE,0DAAqD;AAErD,MAAa,mBAAoB,SAAQ,+BAAqB;IAC5D,SAAS,CAAC,SAAiB,EAAE,UAAkB;QAC7C,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,uBAAS,EAAC,IAAA,gBAAQ,EAAC,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,UAAU,CAAC,YAAoB,EAAE,UAAkB,EAAE,gBAA0B;QAC7E,OAAO,IAAA,uBAAS,EAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,uBAAS,EAAC,YAAY,CAAC,CAAC,CAAC;IAChH,CAAC;IAED,YAAY,CAAC,YAAoB;QAC/B,OAAO,IAAA,uBAAS,EAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,YAAoB,EAAE,oBAA4B;QAC/D,OAAO,IAAA,uBAAS,EAAC,YAAY,GAAG,GAAG,GAAG,oBAAoB,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa,CACX,cAAsB,EACtB,eAAuB,EACvB,iBAAyB,EACzB,kBAA0B;QAE1B,OAAO,IAAA,uBAAS,EAAC,cAAc,GAAG,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC,CAAC;IAC1G,CAAC;IAED,mBAAmB,CAAC,SAAiB,EAAE,YAAoB,EAAE,UAAmB;QAC9E,OAAO,IAAA,uBAAS,EAAC,SAAS,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,SAAS,CAAC,WAAmB,EAAE,WAAqB;QAClD,OAAO,OAAO,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,oBAAoB,CAAC,WAAmB,EAAE,WAAqB;QAC7D,OAAO,OAAO,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,cAAc,CACZ,WAAmB,EACnB,WAAqB,EACrB,oBAA6B,EAC7B,sBAAiC;QAEjC,MAAM,kBAAkB,GAAG,MAAM,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxE,IAAI,oBAAoB,IAAI,sBAAsB,EAAE,CAAC;YACnD,MAAM,eAAe,GAAG,oBAAoB,CAAC;YAC7C,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3D,OAAO,GAAG,kBAAkB,OAAO,eAAe,IAAI,iBAAiB,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,qCAAqC,CAAC,eAAoB,EAAE,yBAA8B;QACxF,OAAO,IAAA,uBAAS,EAAC,eAAe,GAAG,GAAG,GAAG,yBAAyB,CAAC,CAAC;IACtE,CAAC;IAED,sBAAsB,CAAC,KAAa,EAAE,YAAoB;QACxD,OAAO,KAAK,GAAG,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;CACF;AA5DD,kDA4DC"}
1
+ {"version":3,"file":"mysql.strategy.js","sourceRoot":"","sources":["../../src/services/mysql.strategy.ts"],"names":[],"mappings":";;;AAAA,yCAAyC;AACzC,qCAAyE;AACzE,0DAAqD;AAErD,MAAa,mBAAoB,SAAQ,+BAAqB;IAC5D,SAAS,CAAC,SAAiB,EAAE,UAAkB;QAC7C,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,uBAAS,EAAC,IAAA,gBAAQ,EAAC,SAAS,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,UAAU,CAAC,YAAoB,EAAE,UAAkB,EAAE,gBAA0B;QAC7E,OAAO,IAAA,uBAAS,EAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAA,uBAAS,EAAC,YAAY,CAAC,CAAC,CAAC;IAChH,CAAC;IAED,YAAY,CAAC,YAAoB;QAC/B,OAAO,IAAA,uBAAS,EAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IAED,cAAc,CAAC,YAAoB,EAAE,oBAA4B;QAC/D,OAAO,IAAA,uBAAS,EAAC,YAAY,GAAG,GAAG,GAAG,oBAAoB,CAAC,CAAC;IAC9D,CAAC;IAED,aAAa,CACX,cAAsB,EACtB,eAAuB,EACvB,iBAAyB,EACzB,mBAA2B;QAE3B,OAAO,IAAA,uBAAS,EAAC,cAAc,GAAG,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,eAAe,CAAC,CAAC;IAC1G,CAAC;IAED,mBAAmB,CAAC,SAAiB,EAAE,YAAoB,EAAE,UAAmB;QAC9E,OAAO,IAAA,uBAAS,EAAC,SAAS,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,SAAS,CAAC,WAAmB,EAAE,WAAqB;QAClD,OAAO,OAAO,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,oBAAoB,CAAC,WAAmB,EAAE,WAAqB;QAC7D,OAAO,OAAO,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,cAAc,CACZ,WAAmB,EACnB,WAAqB,EACrB,oBAA6B,EAC7B,sBAAiC;QAEjC,MAAM,kBAAkB,GAAG,MAAM,WAAW,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACxE,IAAI,oBAAoB,IAAI,sBAAsB,EAAE,CAAC;YACnD,MAAM,eAAe,GAAG,oBAAoB,CAAC;YAC7C,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3D,OAAO,GAAG,kBAAkB,OAAO,eAAe,IAAI,iBAAiB,EAAE,CAAC;QAC5E,CAAC;QACD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,qCAAqC,CAAC,eAAoB,EAAE,yBAA8B;QACxF,OAAO,IAAA,uBAAS,EAAC,eAAe,GAAG,GAAG,GAAG,yBAAyB,CAAC,CAAC;IACtE,CAAC;IAED,sBAAsB,CAAC,KAAa,EAAE,YAAoB;QACxD,OAAO,KAAK,GAAG,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;CACF;AA5DD,kDA4DC"}