mm_mysql 1.7.2 → 1.7.4
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 +72 -40
- package/test.js +11 -0
package/package.json
CHANGED
package/sql.js
CHANGED
|
@@ -328,20 +328,20 @@ Sql.prototype.groupMathSql = async function(where, groupby, view, sort, method)
|
|
|
328
328
|
if (view.indexOf(",") !== -1) {
|
|
329
329
|
var arr = view.split(",");
|
|
330
330
|
for (var i = 0; i < arr.length; i++) {
|
|
331
|
-
var str =
|
|
331
|
+
var str = escapeId(arr[i]);
|
|
332
332
|
viewStr += "," + method.toUpperCase() + "(" + str + ") " + method.toLowerCase() + "_" + str.replace(
|
|
333
333
|
/`/g, "")
|
|
334
334
|
}
|
|
335
335
|
} else {
|
|
336
|
-
viewStr = "," + method.toUpperCase() + "(" +
|
|
336
|
+
viewStr = "," + method.toUpperCase() + "(" + escapeId(view) + ") " + method.toLowerCase() + "_" +
|
|
337
337
|
view.replace(/`/g, "")
|
|
338
338
|
}
|
|
339
|
-
var sql = "SELECT " + (groupby ?
|
|
339
|
+
var sql = "SELECT " + (groupby ? escapeId(groupby) : "") + viewStr + " FROM `" + this.table + "`";
|
|
340
340
|
if (where) {
|
|
341
341
|
sql += ' WHERE ' + where;
|
|
342
342
|
}
|
|
343
343
|
if (groupby) {
|
|
344
|
-
sql += " GROUP BY " +
|
|
344
|
+
sql += " GROUP BY " + escapeId(groupby);
|
|
345
345
|
}
|
|
346
346
|
if (sort) {
|
|
347
347
|
sql += " ORDER BY " + sort;
|
|
@@ -453,34 +453,39 @@ Sql.prototype.toWhere = function(obj, like) {
|
|
|
453
453
|
if (like) {
|
|
454
454
|
for (var k in obj) {
|
|
455
455
|
var val = obj[k];
|
|
456
|
+
if (val && typeof(val) === "string") {
|
|
457
|
+
val = val.trim("'");
|
|
458
|
+
}
|
|
456
459
|
if (k.endWith('_min')) {
|
|
457
|
-
where += " and " +
|
|
460
|
+
where += " and " + escapeId(k.replace('_min', '')) + " >= " + escape(val);
|
|
458
461
|
} else if (k.endWith('_max')) {
|
|
459
|
-
where += " and " +
|
|
462
|
+
where += " and " + escapeId(k.replace('_max', '')) + " <= " + escape(val);
|
|
460
463
|
} else if (k.endWith('_not')) {
|
|
461
|
-
where += " and " +
|
|
464
|
+
where += " and " + escapeId(k.replace('_not', '')) + " != " + escape(val);
|
|
462
465
|
} else if (k.endWith('_has')) {
|
|
463
|
-
where += " and " +
|
|
466
|
+
where += " and " + escapeId(k.replace('_has', '')) + " in (" + val + ")";
|
|
464
467
|
} else if (typeof(val) === "string" && !/^[0-9]+$/.test(val)) {
|
|
465
|
-
where += " and " +
|
|
468
|
+
where += " and " + escapeId(k) + " LIKE '%" + escape(val).trim("'") + "%'"
|
|
466
469
|
} else {
|
|
467
|
-
where += " and " +
|
|
470
|
+
where += " and " + escapeId(k) + " = " + val
|
|
468
471
|
}
|
|
469
472
|
}
|
|
470
473
|
} else {
|
|
471
474
|
for (var k in obj) {
|
|
472
475
|
var val = obj[k];
|
|
476
|
+
if (val && typeof(val) === "string") {
|
|
477
|
+
val = val.trim("'");
|
|
478
|
+
}
|
|
473
479
|
if (k.endWith('_min')) {
|
|
474
|
-
where += " and " +
|
|
475
|
-
''));
|
|
480
|
+
where += " and " + escapeId(k.replace('_min', '')) + " >= " + escape(val);
|
|
476
481
|
} else if (k.endWith('_max')) {
|
|
477
|
-
where += " and " +
|
|
482
|
+
where += " and " + escapeId(k.replace('_max', '')) + " <= " + escape(val);
|
|
478
483
|
} else if (k.endWith('_not')) {
|
|
479
|
-
where += " and " +
|
|
484
|
+
where += " and " + escapeId(k.replace('_not', '')) + " != " + escape(val);
|
|
480
485
|
} else if (k.endWith('_has')) {
|
|
481
|
-
where += " and " +
|
|
486
|
+
where += " and " + escapeId(k.replace('_has', '')) + " in (" + val.replace(/`/gi, "") + ")";
|
|
482
487
|
} else {
|
|
483
|
-
where += " and " +
|
|
488
|
+
where += " and " + escapeId(k) + "=" + escape(val);
|
|
484
489
|
}
|
|
485
490
|
}
|
|
486
491
|
}
|
|
@@ -495,15 +500,19 @@ Sql.prototype.toWhere = function(obj, like) {
|
|
|
495
500
|
Sql.prototype.toSet = function(obj) {
|
|
496
501
|
var set = "";
|
|
497
502
|
for (var k in obj) {
|
|
498
|
-
var val =
|
|
503
|
+
var val = obj[k];
|
|
504
|
+
if (val && typeof(val) == "string") {
|
|
505
|
+
val = val.trim("'");
|
|
506
|
+
}
|
|
507
|
+
val = escape(val);
|
|
499
508
|
if (k.endWith('_add')) {
|
|
500
|
-
var k2 =
|
|
509
|
+
var k2 = escapeId(k.replace('_add', ''));
|
|
501
510
|
set += "," + k2 + " = " + k2 + " + " + val;
|
|
502
511
|
} else if (k.endWith('_del')) {
|
|
503
|
-
var k3 =
|
|
512
|
+
var k3 = escapeId(k.replace('_del', ''));
|
|
504
513
|
set += "," + k3 + " = " + k3 + " - " + val;
|
|
505
514
|
} else {
|
|
506
|
-
set += "," +
|
|
515
|
+
set += "," + escapeId(k) + " = " + val;
|
|
507
516
|
}
|
|
508
517
|
}
|
|
509
518
|
return set.replace(",", "");
|
|
@@ -516,13 +525,18 @@ Sql.prototype.toSet = function(obj) {
|
|
|
516
525
|
*/
|
|
517
526
|
Sql.prototype.toAddSql = function(item) {
|
|
518
527
|
var key = "";
|
|
519
|
-
var
|
|
528
|
+
var value = "";
|
|
520
529
|
for (var k in item) {
|
|
521
|
-
key += "," +
|
|
522
|
-
val
|
|
530
|
+
key += "," + escapeId(k);
|
|
531
|
+
var val = item[k];
|
|
532
|
+
if (val && typeof(val) == "string") {
|
|
533
|
+
val = val.trim("'");
|
|
534
|
+
}
|
|
535
|
+
value += "," + escape(val);
|
|
523
536
|
}
|
|
524
537
|
var sql = "INSERT INTO `{0}` ({1}) VALUES ({2});";
|
|
525
|
-
return sql.replace("{0}", this.table).replace("{1}", key.replace(",", "")).replace("{2}",
|
|
538
|
+
return sql.replace("{0}", this.table).replace("{1}", key.replace(",", "")).replace("{2}", value.replace(",",
|
|
539
|
+
""));
|
|
526
540
|
};
|
|
527
541
|
|
|
528
542
|
/**
|
|
@@ -755,12 +769,19 @@ Sql.prototype.tpl_query = function(paramDt, sqlDt) {
|
|
|
755
769
|
var sl = "(";
|
|
756
770
|
var len = arr.length;
|
|
757
771
|
for (var i = 0; i < len; i++) {
|
|
758
|
-
|
|
772
|
+
var val = arr[i];
|
|
773
|
+
if (val && typeof(val) == "string") {
|
|
774
|
+
val = val.trim("'");
|
|
775
|
+
}
|
|
776
|
+
sl += " || " + tpl.replaceAll("{0}", escape(val).trim("'"));
|
|
759
777
|
}
|
|
760
778
|
sl = sl.replace(" || ", "") + ")";
|
|
761
779
|
sql += " && " + sl;
|
|
762
780
|
} else {
|
|
763
|
-
|
|
781
|
+
if (value && typeof(value) == "string") {
|
|
782
|
+
value = value.trim("'");
|
|
783
|
+
}
|
|
784
|
+
sql += " && " + tpl.replaceAll("{0}", escape(value).trim("'"));
|
|
764
785
|
}
|
|
765
786
|
} else {
|
|
766
787
|
if (arr.length > 1) {
|
|
@@ -768,22 +789,33 @@ Sql.prototype.tpl_query = function(paramDt, sqlDt) {
|
|
|
768
789
|
var sl = "(";
|
|
769
790
|
var len = arr.length;
|
|
770
791
|
for (var i = 0; i < len; i++) {
|
|
771
|
-
|
|
792
|
+
var val = arr[i];
|
|
793
|
+
if (val && typeof(val) == "string") {
|
|
794
|
+
val = val.trim("'");
|
|
795
|
+
}
|
|
796
|
+
sl += " || " + escapeId(key) + " = " + escape(val);
|
|
772
797
|
}
|
|
773
798
|
sl = sl.replace(" || ", "") + ")";
|
|
774
799
|
sql += " && " + sl;
|
|
775
800
|
} else {
|
|
776
|
-
|
|
801
|
+
if (value && typeof(value) == "string") {
|
|
802
|
+
value = value.trim("'");
|
|
803
|
+
}
|
|
804
|
+
sql += " && " + escapeId(key) + " = " + escape(value);
|
|
777
805
|
}
|
|
778
806
|
}
|
|
779
807
|
}
|
|
780
808
|
} else {
|
|
781
809
|
for (var key in paramDt) {
|
|
782
|
-
var value =
|
|
810
|
+
var value = paramDt[key];
|
|
811
|
+
if (value && typeof(value) == "string") {
|
|
812
|
+
value = value.trim("'");
|
|
813
|
+
}
|
|
814
|
+
value = escape(value);
|
|
783
815
|
if (sqlDt[key]) {
|
|
784
816
|
sql += " && " + sqlDt[key].replaceAll("{0}", value.trim("'"));
|
|
785
817
|
} else {
|
|
786
|
-
sql += " && " +
|
|
818
|
+
sql += " && " + escapeId(key) + " = " + value;
|
|
787
819
|
}
|
|
788
820
|
}
|
|
789
821
|
}
|
|
@@ -800,18 +832,18 @@ Sql.prototype.tpl_query = function(paramDt, sqlDt) {
|
|
|
800
832
|
var sl = "(";
|
|
801
833
|
var len = arr.length;
|
|
802
834
|
for (var i = 0; i < len; i++) {
|
|
803
|
-
sl += " || " +
|
|
835
|
+
sl += " || " + escapeId(key) + " = " + escape(arr[i]);
|
|
804
836
|
}
|
|
805
837
|
sl = sl.replace(" || ", "") + ")";
|
|
806
838
|
sql += " && " + sl;
|
|
807
839
|
} else {
|
|
808
|
-
sql += " && " +
|
|
840
|
+
sql += " && " + escapeId(key) + " = " + escape(value);
|
|
809
841
|
}
|
|
810
842
|
}
|
|
811
843
|
} else {
|
|
812
844
|
// 直接拼接
|
|
813
845
|
for (var key in paramDt) {
|
|
814
|
-
sql += " && " +
|
|
846
|
+
sql += " && " + escapeId(key) + " = " + escape(paramDt[key]);
|
|
815
847
|
}
|
|
816
848
|
}
|
|
817
849
|
}
|
|
@@ -828,19 +860,19 @@ Sql.prototype.tpl_body = function(paramDt, sqlDt) {
|
|
|
828
860
|
var sql = "";
|
|
829
861
|
if (!sqlDt || sqlDt.length === 0) {
|
|
830
862
|
for (var key in paramDt) {
|
|
831
|
-
sql += "
|
|
863
|
+
sql += ", " + escapeId(key) + " = " + escape(val[key]);
|
|
832
864
|
}
|
|
833
865
|
} else {
|
|
834
866
|
for (var key in paramDt) {
|
|
835
|
-
var value =
|
|
867
|
+
var value = escape(paramDt[key]);
|
|
836
868
|
if (sqlDt[key]) {
|
|
837
|
-
sql += "
|
|
869
|
+
sql += ", " + sqlDt[key].replace("{0}", value).replace('+ -', '- ').replace('- -', '+ ');
|
|
838
870
|
} else {
|
|
839
|
-
sql += "
|
|
871
|
+
sql += ", " + escapeId(key) + " = " + value;
|
|
840
872
|
}
|
|
841
873
|
}
|
|
842
874
|
}
|
|
843
|
-
return sql.replace("
|
|
875
|
+
return sql.replace(", ", "");
|
|
844
876
|
};
|
|
845
877
|
|
|
846
878
|
/**
|
|
@@ -892,7 +924,7 @@ Sql.prototype.getObj = async function(query, sort, view, like) {
|
|
|
892
924
|
var key = this.key;
|
|
893
925
|
if (key) {
|
|
894
926
|
if (view && view.indexOf(key) === -1 && view.indexOf('*') === -1) {
|
|
895
|
-
view += "," +
|
|
927
|
+
view += "," + escapeId(key);
|
|
896
928
|
}
|
|
897
929
|
}
|
|
898
930
|
if (like === undefined) {
|
|
@@ -912,4 +944,4 @@ Sql.prototype.getObj = async function(query, sort, view, like) {
|
|
|
912
944
|
}
|
|
913
945
|
};
|
|
914
946
|
|
|
915
|
-
module.exports = Sql;
|
|
947
|
+
module.exports = Sql;
|
package/test.js
CHANGED
|
@@ -87,8 +87,19 @@ async function test_tpl_get() {
|
|
|
87
87
|
db.size = 5;
|
|
88
88
|
var query_str = db.tpl_query(query, tpl.query);
|
|
89
89
|
ret = await db.getCountSql(query_str, "`user_id` desc", "*");
|
|
90
|
+
|
|
90
91
|
console.log('查询结果', ret);
|
|
91
92
|
console.log('SQL语句', db.sql);
|
|
93
|
+
|
|
94
|
+
// var o = ret.list[0];
|
|
95
|
+
// console.log("查询结果", o);
|
|
96
|
+
// // o.user_id = await db.count() + 1;
|
|
97
|
+
// o.gm = "'5";
|
|
98
|
+
// // await db.add(o);
|
|
99
|
+
// await db.addOrSet({
|
|
100
|
+
// user_id: o.user_id
|
|
101
|
+
// }, o);
|
|
102
|
+
// console.log(db.sql);
|
|
92
103
|
|
|
93
104
|
ret = await db.groupSumSql(query_str, "mc", "gm");
|
|
94
105
|
console.log('求和查询结果', ret);
|