@rdyl/node-mysql 0.2.5 → 0.2.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/helper.js +32 -8
- package/dist/meta.js +9 -6
- package/dist/utils.js +2 -2
- package/package.json +1 -1
- package/types/helper.d.ts +6 -2
- package/types/meta.d.ts +9 -5
- package/types/type.d.ts +8 -2
package/CHANGELOG.md
CHANGED
package/dist/helper.js
CHANGED
|
@@ -75,8 +75,10 @@ exports.MysqlUpdater = exports.MysqlDeleter = exports.MysqlInserter = exports.My
|
|
|
75
75
|
var interface_1 = require("./interface");
|
|
76
76
|
var utils_1 = require("./utils");
|
|
77
77
|
var BaseHelper = /** @class */ (function () {
|
|
78
|
-
function BaseHelper(table) {
|
|
78
|
+
function BaseHelper(table, related) {
|
|
79
|
+
if (related === void 0) { related = {}; }
|
|
79
80
|
this.table = table;
|
|
81
|
+
this.related = related;
|
|
80
82
|
this.selects = [];
|
|
81
83
|
this.options = {
|
|
82
84
|
limit: 0,
|
|
@@ -86,6 +88,30 @@ var BaseHelper = /** @class */ (function () {
|
|
|
86
88
|
// @ts-ignore
|
|
87
89
|
this.pool = global.$MysqlPool;
|
|
88
90
|
}
|
|
91
|
+
Object.defineProperty(BaseHelper.prototype, "relatedStat", {
|
|
92
|
+
get: function () {
|
|
93
|
+
var _this = this;
|
|
94
|
+
var relatedFields = Object.keys(this.related);
|
|
95
|
+
var sqlList = [];
|
|
96
|
+
if (relatedFields.length) {
|
|
97
|
+
// @ts-ignore
|
|
98
|
+
var _a = (global.$MysqlTable[table] || {}).fields, fields_1 = _a === void 0 ? [] : _a;
|
|
99
|
+
/* 单个角色对象 */
|
|
100
|
+
relatedFields.forEach(function (n) {
|
|
101
|
+
var item = _this.related[n];
|
|
102
|
+
var itemSql = "COALESCE(\n (\n SELECT JSON_OBJECT(".concat(fields_1
|
|
103
|
+
.map(function (e) { return "".concat(e, ": ").concat(item.table, ".").concat(e); })
|
|
104
|
+
.join(","), ")\n FROM ").concat(item.relatedTable, "\n JOIN ").concat(item.table, " ON ").concat(item.table, ".id = ").concat(item.relatedTable, ".").concat(item.table, "_id\n WHERE ").concat(item.relatedTable, ".").concat(_this.table, "_id = ").concat(_this.table, ".id\n LIMIT 1\n ),\n JSON_OBJECT()\n) AS role");
|
|
105
|
+
sqlList.push(itemSql);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
sql: sqlList.join(",\n"),
|
|
110
|
+
};
|
|
111
|
+
},
|
|
112
|
+
enumerable: false,
|
|
113
|
+
configurable: true
|
|
114
|
+
});
|
|
89
115
|
Object.defineProperty(BaseHelper.prototype, "selectStat", {
|
|
90
116
|
get: function () {
|
|
91
117
|
var sql = "";
|
|
@@ -161,8 +187,8 @@ var BaseHelper = /** @class */ (function () {
|
|
|
161
187
|
/** @description 查询数据 */
|
|
162
188
|
var MysqlSelector = /** @class */ (function (_super) {
|
|
163
189
|
__extends(MysqlSelector, _super);
|
|
164
|
-
function MysqlSelector(
|
|
165
|
-
return _super.call(this,
|
|
190
|
+
function MysqlSelector(table, related) {
|
|
191
|
+
return _super.call(this, table, related) || this;
|
|
166
192
|
}
|
|
167
193
|
Object.defineProperty(MysqlSelector.prototype, "sql", {
|
|
168
194
|
get: function () {
|
|
@@ -182,7 +208,7 @@ var MysqlSelector = /** @class */ (function (_super) {
|
|
|
182
208
|
Object.defineProperty(MysqlSelector.prototype, "countSql", {
|
|
183
209
|
get: function () {
|
|
184
210
|
var selectStat = this.selectStat;
|
|
185
|
-
var target = "SELECT COUNT(*) AS count FROM
|
|
211
|
+
var target = "SELECT COUNT(*) AS count FROM ".concat(this.table);
|
|
186
212
|
if (selectStat.sql) {
|
|
187
213
|
target += selectStat.sql;
|
|
188
214
|
}
|
|
@@ -237,14 +263,12 @@ var MysqlSelector = /** @class */ (function (_super) {
|
|
|
237
263
|
}
|
|
238
264
|
return target;
|
|
239
265
|
};
|
|
240
|
-
console.log(res);
|
|
241
266
|
if (Array.isArray(res)) {
|
|
242
267
|
return [2 /*return*/, res.map(get)];
|
|
243
268
|
}
|
|
244
269
|
return [2 /*return*/, [get(res)]];
|
|
245
270
|
case 2:
|
|
246
271
|
err_1 = _b.sent();
|
|
247
|
-
console.log(err_1);
|
|
248
272
|
return [2 /*return*/, []];
|
|
249
273
|
case 3: return [2 /*return*/];
|
|
250
274
|
}
|
|
@@ -315,7 +339,7 @@ var MysqlInserter = /** @class */ (function (_super) {
|
|
|
315
339
|
get: function () {
|
|
316
340
|
return "INSERT INTO ".concat(this.table, " (").concat(this.fields
|
|
317
341
|
.map(utils_1.Parser.toDbName)
|
|
318
|
-
.join(", "), ")
|
|
342
|
+
.join(", "), ") VALUES (").concat(this.fields.map(function () { return "?"; }).join(", "), ")");
|
|
319
343
|
},
|
|
320
344
|
enumerable: false,
|
|
321
345
|
configurable: true
|
|
@@ -450,7 +474,7 @@ var MysqlUpdater = /** @class */ (function (_super) {
|
|
|
450
474
|
Object.defineProperty(MysqlUpdater.prototype, "updateStat", {
|
|
451
475
|
get: function () {
|
|
452
476
|
var updateFields = this.updateFields;
|
|
453
|
-
var keys = Object.keys(updateFields).filter(function (k) { return k !== "id" && k !== "
|
|
477
|
+
var keys = Object.keys(updateFields).filter(function (k) { return k !== "id" && k !== "createAt"; });
|
|
454
478
|
var sql = "";
|
|
455
479
|
var values = [];
|
|
456
480
|
if (keys.length > 0) {
|
package/dist/meta.js
CHANGED
|
@@ -45,13 +45,16 @@ var utils_1 = require("./utils");
|
|
|
45
45
|
* 使用$toMap时 不返回的字段名前面需要加$
|
|
46
46
|
*/
|
|
47
47
|
var MysqlDbSchema = /** @class */ (function () {
|
|
48
|
-
function MysqlDbSchema($table,
|
|
49
|
-
if ($mapExFields === void 0) { $mapExFields = []; }
|
|
48
|
+
function MysqlDbSchema($table, opts) {
|
|
50
49
|
this.$table = $table;
|
|
51
|
-
this.$mapExFields = $mapExFields;
|
|
52
50
|
this.id = "";
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
51
|
+
this.createAt = utils_1.Parser.easyDate();
|
|
52
|
+
this.updateAt = utils_1.Parser.easyDate();
|
|
53
|
+
this.$mapExFields = [];
|
|
54
|
+
this.$related = {};
|
|
55
|
+
var _a = opts || {}, _b = _a.exFields, exFields = _b === void 0 ? [] : _b, _c = _a.related, related = _c === void 0 ? {} : _c;
|
|
56
|
+
this.$mapExFields = exFields;
|
|
57
|
+
this.$related = related;
|
|
55
58
|
}
|
|
56
59
|
Object.defineProperty(MysqlDbSchema.prototype, "$toJson", {
|
|
57
60
|
get: function () {
|
|
@@ -103,7 +106,7 @@ var MysqlDbSchema = /** @class */ (function () {
|
|
|
103
106
|
return __generator(this, function (_a) {
|
|
104
107
|
switch (_a.label) {
|
|
105
108
|
case 0:
|
|
106
|
-
selector = new helper_1.MysqlSelector(this.$table);
|
|
109
|
+
selector = new helper_1.MysqlSelector(this.$table, this.$related);
|
|
107
110
|
return [4 /*yield*/, selector.getById(this.id)];
|
|
108
111
|
case 1:
|
|
109
112
|
res = _a.sent();
|
package/dist/utils.js
CHANGED
|
@@ -95,13 +95,13 @@ exports.Parser = {
|
|
|
95
95
|
case 0:
|
|
96
96
|
pool = global.$MysqlPool;
|
|
97
97
|
_a = global.$MysqlTable[table], fields = _a.fields, json = _a.json;
|
|
98
|
-
return [4 /*yield*/, pool.execute("\n CREATE TABLE IF NOT EXISTS `".concat(table, "` (\n id BIGINT AUTO_INCREMENT PRIMARY KEY,\n
|
|
98
|
+
return [4 /*yield*/, pool.execute("\n CREATE TABLE IF NOT EXISTS `".concat(table, "` (\n id BIGINT AUTO_INCREMENT PRIMARY KEY,\n create_at VARCHAR(255),\n update_at VARCHAR(255)\n )\n "))];
|
|
99
99
|
case 1:
|
|
100
100
|
_c.sent();
|
|
101
101
|
return [4 /*yield*/, pool.execute("SELECT COLUMN_NAME \n FROM INFORMATION_SCHEMA.COLUMNS \n WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ?", [table])];
|
|
102
102
|
case 2:
|
|
103
103
|
rows = (_c.sent())[0];
|
|
104
|
-
ex = ["id", "
|
|
104
|
+
ex = ["id", "create_at", "update_at"];
|
|
105
105
|
columns = rows.map(function (r) { return r.COLUMN_NAME; });
|
|
106
106
|
fieldKeys = fields.map(exports.Parser.toDbName);
|
|
107
107
|
add = fieldKeys.filter(function (c) { return !columns.includes(c); });
|
package/package.json
CHANGED
package/types/helper.d.ts
CHANGED
|
@@ -2,10 +2,14 @@ import mysql from "mysql2/promise";
|
|
|
2
2
|
import { SortKey, SelectOption, OptionsType } from "./interface";
|
|
3
3
|
declare class BaseHelper {
|
|
4
4
|
table: string;
|
|
5
|
+
private related;
|
|
5
6
|
pool: mysql.Pool;
|
|
6
|
-
constructor(table: string);
|
|
7
|
+
constructor(table: string, related?: Record<string, MysqlRelatedField>);
|
|
7
8
|
selects: SelectOption[];
|
|
8
9
|
options: OptionsType;
|
|
10
|
+
get relatedStat(): {
|
|
11
|
+
sql: string;
|
|
12
|
+
};
|
|
9
13
|
get selectStat(): {
|
|
10
14
|
sql: string;
|
|
11
15
|
values: unknown[];
|
|
@@ -20,7 +24,7 @@ declare class BaseHelper {
|
|
|
20
24
|
}
|
|
21
25
|
/** @description 查询数据 */
|
|
22
26
|
export declare class MysqlSelector<T = object> extends BaseHelper {
|
|
23
|
-
constructor(
|
|
27
|
+
constructor(table: string, related?: Record<string, MysqlRelatedField>);
|
|
24
28
|
get sql(): string;
|
|
25
29
|
get countSql(): string;
|
|
26
30
|
total(): Promise<number>;
|
package/types/meta.d.ts
CHANGED
|
@@ -3,12 +3,16 @@
|
|
|
3
3
|
* 使用$toMap时 不返回的字段名前面需要加$
|
|
4
4
|
*/
|
|
5
5
|
export declare class MysqlDbSchema implements MysqlDbBaseType {
|
|
6
|
-
|
|
7
|
-
private $mapExFields;
|
|
6
|
+
readonly $table: string;
|
|
8
7
|
id: number | string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
createAt: string;
|
|
9
|
+
updateAt: string;
|
|
10
|
+
readonly $mapExFields: string[];
|
|
11
|
+
readonly $related: Record<string, MysqlRelatedField>;
|
|
12
|
+
constructor($table: string, opts?: {
|
|
13
|
+
exFields?: string[];
|
|
14
|
+
related?: Record<string, MysqlRelatedField>;
|
|
15
|
+
});
|
|
12
16
|
get $toJson(): any;
|
|
13
17
|
get $toMap(): any;
|
|
14
18
|
get $fields(): string[];
|
package/types/type.d.ts
CHANGED
|
@@ -2,8 +2,14 @@ type DbId = number | string;
|
|
|
2
2
|
|
|
3
3
|
interface MysqlDbBaseType {
|
|
4
4
|
id: DbId;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
createAt: string;
|
|
6
|
+
updateAt: string;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
type MysqlDbResultStat = "exist" | "ok" | "fail";
|
|
10
|
+
|
|
11
|
+
type MysqlRelatedField = {
|
|
12
|
+
table: string;
|
|
13
|
+
relatedTable: string;
|
|
14
|
+
isArray?: boolean;
|
|
15
|
+
};
|