@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 CHANGED
@@ -1,4 +1,4 @@
1
- ## 0.2.4 (2025-08-29)
1
+ ## 0.2.7 (2025-12-31)
2
2
 
3
3
 
4
4
 
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(d) {
165
- return _super.call(this, d) || 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 users ".concat(this.table);
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(", "), ") \nVALUES (").concat(this.fields.map(function () { return "?"; }).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 !== "createTime"; });
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, $mapExFields) {
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.createTime = utils_1.Parser.easyDate();
54
- this.updateTime = utils_1.Parser.easyDate();
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 create_time VARCHAR(255),\n update_time VARCHAR(255)\n )\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", "create_time", "update_time"];
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rdyl/node-mysql",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "types/index.d.ts",
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(d: string);
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
- private $table;
7
- private $mapExFields;
6
+ readonly $table: string;
8
7
  id: number | string;
9
- createTime: string;
10
- updateTime: string;
11
- constructor($table: string, $mapExFields?: string[]);
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
- createTime: string;
6
- updateTime: string;
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
+ };