mm_mysql 2.4.4 → 2.4.5
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/package.json +1 -1
- package/sql.js +29 -29
package/package.json
CHANGED
package/sql.js
CHANGED
|
@@ -203,7 +203,7 @@ Sql.prototype.toQuery = function (where, sort, view) {
|
|
|
203
203
|
}
|
|
204
204
|
if (this.size && this.page) {
|
|
205
205
|
var start = this.size * (this.page - 1);
|
|
206
|
-
sql += ' limit ' + start + ',' + this.size;
|
|
206
|
+
sql += ' limit ' + start + ', ' + this.size;
|
|
207
207
|
}
|
|
208
208
|
return sql;
|
|
209
209
|
};
|
|
@@ -307,11 +307,11 @@ Sql.prototype.groupMathSql = async function (where, groupby, view, sort, method)
|
|
|
307
307
|
var arr = view_val.split(',');
|
|
308
308
|
for (var i = 0; i < arr.length; i++) {
|
|
309
309
|
var str = escapeId(arr[i]);
|
|
310
|
-
view_str += ',' + method.toUpperCase() + '(' + str + ') ' + method.toLowerCase() + '_' + str.replace(
|
|
310
|
+
view_str += ', ' + method.toUpperCase() + '(' + str + ') ' + method.toLowerCase() + '_' + str.replace(
|
|
311
311
|
/`/g, '');
|
|
312
312
|
}
|
|
313
313
|
} else {
|
|
314
|
-
view_str = ',' + method.toUpperCase() + '(' + escapeId(view_val) + ') ' + method.toLowerCase() + '_' +
|
|
314
|
+
view_str = ', ' + method.toUpperCase() + '(' + escapeId(view_val) + ') ' + method.toLowerCase() + '_' +
|
|
315
315
|
view_val.replace(/`/g, '');
|
|
316
316
|
}
|
|
317
317
|
var sql = 'SELECT ' + (groupby ? escapeId(groupby) : '') + view_str + ' FROM `' + this.table + '`';
|
|
@@ -326,7 +326,7 @@ Sql.prototype.groupMathSql = async function (where, groupby, view, sort, method)
|
|
|
326
326
|
}
|
|
327
327
|
if (this.size && this.page) {
|
|
328
328
|
var start = this.size * (this.page - 1);
|
|
329
|
-
sql += ' limit ' + start + ',' + this.size;
|
|
329
|
+
sql += ' limit ' + start + ', ' + this.size;
|
|
330
330
|
}
|
|
331
331
|
return await this.run(sql);
|
|
332
332
|
};
|
|
@@ -462,7 +462,7 @@ Sql.prototype._buildLikeWhere = function (obj) {
|
|
|
462
462
|
where += ' and ' + escapeId(k) + ' = ' + val;
|
|
463
463
|
}
|
|
464
464
|
}
|
|
465
|
-
return where;
|
|
465
|
+
return where.replace(/^ and /, '');
|
|
466
466
|
};
|
|
467
467
|
|
|
468
468
|
Sql.prototype._buildExactWhere = function (obj) {
|
|
@@ -488,7 +488,7 @@ Sql.prototype._buildExactWhere = function (obj) {
|
|
|
488
488
|
where += ' and ' + escapeId(k) + ' = ' + val;
|
|
489
489
|
}
|
|
490
490
|
}
|
|
491
|
-
return where;
|
|
491
|
+
return where.replace(/^ and /, '');
|
|
492
492
|
};
|
|
493
493
|
|
|
494
494
|
/**
|
|
@@ -508,16 +508,16 @@ Sql.prototype.toSet = function (obj) {
|
|
|
508
508
|
|
|
509
509
|
if (k.endsWith('_add')) {
|
|
510
510
|
let k2 = escapeId(k.replace('_add', ''));
|
|
511
|
-
set += ',' + k2 + ' = ' + k2 + ' + ' + val;
|
|
511
|
+
set += ', ' + k2 + ' = ' + k2 + ' + ' + val;
|
|
512
512
|
} else if (k.endsWith('_del')) {
|
|
513
513
|
let k3 = escapeId(k.replace('_del', ''));
|
|
514
|
-
set += ',' + k3 + ' = ' + k3 + ' - ' + val;
|
|
514
|
+
set += ', ' + k3 + ' = ' + k3 + ' - ' + val;
|
|
515
515
|
} else {
|
|
516
|
-
set += ',' + escapeId(k) + ' = ' + val;
|
|
516
|
+
set += ', ' + escapeId(k) + ' = ' + val;
|
|
517
517
|
}
|
|
518
518
|
}
|
|
519
519
|
|
|
520
|
-
return set.replace(
|
|
520
|
+
return set.replace(/^, /, '');
|
|
521
521
|
};
|
|
522
522
|
|
|
523
523
|
/**
|
|
@@ -534,12 +534,12 @@ Sql.prototype.toAddSql = function (item) {
|
|
|
534
534
|
let value = '';
|
|
535
535
|
|
|
536
536
|
for (let k in item) {
|
|
537
|
-
key += ',' + escapeId(k);
|
|
538
|
-
value += ',' + escape(item[k]);
|
|
537
|
+
key += ', ' + escapeId(k);
|
|
538
|
+
value += ', ' + escape(item[k]);
|
|
539
539
|
}
|
|
540
540
|
|
|
541
541
|
// 使用直接拼接的方式,避免模板替换错误
|
|
542
|
-
let sql = `INSERT INTO \`${this.table}\` (${key.replace(',', '')}) VALUES (${value.replace(
|
|
542
|
+
let sql = `INSERT INTO \`${this.table}\` (${key.replace(', ', '')}) VALUES (${value.replace(/^, /, '')});`;
|
|
543
543
|
|
|
544
544
|
return sql;
|
|
545
545
|
};
|
|
@@ -693,21 +693,21 @@ Sql.prototype._parseSetData = async function (set) {
|
|
|
693
693
|
for (let o of arr) {
|
|
694
694
|
let ar = o.split('=');
|
|
695
695
|
if (ar.length === 2) {
|
|
696
|
-
key_str += ',' + ar[0];
|
|
697
|
-
val_str += ',' + ar[1];
|
|
696
|
+
key_str += ', ' + ar[0];
|
|
697
|
+
val_str += ', ' + ar[1];
|
|
698
698
|
}
|
|
699
699
|
}
|
|
700
700
|
} else {
|
|
701
701
|
for (let k in set) {
|
|
702
|
-
key_str += ',' + escapeId(k);
|
|
702
|
+
key_str += ', ' + escapeId(k);
|
|
703
703
|
let val = set[k];
|
|
704
|
-
val_str += ',' + escape(val);
|
|
704
|
+
val_str += ', ' + escape(val);
|
|
705
705
|
}
|
|
706
706
|
}
|
|
707
707
|
|
|
708
708
|
return {
|
|
709
|
-
key_str: key_str.replace(
|
|
710
|
-
val_str: val_str.replace(
|
|
709
|
+
key_str: key_str.replace(/^, /, ''),
|
|
710
|
+
val_str: val_str.replace(/^, /, '')
|
|
711
711
|
};
|
|
712
712
|
};
|
|
713
713
|
|
|
@@ -1180,7 +1180,7 @@ Sql.prototype.tplBody = function (param_dt, sql_dt) {
|
|
|
1180
1180
|
let parts = [];
|
|
1181
1181
|
if (!sql_dt || Object.keys(sql_dt).length === 0) {
|
|
1182
1182
|
for (let key in param_dt) {
|
|
1183
|
-
parts.push(' ' + escapeId(key) + ' = ' + escape(param_dt[key]));
|
|
1183
|
+
parts.push(', ' + escapeId(key) + ' = ' + escape(param_dt[key]));
|
|
1184
1184
|
}
|
|
1185
1185
|
} else {
|
|
1186
1186
|
for (let key in param_dt) {
|
|
@@ -1188,13 +1188,13 @@ Sql.prototype.tplBody = function (param_dt, sql_dt) {
|
|
|
1188
1188
|
if (sql_dt[key]) {
|
|
1189
1189
|
// 使用直接替换方式,避免模板替换错误
|
|
1190
1190
|
let replaced = sql_dt[key].replaceAll('{0}', value.trim("'"));
|
|
1191
|
-
parts.push(' ' + replaced.replace(/\+ -/g, '- ').replace(/- -/g, '+ '));
|
|
1191
|
+
parts.push(', ' + replaced.replace(/\+ -/g, '- ').replace(/- -/g, '+ '));
|
|
1192
1192
|
} else {
|
|
1193
|
-
parts.push(' ' + escapeId(key) + ' = ' + value);
|
|
1193
|
+
parts.push(', ' + escapeId(key) + ' = ' + value);
|
|
1194
1194
|
}
|
|
1195
1195
|
}
|
|
1196
1196
|
}
|
|
1197
|
-
return parts.join(',').replace(
|
|
1197
|
+
return parts.join(',').replace(/^, /, '');
|
|
1198
1198
|
};
|
|
1199
1199
|
|
|
1200
1200
|
/**
|
|
@@ -1593,22 +1593,22 @@ Sql.prototype.backup = async function (file, create = false) {
|
|
|
1593
1593
|
}
|
|
1594
1594
|
|
|
1595
1595
|
// 构建 SQL 语句
|
|
1596
|
-
let
|
|
1596
|
+
let sql_content = '';
|
|
1597
1597
|
|
|
1598
1598
|
// 添加表结构(简化版,实际应用中可能需要更复杂的表结构导出)
|
|
1599
|
-
|
|
1600
|
-
|
|
1599
|
+
sql_content += `-- 备份表: ${this.table}\n`;
|
|
1600
|
+
sql_content += `-- 备份时间: ${new Date().toISOString()}\n\n`;
|
|
1601
1601
|
|
|
1602
1602
|
// 如果create为true,添加创建表语句
|
|
1603
1603
|
if (create) {
|
|
1604
1604
|
let createTableSql = await this._getCreateTableSql();
|
|
1605
1605
|
if (createTableSql) {
|
|
1606
|
-
|
|
1606
|
+
sql_content += createTableSql + '\n\n';
|
|
1607
1607
|
|
|
1608
1608
|
// 添加表注释信息
|
|
1609
1609
|
let commentSql = await this._getTableComments();
|
|
1610
1610
|
if (commentSql) {
|
|
1611
|
-
|
|
1611
|
+
sql_content += commentSql + '\n';
|
|
1612
1612
|
}
|
|
1613
1613
|
}
|
|
1614
1614
|
}
|
|
@@ -1617,7 +1617,7 @@ Sql.prototype.backup = async function (file, create = false) {
|
|
|
1617
1617
|
for (let row of data) {
|
|
1618
1618
|
let keys = Object.keys(row).map(key => this.escapeId(key)).join(', ');
|
|
1619
1619
|
let values = Object.values(row).map(value => this.escape(value)).join(', ');
|
|
1620
|
-
|
|
1620
|
+
sql_content += `INSERT INTO \`${this.table}\` (${keys}) VALUES (${values});\n`;
|
|
1621
1621
|
}
|
|
1622
1622
|
|
|
1623
1623
|
// 写入文件(这里需要文件系统模块,实际使用时需要引入 fs)
|