@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.
- package/LICENSE +201 -0
- package/dist/lib/cjs/clients/clients.js +18 -0
- package/dist/lib/cjs/clients/clients.js.map +1 -0
- package/dist/lib/cjs/clients/mysql.client.js +350 -0
- package/dist/lib/cjs/clients/mysql.client.js.map +1 -0
- package/dist/lib/cjs/decorators/column.decorator.js +19 -0
- package/dist/lib/cjs/decorators/column.decorator.js.map +1 -0
- package/dist/lib/cjs/decorators/decorators.js +19 -0
- package/dist/lib/cjs/decorators/decorators.js.map +1 -0
- package/dist/lib/cjs/decorators/table.decorator.js +12 -0
- package/dist/lib/cjs/decorators/table.decorator.js.map +1 -0
- package/dist/lib/cjs/enums/decorator-metadata-keyname.enum.js +9 -0
- package/dist/lib/cjs/enums/decorator-metadata-keyname.enum.js.map +1 -0
- package/dist/lib/cjs/enums/enums.js +18 -0
- package/dist/lib/cjs/enums/enums.js.map +1 -0
- package/dist/lib/cjs/interfaces/column-decorator-metadata.interface.js +3 -0
- package/dist/lib/cjs/interfaces/column-decorator-metadata.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js +19 -0
- package/dist/lib/cjs/interfaces/interfaces.js.map +1 -0
- package/dist/lib/cjs/interfaces/mysql-client.interface.js +3 -0
- package/dist/lib/cjs/interfaces/mysql-client.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/table-decorator-metadata.interface.js +3 -0
- package/dist/lib/cjs/interfaces/table-decorator-metadata.interface.js.map +1 -0
- package/dist/lib/cjs/mysql.module.js +86 -0
- package/dist/lib/cjs/mysql.module.js.map +1 -0
- package/dist/lib/cjs/mysql.module.keyname.js +5 -0
- package/dist/lib/cjs/mysql.module.keyname.js.map +1 -0
- package/dist/lib/cjs/strategies/camel-case-column.strategy.js +8 -0
- package/dist/lib/cjs/strategies/camel-case-column.strategy.js.map +1 -0
- package/dist/lib/cjs/strategies/snake-case-column.strategy.js +8 -0
- package/dist/lib/cjs/strategies/snake-case-column.strategy.js.map +1 -0
- package/dist/lib/cjs/strategies/strategies.js +19 -0
- package/dist/lib/cjs/strategies/strategies.js.map +1 -0
- package/dist/lib/cjs/types/column-naming-strategy.type.js +3 -0
- package/dist/lib/cjs/types/column-naming-strategy.type.js.map +1 -0
- package/dist/lib/cjs/types/types.js +18 -0
- package/dist/lib/cjs/types/types.js.map +1 -0
- package/dist/lib/esm/clients/clients.js +2 -0
- package/dist/lib/esm/clients/clients.js.map +1 -0
- package/dist/lib/esm/clients/mysql.client.js +347 -0
- package/dist/lib/esm/clients/mysql.client.js.map +1 -0
- package/dist/lib/esm/decorators/column.decorator.js +15 -0
- package/dist/lib/esm/decorators/column.decorator.js.map +1 -0
- package/dist/lib/esm/decorators/decorators.js +3 -0
- package/dist/lib/esm/decorators/decorators.js.map +1 -0
- package/dist/lib/esm/decorators/table.decorator.js +8 -0
- package/dist/lib/esm/decorators/table.decorator.js.map +1 -0
- package/dist/lib/esm/enums/decorator-metadata-keyname.enum.js +6 -0
- package/dist/lib/esm/enums/decorator-metadata-keyname.enum.js.map +1 -0
- package/dist/lib/esm/enums/enums.js +2 -0
- package/dist/lib/esm/enums/enums.js.map +1 -0
- package/dist/lib/esm/interfaces/column-decorator-metadata.interface.js +2 -0
- package/dist/lib/esm/interfaces/column-decorator-metadata.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/interfaces.js +3 -0
- package/dist/lib/esm/interfaces/interfaces.js.map +1 -0
- package/dist/lib/esm/interfaces/mysql-client.interface.js +2 -0
- package/dist/lib/esm/interfaces/mysql-client.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/table-decorator-metadata.interface.js +2 -0
- package/dist/lib/esm/interfaces/table-decorator-metadata.interface.js.map +1 -0
- package/dist/lib/esm/mysql.module.js +69 -0
- package/dist/lib/esm/mysql.module.js.map +1 -0
- package/dist/lib/esm/mysql.module.keyname.js +2 -0
- package/dist/lib/esm/mysql.module.keyname.js.map +1 -0
- package/dist/lib/esm/strategies/camel-case-column.strategy.js +4 -0
- package/dist/lib/esm/strategies/camel-case-column.strategy.js.map +1 -0
- package/dist/lib/esm/strategies/snake-case-column.strategy.js +4 -0
- package/dist/lib/esm/strategies/snake-case-column.strategy.js.map +1 -0
- package/dist/lib/esm/strategies/strategies.js +3 -0
- package/dist/lib/esm/strategies/strategies.js.map +1 -0
- package/dist/lib/esm/types/column-naming-strategy.type.js +2 -0
- package/dist/lib/esm/types/column-naming-strategy.type.js.map +1 -0
- package/dist/lib/esm/types/types.js +2 -0
- package/dist/lib/esm/types/types.js.map +1 -0
- package/dist/types/clients/clients.d.ts +1 -0
- package/dist/types/clients/mysql.client.d.ts +148 -0
- package/dist/types/decorators/column.decorator.d.ts +2 -0
- package/dist/types/decorators/decorators.d.ts +2 -0
- package/dist/types/decorators/table.decorator.d.ts +2 -0
- package/dist/types/enums/decorator-metadata-keyname.enum.d.ts +4 -0
- package/dist/types/enums/enums.d.ts +1 -0
- package/dist/types/interfaces/column-decorator-metadata.interface.d.ts +10 -0
- package/dist/types/interfaces/interfaces.d.ts +2 -0
- package/dist/types/interfaces/mysql-client.interface.d.ts +135 -0
- package/dist/types/interfaces/table-decorator-metadata.interface.d.ts +6 -0
- package/dist/types/mysql.module.d.ts +9 -0
- package/dist/types/mysql.module.keyname.d.ts +1 -0
- package/dist/types/strategies/camel-case-column.strategy.d.ts +2 -0
- package/dist/types/strategies/snake-case-column.strategy.d.ts +2 -0
- package/dist/types/strategies/strategies.d.ts +2 -0
- package/dist/types/types/column-naming-strategy.type.d.ts +1 -0
- package/dist/types/types/types.d.ts +1 -0
- package/package.json +69 -0
- 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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-client.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/mysql-client.interface.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|