mm_mysql 1.8.1 → 1.8.3
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 +60 -48
- package/test.js +23 -2
package/package.json
CHANGED
package/sql.js
CHANGED
|
@@ -250,6 +250,7 @@ Sql.prototype.getSql = function(where, sort, view) {
|
|
|
250
250
|
* @description 添加或修改
|
|
251
251
|
* @param {String} where 查询条件
|
|
252
252
|
* @param {String} set 修改的键值
|
|
253
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
253
254
|
* @return {Promise|Object} 执行结果
|
|
254
255
|
*/
|
|
255
256
|
Sql.prototype.addOrSetSql = async function(where, set, like) {
|
|
@@ -257,7 +258,7 @@ Sql.prototype.addOrSetSql = async function(where, set, like) {
|
|
|
257
258
|
return -1;
|
|
258
259
|
}
|
|
259
260
|
if (typeof(where) === "object") {
|
|
260
|
-
where = await this.toWhere(where);
|
|
261
|
+
where = await this.toWhere(where, like);
|
|
261
262
|
}
|
|
262
263
|
var count = await this.countSql(where);
|
|
263
264
|
if (count === 0) {
|
|
@@ -412,10 +413,11 @@ Sql.prototype.groupCountSql = async function(where, groupby, view, sort) {
|
|
|
412
413
|
* @param {String} groupby 分组的字段
|
|
413
414
|
* @param {String} view 返回的字段
|
|
414
415
|
* @param {String} sort 排序方式
|
|
416
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
415
417
|
* @return {Promise|Object} 查询到的内容列表和符合条件总数
|
|
416
418
|
*/
|
|
417
|
-
Sql.prototype.groupMath = async function(query, groupby, view, sort, method) {
|
|
418
|
-
var where = this.toWhere(query,
|
|
419
|
+
Sql.prototype.groupMath = async function(query, groupby, view, sort, method, like) {
|
|
420
|
+
var where = this.toWhere(query, like);
|
|
419
421
|
return await this.groupMathSql(where, groupby, view, sort, method);
|
|
420
422
|
};
|
|
421
423
|
|
|
@@ -458,7 +460,7 @@ Sql.prototype.groupCount = async function(query, groupby, view, sort) {
|
|
|
458
460
|
/**
|
|
459
461
|
* @description 转为where语句
|
|
460
462
|
* @param {Object} obj 用作拼接的对象
|
|
461
|
-
* @param {Boolean} like 是否使用like匹配,
|
|
463
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
462
464
|
* @return {String} where格式sql语句字符串
|
|
463
465
|
*/
|
|
464
466
|
Sql.prototype.toWhere = function(obj, like) {
|
|
@@ -481,7 +483,7 @@ Sql.prototype.toWhere = function(obj, like) {
|
|
|
481
483
|
where += " and " + escapeId(k.replace('_not', "")) + " != " + val;
|
|
482
484
|
} else if (k.endWith('_has')) {
|
|
483
485
|
var vals = val.trim("'").split(',').map((o) => {
|
|
484
|
-
return
|
|
486
|
+
return "'" + o + "'"
|
|
485
487
|
});
|
|
486
488
|
where += " and " + escapeId(k.replace('_has', "")) + " in (" + vals.join(',') + ")";
|
|
487
489
|
} else if (k.endWith('_like')) {
|
|
@@ -507,7 +509,7 @@ Sql.prototype.toWhere = function(obj, like) {
|
|
|
507
509
|
where += " and " + escapeId(k.replace('_not', "")) + " != " + val;
|
|
508
510
|
} else if (k.endWith('_has')) {
|
|
509
511
|
var vals = val.trim("'").split(',').map((o) => {
|
|
510
|
-
return
|
|
512
|
+
return "'" + o + "'"
|
|
511
513
|
});
|
|
512
514
|
where += " and " + escapeId(k.replace('_has', "")) + " in (" + vals.join(',') + ")";
|
|
513
515
|
} else if (k.endWith('_like')) {
|
|
@@ -570,10 +572,11 @@ Sql.prototype.toAddSql = function(item) {
|
|
|
570
572
|
/**
|
|
571
573
|
* @description 转删除sql语句
|
|
572
574
|
* @param {Object} query 查询键值
|
|
575
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
573
576
|
* @return {String} sql语句
|
|
574
577
|
*/
|
|
575
|
-
Sql.prototype.toDelSql = function(query) {
|
|
576
|
-
var where = this.toWhere(query);
|
|
578
|
+
Sql.prototype.toDelSql = function(query, like) {
|
|
579
|
+
var where = this.toWhere(query, like);
|
|
577
580
|
var sql = "DELETE FROM `{0}` WHERE {1};";
|
|
578
581
|
return sql.replace("{0}", this.table).replace("{1}", where);
|
|
579
582
|
};
|
|
@@ -582,10 +585,11 @@ Sql.prototype.toDelSql = function(query) {
|
|
|
582
585
|
* @description 转修改sql语句
|
|
583
586
|
* @param {Object} query 查询的键值集合
|
|
584
587
|
* @param {Object} item 修改的键值集合
|
|
588
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
585
589
|
* @return {String} sql语句
|
|
586
590
|
*/
|
|
587
|
-
Sql.prototype.toSetSql = function(query, item) {
|
|
588
|
-
var where = this.toWhere(query);
|
|
591
|
+
Sql.prototype.toSetSql = function(query, item, like) {
|
|
592
|
+
var where = this.toWhere(query, like);
|
|
589
593
|
var set = this.toSet(item);
|
|
590
594
|
var sql = "UPDATE `{0}` SET {1} WHERE {2};";
|
|
591
595
|
return sql.replace("{0}", this.table).replace("{1}", set).replace("{2}", where);
|
|
@@ -596,10 +600,10 @@ Sql.prototype.toSetSql = function(query, item) {
|
|
|
596
600
|
* @param {Object} query 查询键值集合
|
|
597
601
|
* @param {String} sort 排序规则
|
|
598
602
|
* @param {String} view 显示的字段
|
|
599
|
-
* @param {Boolean} like 是否使用like匹配,
|
|
603
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
600
604
|
* @return {String} sql语句
|
|
601
605
|
*/
|
|
602
|
-
Sql.prototype.toGetSql = function(query, sort, view, like
|
|
606
|
+
Sql.prototype.toGetSql = function(query, sort, view, like) {
|
|
603
607
|
var where = this.toWhere(query, like);
|
|
604
608
|
var sql = this.toQuery(where, sort, view);
|
|
605
609
|
return sql;
|
|
@@ -618,10 +622,11 @@ Sql.prototype.add = function(item) {
|
|
|
618
622
|
/**
|
|
619
623
|
* @description 删除数据
|
|
620
624
|
* @param {Object} query 查询条件集合
|
|
625
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
621
626
|
* @return {Promise|Object} 执行结果
|
|
622
627
|
*/
|
|
623
|
-
Sql.prototype.del = function(query) {
|
|
624
|
-
var sql = this.toDelSql(query);
|
|
628
|
+
Sql.prototype.del = function(query, like) {
|
|
629
|
+
var sql = this.toDelSql(query, like);
|
|
625
630
|
return this.exec(sql);
|
|
626
631
|
};
|
|
627
632
|
|
|
@@ -629,10 +634,11 @@ Sql.prototype.del = function(query) {
|
|
|
629
634
|
* @description 修改数据
|
|
630
635
|
* @param {Object} query 查询条件集合
|
|
631
636
|
* @param {Object} item 修改的键值集合
|
|
637
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
632
638
|
* @return {Promise|Object} 执行结果
|
|
633
639
|
*/
|
|
634
|
-
Sql.prototype.set = function(query, item) {
|
|
635
|
-
var sql = this.toSetSql(query, item);
|
|
640
|
+
Sql.prototype.set = function(query, item, like) {
|
|
641
|
+
var sql = this.toSetSql(query, item, like);
|
|
636
642
|
return this.exec(sql);
|
|
637
643
|
};
|
|
638
644
|
|
|
@@ -641,10 +647,10 @@ Sql.prototype.set = function(query, item) {
|
|
|
641
647
|
* @param {Object} query 查询条件
|
|
642
648
|
* @param {String} sort 排序
|
|
643
649
|
* @param {String} view 返回的字段
|
|
644
|
-
* @param {Boolean} like 是否使用like匹配,
|
|
650
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
645
651
|
* @return {Promise|Array} 查询结果
|
|
646
652
|
*/
|
|
647
|
-
Sql.prototype.get = function(query, sort, view, like
|
|
653
|
+
Sql.prototype.get = function(query, sort, view, like) {
|
|
648
654
|
var sql = this.toGetSql(query, sort, view, like);
|
|
649
655
|
return this.run(sql);
|
|
650
656
|
};
|
|
@@ -653,7 +659,7 @@ Sql.prototype.get = function(query, sort, view, like = true) {
|
|
|
653
659
|
* @description 添加或修改
|
|
654
660
|
* @param {Object} where 查询条件集合
|
|
655
661
|
* @param {Object} set 修改的键值
|
|
656
|
-
* @param {Boolean} like 是否使用like匹配,
|
|
662
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
657
663
|
* @return {Promise|Object} 执行结果
|
|
658
664
|
*/
|
|
659
665
|
Sql.prototype.addOrSet = async function(where, set, like) {
|
|
@@ -663,10 +669,10 @@ Sql.prototype.addOrSet = async function(where, set, like) {
|
|
|
663
669
|
/**
|
|
664
670
|
* @description 查询符合结果总数
|
|
665
671
|
* @param {Object} query 查询条件集合
|
|
666
|
-
* @param {Boolean} like 是否使用like匹配,
|
|
672
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
667
673
|
* @return {Promise|Number} 查询结果
|
|
668
674
|
*/
|
|
669
|
-
Sql.prototype.count = function(query, like
|
|
675
|
+
Sql.prototype.count = function(query, like) {
|
|
670
676
|
return this.countSql(this.toWhere(query, like));
|
|
671
677
|
};
|
|
672
678
|
|
|
@@ -675,10 +681,10 @@ Sql.prototype.count = function(query, like = true) {
|
|
|
675
681
|
* @param {Object} query 查询条件
|
|
676
682
|
* @param {String} sort 排序
|
|
677
683
|
* @param {String} view 返回的字段
|
|
678
|
-
* @param {Boolean} like 是否使用like匹配,
|
|
684
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
679
685
|
* @return {Promise|Object} 查询到的内容列表和符合条件总数
|
|
680
686
|
*/
|
|
681
|
-
Sql.prototype.getCount = async function(query, sort, view, like
|
|
687
|
+
Sql.prototype.getCount = async function(query, sort, view, like) {
|
|
682
688
|
return this.getCountSql(this.toWhere(query, like), sort, view);
|
|
683
689
|
};
|
|
684
690
|
|
|
@@ -701,26 +707,28 @@ Sql.prototype.addList = function(list, lock = true) {
|
|
|
701
707
|
/**
|
|
702
708
|
* @description 删除多条数据
|
|
703
709
|
* @param {Array} list 对象数组
|
|
710
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
704
711
|
* @return {Promise|Object} 执行结果
|
|
705
712
|
*/
|
|
706
|
-
Sql.prototype.delList = function(list) {
|
|
713
|
+
Sql.prototype.delList = function(list, like) {
|
|
707
714
|
var sql = "";
|
|
708
715
|
var len = list.length;
|
|
709
716
|
for (var i = 0; i < len; i++) {
|
|
710
|
-
sql += this.toDelSql(list[i].query);
|
|
717
|
+
sql += this.toDelSql(list[i].query, like);
|
|
711
718
|
}
|
|
712
719
|
return this.exec(sql);
|
|
713
720
|
};
|
|
714
721
|
/**
|
|
715
722
|
* @description 修改多条数据
|
|
716
723
|
* @param {Array} list 对象数组
|
|
724
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
717
725
|
* @return {Promise|Object} 执行结果
|
|
718
726
|
*/
|
|
719
|
-
Sql.prototype.setList = function(list) {
|
|
727
|
+
Sql.prototype.setList = function(list, like) {
|
|
720
728
|
var sql = "";
|
|
721
729
|
var len = list.length;
|
|
722
730
|
for (var i = 0; i < len; i++) {
|
|
723
|
-
sql += this.toSetSql(list[i].query, list[i].item);
|
|
731
|
+
sql += this.toSetSql(list[i].query, list[i].item, like);
|
|
724
732
|
}
|
|
725
733
|
return this.exec(sql);
|
|
726
734
|
};
|
|
@@ -913,25 +921,32 @@ Sql.prototype.model = function(model) {
|
|
|
913
921
|
var _this = this;
|
|
914
922
|
return new Proxy(model, {
|
|
915
923
|
set: function(obj, prop, value) {
|
|
916
|
-
if (
|
|
917
|
-
var
|
|
918
|
-
var
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
}
|
|
923
|
-
|
|
924
|
-
|
|
924
|
+
if (_this.key) {
|
|
925
|
+
var query = {};
|
|
926
|
+
var arr = _this.key.split(',');
|
|
927
|
+
for (var i = 0; i < arr.length; i++) {
|
|
928
|
+
var key = arr[i];
|
|
929
|
+
query[key] = obj[key];
|
|
930
|
+
}
|
|
931
|
+
if (typeof(value) === "number") {
|
|
932
|
+
var n = obj[prop];
|
|
933
|
+
var cha = value - n;
|
|
934
|
+
var where = _this.toWhere(query);
|
|
935
|
+
if (cha > 0) {
|
|
936
|
+
_this.setSql(where, "`" + prop + "` = `" +
|
|
937
|
+
prop + "` + " + cha);
|
|
938
|
+
} else if (cha < 0) {
|
|
939
|
+
_this.setSql(where, "`" + prop + "` = `" +
|
|
940
|
+
prop + "` - " + (-cha));
|
|
941
|
+
} else {
|
|
942
|
+
_this.setSql(where, "`" + prop + "` = " +
|
|
943
|
+
value);
|
|
944
|
+
}
|
|
925
945
|
} else {
|
|
926
|
-
|
|
927
|
-
|
|
946
|
+
var set = {};
|
|
947
|
+
set[prop] = value;
|
|
948
|
+
_this.set(query, set, false);
|
|
928
949
|
}
|
|
929
|
-
} else {
|
|
930
|
-
var query = {};
|
|
931
|
-
query[_this.key] = obj[_this.key];
|
|
932
|
-
var set = {};
|
|
933
|
-
set[prop] = value;
|
|
934
|
-
_this.set(query, set);
|
|
935
950
|
}
|
|
936
951
|
obj[prop] = value;
|
|
937
952
|
return obj;
|
|
@@ -944,7 +959,7 @@ Sql.prototype.model = function(model) {
|
|
|
944
959
|
* @param {Object} query 查询条件
|
|
945
960
|
* @param {String} sort 排序
|
|
946
961
|
* @param {String} view 返回的字段
|
|
947
|
-
* @param {Boolean} like
|
|
962
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
948
963
|
* @return {Promise|Array} 查询结果
|
|
949
964
|
*/
|
|
950
965
|
Sql.prototype.getObj = async function(query, sort, view, like) {
|
|
@@ -956,9 +971,6 @@ Sql.prototype.getObj = async function(query, sort, view, like) {
|
|
|
956
971
|
view += "," + escapeId(key);
|
|
957
972
|
}
|
|
958
973
|
}
|
|
959
|
-
if (like === undefined) {
|
|
960
|
-
like = this.like;
|
|
961
|
-
}
|
|
962
974
|
var sql = this.toGetSql(query, sort, view, like);
|
|
963
975
|
var list = await this.run(sql);
|
|
964
976
|
if (list.length > 0) {
|
package/test.js
CHANGED
|
@@ -84,13 +84,34 @@ async function test() {
|
|
|
84
84
|
"password": "Asd159357"
|
|
85
85
|
});
|
|
86
86
|
sql.open();
|
|
87
|
-
|
|
87
|
+
|
|
88
88
|
db.table = "user_account";
|
|
89
|
+
db.key = "user_id,username";
|
|
90
|
+
var obj = await db.getObj({
|
|
91
|
+
user_id_has: "1"
|
|
92
|
+
});
|
|
93
|
+
obj.vip += 1;
|
|
94
|
+
// obj.vip -= 1;
|
|
95
|
+
console.log("语法", db.sql, obj);
|
|
96
|
+
|
|
97
|
+
obj.nickname = '管理员';
|
|
98
|
+
// obj.vip -= 1;
|
|
99
|
+
console.log("语法2", db.sql, obj);
|
|
100
|
+
|
|
89
101
|
var list = await db.get({
|
|
90
102
|
user_id_has: "1,2,a-3,4,5"
|
|
91
103
|
});
|
|
92
|
-
|
|
93
104
|
console.log("语法", db.sql, list.length);
|
|
105
|
+
|
|
106
|
+
var list = await db.get({
|
|
107
|
+
user_id: "1"
|
|
108
|
+
});
|
|
109
|
+
console.log("查询语法", db.sql, list.length);
|
|
110
|
+
|
|
111
|
+
var list = await db.get({
|
|
112
|
+
user_id: "1"
|
|
113
|
+
}, null, null, true);
|
|
114
|
+
console.log("模糊查询语法", db.sql, list.length);
|
|
94
115
|
}
|
|
95
116
|
test();
|
|
96
117
|
|