@pristine-ts/mysql 0.0.336

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 (93) hide show
  1. package/LICENSE +201 -0
  2. package/dist/lib/cjs/clients/clients.js +18 -0
  3. package/dist/lib/cjs/clients/clients.js.map +1 -0
  4. package/dist/lib/cjs/clients/mysql.client.js +350 -0
  5. package/dist/lib/cjs/clients/mysql.client.js.map +1 -0
  6. package/dist/lib/cjs/decorators/column.decorator.js +19 -0
  7. package/dist/lib/cjs/decorators/column.decorator.js.map +1 -0
  8. package/dist/lib/cjs/decorators/decorators.js +19 -0
  9. package/dist/lib/cjs/decorators/decorators.js.map +1 -0
  10. package/dist/lib/cjs/decorators/table.decorator.js +12 -0
  11. package/dist/lib/cjs/decorators/table.decorator.js.map +1 -0
  12. package/dist/lib/cjs/enums/decorator-metadata-keyname.enum.js +9 -0
  13. package/dist/lib/cjs/enums/decorator-metadata-keyname.enum.js.map +1 -0
  14. package/dist/lib/cjs/enums/enums.js +18 -0
  15. package/dist/lib/cjs/enums/enums.js.map +1 -0
  16. package/dist/lib/cjs/interfaces/column-decorator-metadata.interface.js +3 -0
  17. package/dist/lib/cjs/interfaces/column-decorator-metadata.interface.js.map +1 -0
  18. package/dist/lib/cjs/interfaces/interfaces.js +19 -0
  19. package/dist/lib/cjs/interfaces/interfaces.js.map +1 -0
  20. package/dist/lib/cjs/interfaces/mysql-client.interface.js +3 -0
  21. package/dist/lib/cjs/interfaces/mysql-client.interface.js.map +1 -0
  22. package/dist/lib/cjs/interfaces/table-decorator-metadata.interface.js +3 -0
  23. package/dist/lib/cjs/interfaces/table-decorator-metadata.interface.js.map +1 -0
  24. package/dist/lib/cjs/mysql.module.js +86 -0
  25. package/dist/lib/cjs/mysql.module.js.map +1 -0
  26. package/dist/lib/cjs/mysql.module.keyname.js +5 -0
  27. package/dist/lib/cjs/mysql.module.keyname.js.map +1 -0
  28. package/dist/lib/cjs/strategies/camel-case-column.strategy.js +8 -0
  29. package/dist/lib/cjs/strategies/camel-case-column.strategy.js.map +1 -0
  30. package/dist/lib/cjs/strategies/snake-case-column.strategy.js +8 -0
  31. package/dist/lib/cjs/strategies/snake-case-column.strategy.js.map +1 -0
  32. package/dist/lib/cjs/strategies/strategies.js +19 -0
  33. package/dist/lib/cjs/strategies/strategies.js.map +1 -0
  34. package/dist/lib/cjs/types/column-naming-strategy.type.js +3 -0
  35. package/dist/lib/cjs/types/column-naming-strategy.type.js.map +1 -0
  36. package/dist/lib/cjs/types/types.js +18 -0
  37. package/dist/lib/cjs/types/types.js.map +1 -0
  38. package/dist/lib/esm/clients/clients.js +2 -0
  39. package/dist/lib/esm/clients/clients.js.map +1 -0
  40. package/dist/lib/esm/clients/mysql.client.js +347 -0
  41. package/dist/lib/esm/clients/mysql.client.js.map +1 -0
  42. package/dist/lib/esm/decorators/column.decorator.js +15 -0
  43. package/dist/lib/esm/decorators/column.decorator.js.map +1 -0
  44. package/dist/lib/esm/decorators/decorators.js +3 -0
  45. package/dist/lib/esm/decorators/decorators.js.map +1 -0
  46. package/dist/lib/esm/decorators/table.decorator.js +8 -0
  47. package/dist/lib/esm/decorators/table.decorator.js.map +1 -0
  48. package/dist/lib/esm/enums/decorator-metadata-keyname.enum.js +6 -0
  49. package/dist/lib/esm/enums/decorator-metadata-keyname.enum.js.map +1 -0
  50. package/dist/lib/esm/enums/enums.js +2 -0
  51. package/dist/lib/esm/enums/enums.js.map +1 -0
  52. package/dist/lib/esm/interfaces/column-decorator-metadata.interface.js +2 -0
  53. package/dist/lib/esm/interfaces/column-decorator-metadata.interface.js.map +1 -0
  54. package/dist/lib/esm/interfaces/interfaces.js +3 -0
  55. package/dist/lib/esm/interfaces/interfaces.js.map +1 -0
  56. package/dist/lib/esm/interfaces/mysql-client.interface.js +2 -0
  57. package/dist/lib/esm/interfaces/mysql-client.interface.js.map +1 -0
  58. package/dist/lib/esm/interfaces/table-decorator-metadata.interface.js +2 -0
  59. package/dist/lib/esm/interfaces/table-decorator-metadata.interface.js.map +1 -0
  60. package/dist/lib/esm/mysql.module.js +69 -0
  61. package/dist/lib/esm/mysql.module.js.map +1 -0
  62. package/dist/lib/esm/mysql.module.keyname.js +2 -0
  63. package/dist/lib/esm/mysql.module.keyname.js.map +1 -0
  64. package/dist/lib/esm/strategies/camel-case-column.strategy.js +4 -0
  65. package/dist/lib/esm/strategies/camel-case-column.strategy.js.map +1 -0
  66. package/dist/lib/esm/strategies/snake-case-column.strategy.js +4 -0
  67. package/dist/lib/esm/strategies/snake-case-column.strategy.js.map +1 -0
  68. package/dist/lib/esm/strategies/strategies.js +3 -0
  69. package/dist/lib/esm/strategies/strategies.js.map +1 -0
  70. package/dist/lib/esm/types/column-naming-strategy.type.js +2 -0
  71. package/dist/lib/esm/types/column-naming-strategy.type.js.map +1 -0
  72. package/dist/lib/esm/types/types.js +2 -0
  73. package/dist/lib/esm/types/types.js.map +1 -0
  74. package/dist/types/clients/clients.d.ts +1 -0
  75. package/dist/types/clients/mysql.client.d.ts +148 -0
  76. package/dist/types/decorators/column.decorator.d.ts +2 -0
  77. package/dist/types/decorators/decorators.d.ts +2 -0
  78. package/dist/types/decorators/table.decorator.d.ts +2 -0
  79. package/dist/types/enums/decorator-metadata-keyname.enum.d.ts +4 -0
  80. package/dist/types/enums/enums.d.ts +1 -0
  81. package/dist/types/interfaces/column-decorator-metadata.interface.d.ts +10 -0
  82. package/dist/types/interfaces/interfaces.d.ts +2 -0
  83. package/dist/types/interfaces/mysql-client.interface.d.ts +135 -0
  84. package/dist/types/interfaces/table-decorator-metadata.interface.d.ts +6 -0
  85. package/dist/types/mysql.module.d.ts +9 -0
  86. package/dist/types/mysql.module.keyname.d.ts +1 -0
  87. package/dist/types/strategies/camel-case-column.strategy.d.ts +2 -0
  88. package/dist/types/strategies/snake-case-column.strategy.d.ts +2 -0
  89. package/dist/types/strategies/strategies.d.ts +2 -0
  90. package/dist/types/types/column-naming-strategy.type.d.ts +1 -0
  91. package/dist/types/types/types.d.ts +1 -0
  92. package/package.json +69 -0
  93. package/readme.md +1 -0
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DecoratorMetadataKeynameEnum = void 0;
4
+ var DecoratorMetadataKeynameEnum;
5
+ (function (DecoratorMetadataKeynameEnum) {
6
+ DecoratorMetadataKeynameEnum["Column"] = "mysql:column";
7
+ DecoratorMetadataKeynameEnum["Table"] = "mysql:table";
8
+ })(DecoratorMetadataKeynameEnum || (exports.DecoratorMetadataKeynameEnum = DecoratorMetadataKeynameEnum = {}));
9
+ //# sourceMappingURL=decorator-metadata-keyname.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorator-metadata-keyname.enum.js","sourceRoot":"","sources":["../../../../src/enums/decorator-metadata-keyname.enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,4BAGX;AAHD,WAAY,4BAA4B;IACpC,uDAAuB,CAAA;IACvB,qDAAqB,CAAA;AACzB,CAAC,EAHW,4BAA4B,4CAA5B,4BAA4B,QAGvC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./decorator-metadata-keyname.enum"), exports);
18
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../src/enums/enums.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAkD"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=column-decorator-metadata.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-decorator-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/column-decorator-metadata.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./column-decorator-metadata.interface"), exports);
18
+ __exportStar(require("./mysql-client.interface"), exports);
19
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/interfaces/interfaces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wEAAsD;AACtD,2DAAyC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mysql-client.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-client.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/mysql-client.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=table-decorator-metadata.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-decorator-metadata.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/table-decorator-metadata.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.MysqlModule = void 0;
18
+ const common_1 = require("@pristine-ts/common");
19
+ const configuration_1 = require("@pristine-ts/configuration");
20
+ const mysql_module_keyname_1 = require("./mysql.module.keyname");
21
+ __exportStar(require("./clients/clients"), exports);
22
+ __exportStar(require("./decorators/decorators"), exports);
23
+ __exportStar(require("./enums/enums"), exports);
24
+ __exportStar(require("./interfaces/interfaces"), exports);
25
+ __exportStar(require("./strategies/strategies"), exports);
26
+ __exportStar(require("./types/types"), exports);
27
+ __exportStar(require("./mysql.module.keyname"), exports);
28
+ exports.MysqlModule = {
29
+ keyname: mysql_module_keyname_1.MysqlModuleKeyname,
30
+ importModules: [
31
+ common_1.CommonModule,
32
+ configuration_1.ConfigurationModule,
33
+ ],
34
+ configurationDefinitions: [
35
+ /**
36
+ * Whether the mysql client will be in debug or not.
37
+ */
38
+ {
39
+ parameterName: mysql_module_keyname_1.MysqlModuleKeyname + ".debug",
40
+ defaultValue: false,
41
+ isRequired: false,
42
+ defaultResolvers: [
43
+ new configuration_1.BooleanResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_MYSQL_DEBUG")),
44
+ ]
45
+ },
46
+ {
47
+ parameterName: mysql_module_keyname_1.MysqlModuleKeyname + ".address",
48
+ isRequired: true,
49
+ defaultResolvers: [
50
+ new configuration_1.EnvironmentVariableResolver("PRISTINE_MYSQL_ADDRESS"),
51
+ ]
52
+ },
53
+ {
54
+ parameterName: mysql_module_keyname_1.MysqlModuleKeyname + ".port",
55
+ isRequired: false,
56
+ defaultValue: 3306,
57
+ defaultResolvers: [
58
+ new configuration_1.NumberResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_MYSQL_PORT")),
59
+ ]
60
+ },
61
+ {
62
+ parameterName: mysql_module_keyname_1.MysqlModuleKeyname + ".user",
63
+ isRequired: true,
64
+ defaultResolvers: [
65
+ new configuration_1.EnvironmentVariableResolver("PRISTINE_MYSQL_USER"),
66
+ ]
67
+ },
68
+ {
69
+ parameterName: mysql_module_keyname_1.MysqlModuleKeyname + ".password",
70
+ isRequired: true,
71
+ defaultResolvers: [
72
+ new configuration_1.EnvironmentVariableResolver("PRISTINE_MYSQL_PASSWORD"),
73
+ ]
74
+ },
75
+ {
76
+ parameterName: mysql_module_keyname_1.MysqlModuleKeyname + ".connection_limit",
77
+ isRequired: false,
78
+ defaultValue: 10,
79
+ defaultResolvers: [
80
+ new configuration_1.NumberResolver(new configuration_1.EnvironmentVariableResolver("PRISTINE_MYSQL_CONNECTION_LIMIT")),
81
+ ]
82
+ },
83
+ ],
84
+ providerRegistrations: []
85
+ };
86
+ //# sourceMappingURL=mysql.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.module.js","sourceRoot":"","sources":["../../../src/mysql.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,gDAAkE;AAClE,8DAKoC;AACpC,iEAA0D;AAG1D,oDAAkC;AAClC,0DAAwC;AACxC,gDAA8B;AAC9B,0DAAwC;AACxC,0DAAwC;AACxC,gDAA8B;AAE9B,yDAAuC;AAE1B,QAAA,WAAW,GAAoB;IACxC,OAAO,EAAE,yCAAkB;IAC3B,aAAa,EAAE;QACX,qBAAY;QACZ,mCAAmB;KACtB;IACD,wBAAwB,EAAE;QACtB;;WAEG;QACH;YACI,aAAa,EAAE,yCAAkB,GAAG,QAAQ;YAC5C,YAAY,EAAE,KAAK;YACnB,UAAU,EAAE,KAAK;YACjB,gBAAgB,EAAE;gBACd,IAAI,+BAAe,CAAC,IAAI,2CAA2B,CAAC,sBAAsB,CAAC,CAAC;aAC/E;SACJ;QACD;YACI,aAAa,EAAE,yCAAkB,GAAG,UAAU;YAC9C,UAAU,EAAE,IAAI;YAChB,gBAAgB,EAAE;gBACd,IAAI,2CAA2B,CAAC,wBAAwB,CAAC;aAC5D;SACJ;QACD;YACI,aAAa,EAAE,yCAAkB,GAAG,OAAO;YAC3C,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,gBAAgB,EAAE;gBACd,IAAI,8BAAc,CAAC,IAAI,2CAA2B,CAAC,qBAAqB,CAAC,CAAC;aAC7E;SACJ;QACD;YACI,aAAa,EAAE,yCAAkB,GAAG,OAAO;YAC3C,UAAU,EAAE,IAAI;YAChB,gBAAgB,EAAE;gBACd,IAAI,2CAA2B,CAAC,qBAAqB,CAAC;aACzD;SACJ;QACD;YACI,aAAa,EAAE,yCAAkB,GAAG,WAAW;YAC/C,UAAU,EAAE,IAAI;YAChB,gBAAgB,EAAE;gBACd,IAAI,2CAA2B,CAAC,yBAAyB,CAAC;aAC7D;SACJ;QACD;YACI,aAAa,EAAE,yCAAkB,GAAG,mBAAmB;YACvD,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,EAAE;YAChB,gBAAgB,EAAE;gBACd,IAAI,8BAAc,CAAC,IAAI,2CAA2B,CAAC,iCAAiC,CAAC,CAAC;aACzF;SACJ;KAEJ;IACD,qBAAqB,EAAE,EACtB;CACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MysqlModuleKeyname = void 0;
4
+ exports.MysqlModuleKeyname = "pristine.mysql";
5
+ //# sourceMappingURL=mysql.module.keyname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql.module.keyname.js","sourceRoot":"","sources":["../../../src/mysql.module.keyname.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAW,gBAAgB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.camelCaseColumnStrategy = void 0;
4
+ const camelCaseColumnStrategy = (column) => {
5
+ return column.replace(/_([a-z])/g, (g) => g[1].toUpperCase());
6
+ };
7
+ exports.camelCaseColumnStrategy = camelCaseColumnStrategy;
8
+ //# sourceMappingURL=camel-case-column.strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"camel-case-column.strategy.js","sourceRoot":"","sources":["../../../../src/strategies/camel-case-column.strategy.ts"],"names":[],"mappings":";;;AAEO,MAAM,uBAAuB,GAA6B,CAAC,MAAc,EAAE,EAAE;IAClF,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAChE,CAAC,CAAA;AAFY,QAAA,uBAAuB,2BAEnC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.snakeCaseColumnStrategy = void 0;
4
+ const snakeCaseColumnStrategy = (column) => {
5
+ return column.replace(/([A-Z])/g, "_$1").toLowerCase();
6
+ };
7
+ exports.snakeCaseColumnStrategy = snakeCaseColumnStrategy;
8
+ //# sourceMappingURL=snake-case-column.strategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snake-case-column.strategy.js","sourceRoot":"","sources":["../../../../src/strategies/snake-case-column.strategy.ts"],"names":[],"mappings":";;;AAEO,MAAM,uBAAuB,GAA6B,CAAC,MAAc,EAAE,EAAE;IAClF,OAAO,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC,CAAA;AAFY,QAAA,uBAAuB,2BAEnC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./camel-case-column.strategy"), exports);
18
+ __exportStar(require("./snake-case-column.strategy"), exports);
19
+ //# sourceMappingURL=strategies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strategies.js","sourceRoot":"","sources":["../../../../src/strategies/strategies.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,+DAA6C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=column-naming-strategy.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column-naming-strategy.type.js","sourceRoot":"","sources":["../../../../src/types/column-naming-strategy.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./column-naming-strategy.type"), exports);
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C"}
@@ -0,0 +1,2 @@
1
+ export * from "./mysql.client";
2
+ //# sourceMappingURL=clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clients.js","sourceRoot":"","sources":["../../../../src/clients/clients.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,347 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ 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;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ import { inject, injectable, singleton } from "tsyringe";
23
+ import { ClassMetadata, PropertyMetadata } from "@pristine-ts/metadata";
24
+ import { DecoratorMetadataKeynameEnum } from "../enums/decorator-metadata-keyname.enum";
25
+ import { MysqlModuleKeyname } from "../mysql.module.keyname";
26
+ import { createPool } from "mysql2/promise";
27
+ import { DataMapper } from "@pristine-ts/data-mapping-common";
28
+ import { SearchResult } from "@pristine-ts/mysql-common";
29
+ import { tag } from "@pristine-ts/common";
30
+ let MysqlClient = class MysqlClient {
31
+ constructor(address, port, user, password, connectionLimit, debug, logHandler, dataMapper) {
32
+ this.address = address;
33
+ this.port = port;
34
+ this.user = user;
35
+ this.password = password;
36
+ this.connectionLimit = connectionLimit;
37
+ this.debug = debug;
38
+ this.logHandler = logHandler;
39
+ this.dataMapper = dataMapper;
40
+ this.pools = new Map();
41
+ }
42
+ /**
43
+ * This method returns a pool of connections to the database.
44
+ * @param databaseName
45
+ * @param force
46
+ */
47
+ getPool(databaseName, force = false) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ if (!this.pools.has(databaseName) && !force) {
50
+ try {
51
+ const pool = createPool({
52
+ connectionLimit: this.connectionLimit,
53
+ host: this.address,
54
+ port: this.port,
55
+ user: this.user,
56
+ password: this.password,
57
+ database: databaseName,
58
+ debug: this.debug,
59
+ });
60
+ this.pools.set(databaseName, pool);
61
+ this.logHandler.debug('MySql Adapter Pool generated successfully', {
62
+ connectionLimit: this.connectionLimit,
63
+ host: this.address,
64
+ user: this.user,
65
+ password: this.password,
66
+ database: databaseName,
67
+ pool,
68
+ });
69
+ }
70
+ catch (error) {
71
+ this.logHandler.error("Could not create the connection pool", { error });
72
+ throw error;
73
+ }
74
+ }
75
+ return this.pools.get(databaseName);
76
+ });
77
+ }
78
+ /**
79
+ * This method returns the table metadata for a given class.
80
+ * @param classType
81
+ */
82
+ getTableMetadata(classType) {
83
+ const tableMetadata = ClassMetadata.getMetadata(classType, DecoratorMetadataKeynameEnum.Table);
84
+ if (!tableMetadata) {
85
+ throw new Error(`The class ${classType.name} does not have the @table decorator.`);
86
+ }
87
+ return tableMetadata;
88
+ }
89
+ /**
90
+ * This method returns the columns metadata for a given class.
91
+ * @param classType
92
+ */
93
+ getColumnsMetadata(classType) {
94
+ const properties = ClassMetadata.getInformation(classType).properties;
95
+ const columnsMetadata = {};
96
+ for (const property of properties) {
97
+ const columnMetadata = this.getColumnMetadata(classType, property);
98
+ if (columnMetadata) {
99
+ columnsMetadata[property] = columnMetadata;
100
+ }
101
+ }
102
+ return columnsMetadata;
103
+ }
104
+ /**
105
+ * This method returns the column metadata for a given class and property name.
106
+ * @param classType
107
+ * @param propertyName
108
+ */
109
+ getColumnMetadata(classType, propertyName) {
110
+ const metadata = PropertyMetadata.getMetadata(classType.prototype, propertyName, DecoratorMetadataKeynameEnum.Column);
111
+ if (!metadata) {
112
+ throw new Error(`The property ${propertyName} does not have the @column decorator.`);
113
+ }
114
+ return metadata;
115
+ }
116
+ /**
117
+ * This method returns the primary key property name for a given class.
118
+ * @param classType
119
+ */
120
+ getPrimaryKeyPropertyName(classType) {
121
+ const columns = this.getColumnsMetadata(classType);
122
+ let primaryKeyColumn = null;
123
+ for (const column in columns) {
124
+ if (columns[column].isPrimaryKey) {
125
+ if (primaryKeyColumn) {
126
+ throw new Error(`The class ${classType.name} has more than one primary key.`);
127
+ }
128
+ primaryKeyColumn = column;
129
+ }
130
+ }
131
+ if (!primaryKeyColumn) {
132
+ throw new Error(`The class ${classType.name} does not have a primary key.`);
133
+ }
134
+ return primaryKeyColumn;
135
+ }
136
+ /**
137
+ * This method returns the primary key column name for a given class.
138
+ * @param classType
139
+ */
140
+ getPrimaryKeyColumnName(classType) {
141
+ return this.getColumnName(classType, this.getPrimaryKeyPropertyName(classType));
142
+ }
143
+ /**
144
+ * This method returns the column name for a given class and property name.
145
+ *
146
+ * @param classType
147
+ * @param propertyName
148
+ */
149
+ getColumnName(classType, propertyName) {
150
+ const columns = this.getColumnsMetadata(classType);
151
+ const column = this.getColumnMetadata(classType, propertyName);
152
+ if (column.name) {
153
+ return column.name;
154
+ }
155
+ const tableMetadata = this.getTableMetadata(classType);
156
+ if (tableMetadata.autoColumnNamingStrategy) {
157
+ return tableMetadata.autoColumnNamingStrategy(propertyName);
158
+ }
159
+ return propertyName;
160
+ }
161
+ /**
162
+ * This method returns the column name for a given class and property name.
163
+ * @param databaseName
164
+ * @param sqlStatement
165
+ * @param values
166
+ */
167
+ executeSql(databaseName, sqlStatement, values) {
168
+ return __awaiter(this, void 0, void 0, function* () {
169
+ const pool = yield this.getPool(databaseName);
170
+ this.logHandler.debug("Executing SQL Statement", { sqlStatement, values });
171
+ try {
172
+ const result = yield pool.query(sqlStatement, values);
173
+ this.logHandler.debug("Successfully executed the SQL Statement", { sqlStatement, values, result });
174
+ return result;
175
+ }
176
+ catch (error) {
177
+ this.logHandler.error("There was an error executing the SQL Statement", {
178
+ sqlStatement,
179
+ values,
180
+ error,
181
+ });
182
+ throw error;
183
+ }
184
+ });
185
+ }
186
+ /**
187
+ * This method maps the results to a given class type.
188
+ * @param classType
189
+ * @param results
190
+ */
191
+ mapResults(classType, results) {
192
+ return __awaiter(this, void 0, void 0, function* () {
193
+ // Transform back the column names from the strategy
194
+ const tableMetadata = this.getTableMetadata(classType);
195
+ if (tableMetadata.autoColumnNamingStrategyReverse) {
196
+ results = results.map((result) => {
197
+ for (const key in result) {
198
+ const newKey = tableMetadata.autoColumnNamingStrategyReverse(key);
199
+ result[newKey] = result[key];
200
+ delete result[key];
201
+ }
202
+ return result;
203
+ });
204
+ }
205
+ return this.dataMapper.autoMap(results, classType);
206
+ });
207
+ }
208
+ /**
209
+ * This method returns a single element from the database.
210
+ * @param databaseName
211
+ * @param classType
212
+ * @param primaryKey
213
+ */
214
+ get(databaseName, classType, primaryKey) {
215
+ return __awaiter(this, void 0, void 0, function* () {
216
+ const sql = `SELECT * FROM ${this.getTableMetadata(classType).tableName} WHERE ${this.getPrimaryKeyColumnName(classType)} = ?`;
217
+ const values = yield this.executeSql(databaseName, sql, [primaryKey]);
218
+ return (yield this.mapResults(classType, values))[0];
219
+ });
220
+ }
221
+ /**
222
+ * This method creates a new element in the database.
223
+ * @param databaseName
224
+ * @param element
225
+ */
226
+ create(databaseName, element) {
227
+ return __awaiter(this, void 0, void 0, function* () {
228
+ const columns = this.getColumnsMetadata(element.constructor);
229
+ const columnNames = Object.keys(columns).map(column => this.getColumnName(element.constructor, column));
230
+ const columnValues = Object.keys(columns).map(column => element[column]);
231
+ // Generate update SQL statement:
232
+ const sql = `INSERT INTO ${this.getTableMetadata(element.constructor).tableName} (${columnNames.join(", ")}) VALUES (${columnValues.map(() => "?").join(", ")})`;
233
+ yield this.executeSql(databaseName, sql, columnValues);
234
+ });
235
+ }
236
+ /**
237
+ * This method updates an element in the database.
238
+ * @param databaseName
239
+ * @param element
240
+ */
241
+ update(databaseName, element) {
242
+ return __awaiter(this, void 0, void 0, function* () {
243
+ const columns = this.getColumnsMetadata(element.constructor);
244
+ const primaryKeyColumnName = this.getPrimaryKeyColumnName(element.constructor);
245
+ const primaryKeyPropertyName = this.getPrimaryKeyPropertyName(element.constructor);
246
+ const primaryKeyValue = element[primaryKeyPropertyName];
247
+ const propertyNames = Object.keys(columns).filter(column => column !== primaryKeyPropertyName);
248
+ const columnNames = propertyNames.map(column => this.getColumnName(element.constructor, column));
249
+ const columnValues = propertyNames.map(column => element[column]);
250
+ // Add it since it will be the last element that will tell us which row to update.
251
+ columnValues.push(primaryKeyValue);
252
+ const sql = `UPDATE ${this.getTableMetadata(element.constructor).tableName} SET ${columnNames.join(" = ?, ")} = ? WHERE ${primaryKeyColumnName} = ?`;
253
+ yield this.executeSql(databaseName, sql, columnValues);
254
+ });
255
+ }
256
+ /**
257
+ * This method deletes an element in the database.
258
+ * @param databaseName
259
+ * @param classType
260
+ * @param primaryKey
261
+ */
262
+ delete(databaseName, classType, primaryKey) {
263
+ return __awaiter(this, void 0, void 0, function* () {
264
+ const sql = `DELETE FROM ${this.getTableMetadata(classType).tableName} WHERE ${this.getPrimaryKeyColumnName(classType)} = ?`;
265
+ yield this.executeSql(databaseName, sql, [primaryKey]);
266
+ });
267
+ }
268
+ /**
269
+ * This method searches the database.
270
+ * @param databaseName
271
+ * @param classType
272
+ * @param query
273
+ */
274
+ search(databaseName, classType, query) {
275
+ return __awaiter(this, void 0, void 0, function* () {
276
+ let sql = "";
277
+ const columns = this.getColumnsMetadata(classType);
278
+ const defaultSearchableFields = Object.keys(columns).filter(column => columns[column].isSearchable).map(column => this.getColumnName(classType, column));
279
+ const tableName = this.getTableMetadata(classType).tableName;
280
+ const sqlValues = [];
281
+ // Look in the query.fields and look for all the fields that should not be excluded, or that are included explicitly. If there are no fields that match, include `title` and `calculationKeyname` as default fields.
282
+ if (query.query) {
283
+ let fieldsToSearch = query.fields.filter(field => field.includeExplicitly === true).map(field => field.field);
284
+ if (fieldsToSearch.length === 0) {
285
+ fieldsToSearch = defaultSearchableFields;
286
+ }
287
+ // Exclude all the fields that are marked as excluded
288
+ fieldsToSearch = fieldsToSearch.filter(fieldName => {
289
+ const field = query.fields.find(field => field.field === fieldName && field.exclude);
290
+ if (field === undefined) {
291
+ return true;
292
+ }
293
+ // Exclude the excluded field.
294
+ return false;
295
+ });
296
+ // Converts each element in fieldsToSearch from camelCase to snakeCase
297
+ fieldsToSearch = fieldsToSearch.map(field => field.replace(/([A-Z])/g, "_$1").toLowerCase());
298
+ // For each fieldsToSearch, add a LIKE clause to the SQL
299
+ sql += " AND " + fieldsToSearch.map(field => field + " LIKE ?").join(" OR ");
300
+ fieldsToSearch.forEach(field => sqlValues.push("%" + query.query + "%"));
301
+ }
302
+ //
303
+ // ORDERING
304
+ //
305
+ const orderBy = [];
306
+ query.fields.forEach(field => {
307
+ if (field.order) {
308
+ // Convert the field from camelCase to snakeCase
309
+ const snakeCaseField = field.field.replace(/([A-Z])/g, "_$1").toLowerCase();
310
+ orderBy.push(snakeCaseField + " " + field.order.toUpperCase());
311
+ }
312
+ });
313
+ if (orderBy.length > 0) {
314
+ sql += " ORDER BY " + orderBy.join(", ");
315
+ }
316
+ const totalNumberOfResults = (yield this.executeSql(databaseName, "SELECT COUNT(*) as total_number_of_results FROM `" + tableName + "` WHERE 1=1 " + sql, sqlValues))[0]["total_number_of_results"];
317
+ //
318
+ // PAGING
319
+ //
320
+ // If there's a page, add the limit and offset
321
+ sql += " LIMIT " + query.maximumNumberOfResultsPerPage + " OFFSET " + (query.page - 1) * query.maximumNumberOfResultsPerPage;
322
+ const response = yield this.executeSql(databaseName, "SELECT * FROM `" + tableName + "` WHERE 1=1 " + sql, sqlValues);
323
+ const searchResult = new SearchResult();
324
+ searchResult.page = query.page;
325
+ searchResult.totalNumberOfResults = totalNumberOfResults;
326
+ searchResult.results = yield this.mapResults(classType, response);
327
+ searchResult.maximumNumberOfResultsPerPage = query.maximumNumberOfResultsPerPage;
328
+ searchResult.numberOfResultsReturned = response.length;
329
+ return searchResult;
330
+ });
331
+ }
332
+ };
333
+ MysqlClient = __decorate([
334
+ tag("MysqlClientInterface"),
335
+ injectable(),
336
+ singleton(),
337
+ __param(0, inject(`%${MysqlModuleKeyname}.address%`)),
338
+ __param(1, inject(`%${MysqlModuleKeyname}.port%`)),
339
+ __param(2, inject(`%${MysqlModuleKeyname}.user%`)),
340
+ __param(3, inject(`%${MysqlModuleKeyname}.password%`)),
341
+ __param(4, inject(`%${MysqlModuleKeyname}.connection_limit%`)),
342
+ __param(5, inject(`%${MysqlModuleKeyname}.debug%`)),
343
+ __param(6, inject('LogHandlerInterface')),
344
+ __metadata("design:paramtypes", [String, Number, String, String, Number, Boolean, Object, DataMapper])
345
+ ], MysqlClient);
346
+ export { MysqlClient };
347
+ //# sourceMappingURL=mysql.client.js.map