mm_mysql 1.7.4 → 1.7.6
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/index.js +0 -1
- package/package.json +1 -1
- package/sql.js +49 -29
- package/test.js +19 -7
package/index.js
CHANGED
|
@@ -143,7 +143,6 @@ class Mysql {
|
|
|
143
143
|
$.log.debug("SQL:", sql);
|
|
144
144
|
}
|
|
145
145
|
// $this.conn.config.connectionConfig = false;
|
|
146
|
-
// console.log("测试", $this.conn.config.connectionConfig);
|
|
147
146
|
// 返回一个 Promise
|
|
148
147
|
return new Promise((resolve, reject) => {
|
|
149
148
|
$this.conn.getConnection(function(err, db) {
|
package/package.json
CHANGED
package/sql.js
CHANGED
|
@@ -192,12 +192,12 @@ Sql.prototype.toQuery = function(where, sort, view) {
|
|
|
192
192
|
sql += " WHERE " + where;
|
|
193
193
|
}
|
|
194
194
|
if (sort) {
|
|
195
|
-
sql += " ORDER BY " + sort.replace(/;/,
|
|
195
|
+
sql += " ORDER BY " + sort.replace(/;/, "");
|
|
196
196
|
}
|
|
197
197
|
sql = sql.replace("{0}", this.table).replace("{1}", view);
|
|
198
198
|
if (this.size && this.page) {
|
|
199
199
|
var start = this.size * (this.page - 1);
|
|
200
|
-
sql += " limit " + start +
|
|
200
|
+
sql += " limit " + start + "," + this.size;
|
|
201
201
|
}
|
|
202
202
|
return sql;
|
|
203
203
|
};
|
|
@@ -252,24 +252,38 @@ Sql.prototype.getSql = function(where, sort, view) {
|
|
|
252
252
|
* @param {String} set 修改的键值
|
|
253
253
|
* @return {Promise|Object} 执行结果
|
|
254
254
|
*/
|
|
255
|
-
Sql.prototype.addOrSetSql = async function(where, set) {
|
|
255
|
+
Sql.prototype.addOrSetSql = async function(where, set, like) {
|
|
256
256
|
if (!where || !set) {
|
|
257
257
|
return -1;
|
|
258
258
|
}
|
|
259
|
+
if (typeof(where) === "object") {
|
|
260
|
+
where = await this.toWhere(where);
|
|
261
|
+
}
|
|
259
262
|
var count = await this.countSql(where);
|
|
260
263
|
if (count === 0) {
|
|
261
|
-
var arr = set.split(',');
|
|
262
264
|
var key = "";
|
|
263
265
|
var value = "";
|
|
264
|
-
|
|
265
|
-
var
|
|
266
|
-
var
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
266
|
+
if (typeof(set) === "string") {
|
|
267
|
+
var arr = set.split(",");
|
|
268
|
+
for (var i = 0; i < arr.length; i++) {
|
|
269
|
+
var o = arr[i];
|
|
270
|
+
var ar = o.split('=');
|
|
271
|
+
if (ar.length === 2) {
|
|
272
|
+
key += "," + ar[0];
|
|
273
|
+
value += "," + ar[1];
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
} else {
|
|
277
|
+
for (var k in set) {
|
|
278
|
+
key += "," + k;
|
|
279
|
+
var val = set[k];
|
|
280
|
+
if (val && typeof(val) === "string") {
|
|
281
|
+
val = val.trim("'");
|
|
282
|
+
}
|
|
283
|
+
value += "," + escape(val);
|
|
270
284
|
}
|
|
271
285
|
}
|
|
272
|
-
return await this.addSql(key.replace(
|
|
286
|
+
return await this.addSql(key.replace(",", ""), value.replace(",", ""));
|
|
273
287
|
}
|
|
274
288
|
return await this.setSql(where, set);
|
|
275
289
|
};
|
|
@@ -348,7 +362,7 @@ Sql.prototype.groupMathSql = async function(where, groupby, view, sort, method)
|
|
|
348
362
|
}
|
|
349
363
|
if (this.size && this.page) {
|
|
350
364
|
var start = this.size * (this.page - 1);
|
|
351
|
-
sql += " limit " + start +
|
|
365
|
+
sql += " limit " + start + "," + this.size;
|
|
352
366
|
}
|
|
353
367
|
return await this.run(sql);
|
|
354
368
|
}
|
|
@@ -389,7 +403,6 @@ Sql.prototype.groupCountSql = async function(where, groupby, view, sort) {
|
|
|
389
403
|
return await this.groupMathSql(where, groupby, view, sort, "COUNT");
|
|
390
404
|
};
|
|
391
405
|
|
|
392
|
-
|
|
393
406
|
/**
|
|
394
407
|
* @description 统计学
|
|
395
408
|
* @param {Object} query 查询条件
|
|
@@ -456,18 +469,21 @@ Sql.prototype.toWhere = function(obj, like) {
|
|
|
456
469
|
if (val && typeof(val) === "string") {
|
|
457
470
|
val = val.trim("'");
|
|
458
471
|
}
|
|
472
|
+
val = escape(val);
|
|
459
473
|
if (k.endWith('_min')) {
|
|
460
|
-
where += " and " + escapeId(k.replace('_min',
|
|
474
|
+
where += " and " + escapeId(k.replace('_min', "")) + " >= " + val;
|
|
461
475
|
} else if (k.endWith('_max')) {
|
|
462
|
-
where += " and " + escapeId(k.replace('_max',
|
|
476
|
+
where += " and " + escapeId(k.replace('_max', "")) + " <= " + val;
|
|
463
477
|
} else if (k.endWith('_not')) {
|
|
464
|
-
where += " and " + escapeId(k.replace('_not',
|
|
478
|
+
where += " and " + escapeId(k.replace('_not', "")) + " != " + val;
|
|
465
479
|
} else if (k.endWith('_has')) {
|
|
466
|
-
where += " and " + escapeId(k.replace('_has',
|
|
480
|
+
where += " and " + escapeId(k.replace('_has', "")) + " in (" + val.trim("'") + ")";
|
|
481
|
+
} else if (k.endWith('_like')) {
|
|
482
|
+
where += " and " + escapeId(k) + " LIKE '%" + val.trim("'") + "%'";
|
|
467
483
|
} else if (typeof(val) === "string" && !/^[0-9]+$/.test(val)) {
|
|
468
|
-
where += " and " + escapeId(k) + " LIKE '%" +
|
|
484
|
+
where += " and " + escapeId(k) + " LIKE '%" + val.trim("'") + "%'";
|
|
469
485
|
} else {
|
|
470
|
-
where += " and " + escapeId(k) + " = " + val
|
|
486
|
+
where += " and " + escapeId(k) + " = " + val;
|
|
471
487
|
}
|
|
472
488
|
}
|
|
473
489
|
} else {
|
|
@@ -476,16 +492,19 @@ Sql.prototype.toWhere = function(obj, like) {
|
|
|
476
492
|
if (val && typeof(val) === "string") {
|
|
477
493
|
val = val.trim("'");
|
|
478
494
|
}
|
|
495
|
+
val = escape(val);
|
|
479
496
|
if (k.endWith('_min')) {
|
|
480
|
-
where += " and " + escapeId(k.replace('_min',
|
|
497
|
+
where += " and " + escapeId(k.replace('_min', "")) + " >= " + val;
|
|
481
498
|
} else if (k.endWith('_max')) {
|
|
482
|
-
where += " and " + escapeId(k.replace('_max',
|
|
499
|
+
where += " and " + escapeId(k.replace('_max', "")) + " <= " + val;
|
|
483
500
|
} else if (k.endWith('_not')) {
|
|
484
|
-
where += " and " + escapeId(k.replace('_not',
|
|
501
|
+
where += " and " + escapeId(k.replace('_not', "")) + " != " + val;
|
|
485
502
|
} else if (k.endWith('_has')) {
|
|
486
|
-
where += " and " + escapeId(k.replace('_has',
|
|
503
|
+
where += " and " + escapeId(k.replace('_has', "")) + " in (" + val.trim("'") + ")";
|
|
504
|
+
} else if (k.endWith('_like')) {
|
|
505
|
+
where += " and " + escapeId(k) + " LIKE '%" + val.trim("'") + "%'";
|
|
487
506
|
} else {
|
|
488
|
-
where += " and " + escapeId(k) + "=" +
|
|
507
|
+
where += " and " + escapeId(k) + " = " + val;
|
|
489
508
|
}
|
|
490
509
|
}
|
|
491
510
|
}
|
|
@@ -506,10 +525,10 @@ Sql.prototype.toSet = function(obj) {
|
|
|
506
525
|
}
|
|
507
526
|
val = escape(val);
|
|
508
527
|
if (k.endWith('_add')) {
|
|
509
|
-
var k2 = escapeId(k.replace('_add',
|
|
528
|
+
var k2 = escapeId(k.replace('_add', ""));
|
|
510
529
|
set += "," + k2 + " = " + k2 + " + " + val;
|
|
511
530
|
} else if (k.endWith('_del')) {
|
|
512
|
-
var k3 = escapeId(k.replace('_del',
|
|
531
|
+
var k3 = escapeId(k.replace('_del', ""));
|
|
513
532
|
set += "," + k3 + " = " + k3 + " - " + val;
|
|
514
533
|
} else {
|
|
515
534
|
set += "," + escapeId(k) + " = " + val;
|
|
@@ -586,6 +605,7 @@ Sql.prototype.add = function(item) {
|
|
|
586
605
|
var sql = this.toAddSql(item);
|
|
587
606
|
return this.exec(sql);
|
|
588
607
|
};
|
|
608
|
+
|
|
589
609
|
/**
|
|
590
610
|
* @description 删除数据
|
|
591
611
|
* @param {Object} query 查询条件集合
|
|
@@ -628,7 +648,7 @@ Sql.prototype.get = function(query, sort, view, like = true) {
|
|
|
628
648
|
* @return {Promise|Object} 执行结果
|
|
629
649
|
*/
|
|
630
650
|
Sql.prototype.addOrSet = async function(where, set, like) {
|
|
631
|
-
return await this.addOrSetSql(
|
|
651
|
+
return await this.addOrSetSql(where, set, like);
|
|
632
652
|
};
|
|
633
653
|
|
|
634
654
|
/**
|
|
@@ -707,7 +727,7 @@ Sql.prototype.has_param = function(paramDt, sqlDt) {
|
|
|
707
727
|
var bl = false;
|
|
708
728
|
for (var key in sqlDt) {
|
|
709
729
|
var value = paramDt[key];
|
|
710
|
-
if (value !== undefined && value !== null && value !==
|
|
730
|
+
if (value !== undefined && value !== null && value !== "") {
|
|
711
731
|
bl = true;
|
|
712
732
|
break;
|
|
713
733
|
}
|
|
@@ -760,7 +780,7 @@ Sql.prototype.tpl_query = function(paramDt, sqlDt) {
|
|
|
760
780
|
var l = this.config.separator;
|
|
761
781
|
if (l) {
|
|
762
782
|
for (var key in paramDt) {
|
|
763
|
-
var value = paramDt[key] +
|
|
783
|
+
var value = paramDt[key] + "";
|
|
764
784
|
var arr = value.split(l);
|
|
765
785
|
var tpl = sqlDt[key];
|
|
766
786
|
if (tpl) {
|
package/test.js
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
const Mysql = require('./index.js').Mysql;
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
// function test() {
|
|
5
|
+
// var setSql = "`nickname`='hao,1,2,3',`gm`=5,`mc`=2,`group`='2,3'";
|
|
6
|
+
// var mh = setSql.match(/'.*'/);
|
|
7
|
+
// console.log(mh);
|
|
8
|
+
// }
|
|
9
|
+
// test();
|
|
10
|
+
// return
|
|
3
11
|
// var sql = new Mysql();
|
|
4
12
|
// sql.setConfig({
|
|
5
13
|
// multipleStatements: true
|
|
@@ -81,24 +89,28 @@ async function test_tpl_get() {
|
|
|
81
89
|
db.table = 'user_account';
|
|
82
90
|
var query = {
|
|
83
91
|
gm_min: 2,
|
|
84
|
-
username: 'ad%m'
|
|
92
|
+
username: 'ad%m|882'
|
|
85
93
|
};
|
|
86
94
|
db.page = 1;
|
|
87
95
|
db.size = 5;
|
|
88
96
|
var query_str = db.tpl_query(query, tpl.query);
|
|
89
97
|
ret = await db.getCountSql(query_str, "`user_id` desc", "*");
|
|
90
|
-
|
|
98
|
+
|
|
91
99
|
console.log('查询结果', ret);
|
|
92
100
|
console.log('SQL语句', db.sql);
|
|
93
|
-
|
|
94
|
-
|
|
101
|
+
|
|
102
|
+
var o = ret.list[0];
|
|
95
103
|
// console.log("查询结果", o);
|
|
96
|
-
|
|
97
|
-
|
|
104
|
+
o.user_id = await db.count() + 1;
|
|
105
|
+
o.nickname = o.nickname + ",6,7";
|
|
106
|
+
o.gm = "'5";
|
|
98
107
|
// // await db.add(o);
|
|
99
|
-
// await db.
|
|
108
|
+
// await db.set({
|
|
100
109
|
// user_id: o.user_id
|
|
101
110
|
// }, o);
|
|
111
|
+
await db.addOrSet({
|
|
112
|
+
user_id: o.user_id
|
|
113
|
+
}, o);
|
|
102
114
|
// console.log(db.sql);
|
|
103
115
|
|
|
104
116
|
ret = await db.groupSumSql(query_str, "mc", "gm");
|