@rdyl/node-mysql 0.1.6 → 0.1.7
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/CHANGELOG.md +1 -1
- package/dist/meta.js +14 -0
- package/dist/utils.js +105 -12
- package/package.json +1 -1
- package/types/meta.d.ts +4 -3
- package/types/utils.d.ts +1 -0
package/CHANGELOG.md
CHANGED
package/dist/meta.js
CHANGED
|
@@ -37,6 +37,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.MysqlDbSchema = void 0;
|
|
40
|
+
exports.MysqlRegister = MysqlRegister;
|
|
40
41
|
var helper_1 = require("./helper");
|
|
41
42
|
var utils_1 = require("./utils");
|
|
42
43
|
/**
|
|
@@ -198,3 +199,16 @@ var MysqlDbSchema = /** @class */ (function () {
|
|
|
198
199
|
return MysqlDbSchema;
|
|
199
200
|
}());
|
|
200
201
|
exports.MysqlDbSchema = MysqlDbSchema;
|
|
202
|
+
function MysqlRegister() {
|
|
203
|
+
return function (Model) {
|
|
204
|
+
var target = new Model();
|
|
205
|
+
var json = Object.keys(target).reduce(function (item, key) {
|
|
206
|
+
if (!key.startsWith("$") &&
|
|
207
|
+
Object.prototype.hasOwnProperty.call(target, key)) {
|
|
208
|
+
item[key] = target[key];
|
|
209
|
+
}
|
|
210
|
+
return item;
|
|
211
|
+
}, {});
|
|
212
|
+
utils_1.Parser.dynamicConnectTable(target.$database, target.$table, json);
|
|
213
|
+
};
|
|
214
|
+
}
|
package/dist/utils.js
CHANGED
|
@@ -1,11 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
2
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
39
|
exports.Parser = void 0;
|
|
4
40
|
exports.Parser = {
|
|
5
41
|
easyDate: function (date, format) {
|
|
6
42
|
if (date === void 0) { date = new Date(); }
|
|
7
|
-
if (format === void 0) { format =
|
|
8
|
-
var pad = function (num) { return num.toString().padStart(2,
|
|
43
|
+
if (format === void 0) { format = "YYYY-MM-DD HH:mm:ss"; }
|
|
44
|
+
var pad = function (num) { return num.toString().padStart(2, "0"); };
|
|
9
45
|
var year = date.getFullYear();
|
|
10
46
|
var month = pad(date.getMonth() + 1);
|
|
11
47
|
var day = pad(date.getDate());
|
|
@@ -13,12 +49,12 @@ exports.Parser = {
|
|
|
13
49
|
var minutes = pad(date.getMinutes());
|
|
14
50
|
var seconds = pad(date.getSeconds());
|
|
15
51
|
return format
|
|
16
|
-
.replace(
|
|
17
|
-
.replace(
|
|
18
|
-
.replace(
|
|
19
|
-
.replace(
|
|
20
|
-
.replace(
|
|
21
|
-
.replace(
|
|
52
|
+
.replace("YYYY", year.toString())
|
|
53
|
+
.replace("MM", month)
|
|
54
|
+
.replace("DD", day)
|
|
55
|
+
.replace("HH", hours)
|
|
56
|
+
.replace("mm", minutes)
|
|
57
|
+
.replace("ss", seconds);
|
|
22
58
|
},
|
|
23
59
|
toDbName: function (str) {
|
|
24
60
|
return str.replace(/[A-Z]/g, function (letter) { return "_".concat(letter.toLowerCase()); });
|
|
@@ -26,23 +62,80 @@ exports.Parser = {
|
|
|
26
62
|
toFieldName: function (str) {
|
|
27
63
|
var words = str.split(/[-_\s]+/);
|
|
28
64
|
if (!words.length)
|
|
29
|
-
return
|
|
65
|
+
return "";
|
|
30
66
|
var firstWord = words[0].toLowerCase();
|
|
31
67
|
var restWords = words
|
|
32
68
|
.slice(1)
|
|
33
69
|
.map(function (word) { return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(); });
|
|
34
|
-
return firstWord + restWords.join(
|
|
70
|
+
return firstWord + restWords.join("");
|
|
35
71
|
},
|
|
36
72
|
toValuesOf: function (values) {
|
|
37
73
|
var items = [];
|
|
38
74
|
for (var v in values) {
|
|
39
75
|
items.push(exports.Parser.valueTypeOf(v));
|
|
40
76
|
}
|
|
41
|
-
return "(".concat(items.join(
|
|
77
|
+
return "(".concat(items.join(", "), ")");
|
|
42
78
|
},
|
|
43
79
|
valueTypeOf: function (v) {
|
|
44
|
-
if (typeof v ===
|
|
80
|
+
if (typeof v === "string")
|
|
45
81
|
return "'".concat(v, "'");
|
|
46
82
|
return "".concat(v);
|
|
47
83
|
},
|
|
84
|
+
dynamicConnectTable: function (db, table, json) {
|
|
85
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
86
|
+
var pool, rows, currentCols, dbKeys, addCols, dropCols, _i, addCols_1, col, type, _a, dropCols_1, col;
|
|
87
|
+
return __generator(this, function (_b) {
|
|
88
|
+
switch (_b.label) {
|
|
89
|
+
case 0:
|
|
90
|
+
pool = global.$MysqlDb[db];
|
|
91
|
+
return [4 /*yield*/, pool.execute("\n CREATE TABLE IF NOT EXISTS `".concat(table, "` (\n id BIGINT AUTO_INCREMENT PRIMARY KEY,\n create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,\n update_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP\n )\n "))];
|
|
92
|
+
case 1:
|
|
93
|
+
_b.sent();
|
|
94
|
+
return [4 /*yield*/, pool.execute("\n SELECT COLUMN_NAME \n FROM INFORMATION_SCHEMA.COLUMNS \n WHERE TABLE_SCHEMA = DATABASE() \n AND TABLE_NAME = ?", [table])];
|
|
95
|
+
case 2:
|
|
96
|
+
rows = (_b.sent())[0];
|
|
97
|
+
currentCols = rows.map(function (r) { return r.COLUMN_NAME; });
|
|
98
|
+
dbKeys = Object.keys(json)
|
|
99
|
+
.filter(function (k) { return !["id", "createTime", "updateTime"].includes(k); })
|
|
100
|
+
.map(exports.Parser.toDbName);
|
|
101
|
+
addCols = dbKeys.filter(function (k) { return !currentCols.includes(k); });
|
|
102
|
+
dropCols = currentCols.filter(function (c) {
|
|
103
|
+
return !dbKeys.includes(c) && !["id", "create_time", "update_time"].includes(c);
|
|
104
|
+
});
|
|
105
|
+
_i = 0, addCols_1 = addCols;
|
|
106
|
+
_b.label = 3;
|
|
107
|
+
case 3:
|
|
108
|
+
if (!(_i < addCols_1.length)) return [3 /*break*/, 6];
|
|
109
|
+
col = addCols_1[_i];
|
|
110
|
+
type = "VARCHAR(255)";
|
|
111
|
+
if (typeof json[col] === "number")
|
|
112
|
+
type = "INT";
|
|
113
|
+
return [4 /*yield*/, pool.execute("ALTER TABLE `".concat(table, "` ADD COLUMN `").concat(col, "` ").concat(type))];
|
|
114
|
+
case 4:
|
|
115
|
+
_b.sent();
|
|
116
|
+
_b.label = 5;
|
|
117
|
+
case 5:
|
|
118
|
+
_i++;
|
|
119
|
+
return [3 /*break*/, 3];
|
|
120
|
+
case 6:
|
|
121
|
+
_a = 0, dropCols_1 = dropCols;
|
|
122
|
+
_b.label = 7;
|
|
123
|
+
case 7:
|
|
124
|
+
if (!(_a < dropCols_1.length)) return [3 /*break*/, 10];
|
|
125
|
+
col = dropCols_1[_a];
|
|
126
|
+
return [4 /*yield*/, pool.execute("ALTER TABLE `".concat(table, "` DROP COLUMN `").concat(col, "`"))];
|
|
127
|
+
case 8:
|
|
128
|
+
_b.sent();
|
|
129
|
+
_b.label = 9;
|
|
130
|
+
case 9:
|
|
131
|
+
_a++;
|
|
132
|
+
return [3 /*break*/, 7];
|
|
133
|
+
case 10: return [4 /*yield*/, pool.end()];
|
|
134
|
+
case 11:
|
|
135
|
+
_b.sent();
|
|
136
|
+
return [2 /*return*/];
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
},
|
|
48
141
|
};
|
package/package.json
CHANGED
package/types/meta.d.ts
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* 使用$toMap时 不返回的字段名前面需要加$
|
|
4
4
|
*/
|
|
5
5
|
export declare class MysqlDbSchema implements MysqlDbBaseType {
|
|
6
|
-
$database
|
|
7
|
-
$table
|
|
8
|
-
$mapExFields
|
|
6
|
+
private $database;
|
|
7
|
+
private $table;
|
|
8
|
+
private $mapExFields;
|
|
9
9
|
id: number | string;
|
|
10
10
|
createTime: string;
|
|
11
11
|
updateTime: string;
|
|
@@ -19,3 +19,4 @@ export declare class MysqlDbSchema implements MysqlDbBaseType {
|
|
|
19
19
|
$remove(): Promise<MysqlDbResultStat>;
|
|
20
20
|
$update(maps: Record<string, unknown>): Promise<MysqlDbResultStat>;
|
|
21
21
|
}
|
|
22
|
+
export declare function MysqlRegister(): (Model: any) => void;
|