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.
Files changed (3) hide show
  1. package/package.json +1 -1
  2. package/sql.js +60 -48
  3. package/test.js +23 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mm_mysql",
3
- "version": "1.8.1",
3
+ "version": "1.8.3",
4
4
  "description": "这是超级美眉mysql帮助函数模块,用于便捷操作mysql,使用await方式,可以避免嵌套函数",
5
5
  "main": "index.js",
6
6
  "scripts": {
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, this.like);
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 "'" + o + "'"
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 "'" + o + "'"
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 = true) {
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 = true) {
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 = true) {
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 = true) {
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 (typeof(value) === "number") {
917
- var n = obj[prop];
918
- var cha = value - n;
919
- if (cha > 0) {
920
- _this.setSql("`" + _this.key + "`=" + obj[_this.key], "`" + prop + "`=`" +
921
- prop + "` + " + cha);
922
- } else if (cha < 0) {
923
- _this.setSql("`" + _this.key + "`=" + obj[_this.key], "`" + prop + "`=`" +
924
- prop + "` - " + (-cha));
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
- _this.setSql("`" + _this.key + "`=" + obj[_this.key], "`" + prop + "`=" +
927
- value);
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 是否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