mm_mysql 1.8.2 → 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 +38 -30
  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.2",
3
+ "version": "1.8.3",
4
4
  "description": "这是超级美眉mysql帮助函数模块,用于便捷操作mysql,使用await方式,可以避免嵌套函数",
5
5
  "main": "index.js",
6
6
  "scripts": {
package/sql.js CHANGED
@@ -483,7 +483,7 @@ Sql.prototype.toWhere = function(obj, like) {
483
483
  where += " and " + escapeId(k.replace('_not', "")) + " != " + val;
484
484
  } else if (k.endWith('_has')) {
485
485
  var vals = val.trim("'").split(',').map((o) => {
486
- return "'" + o + "'"
486
+ return "'" + o + "'"
487
487
  });
488
488
  where += " and " + escapeId(k.replace('_has', "")) + " in (" + vals.join(',') + ")";
489
489
  } else if (k.endWith('_like')) {
@@ -509,7 +509,7 @@ Sql.prototype.toWhere = function(obj, like) {
509
509
  where += " and " + escapeId(k.replace('_not', "")) + " != " + val;
510
510
  } else if (k.endWith('_has')) {
511
511
  var vals = val.trim("'").split(',').map((o) => {
512
- return "'" + o + "'"
512
+ return "'" + o + "'"
513
513
  });
514
514
  where += " and " + escapeId(k.replace('_has', "")) + " in (" + vals.join(',') + ")";
515
515
  } else if (k.endWith('_like')) {
@@ -622,10 +622,11 @@ Sql.prototype.add = function(item) {
622
622
  /**
623
623
  * @description 删除数据
624
624
  * @param {Object} query 查询条件集合
625
+ * @param {Boolean} like 是否使用like匹配, 为空使用默认方式
625
626
  * @return {Promise|Object} 执行结果
626
627
  */
627
- Sql.prototype.del = function(query) {
628
- var sql = this.toDelSql(query);
628
+ Sql.prototype.del = function(query, like) {
629
+ var sql = this.toDelSql(query, like);
629
630
  return this.exec(sql);
630
631
  };
631
632
 
@@ -633,10 +634,11 @@ Sql.prototype.del = function(query) {
633
634
  * @description 修改数据
634
635
  * @param {Object} query 查询条件集合
635
636
  * @param {Object} item 修改的键值集合
637
+ * @param {Boolean} like 是否使用like匹配, 为空使用默认方式
636
638
  * @return {Promise|Object} 执行结果
637
639
  */
638
- Sql.prototype.set = function(query, item) {
639
- var sql = this.toSetSql(query, item);
640
+ Sql.prototype.set = function(query, item, like) {
641
+ var sql = this.toSetSql(query, item, like);
640
642
  return this.exec(sql);
641
643
  };
642
644
 
@@ -705,26 +707,28 @@ Sql.prototype.addList = function(list, lock = true) {
705
707
  /**
706
708
  * @description 删除多条数据
707
709
  * @param {Array} list 对象数组
710
+ * @param {Boolean} like 是否使用like匹配, 为空使用默认方式
708
711
  * @return {Promise|Object} 执行结果
709
712
  */
710
- Sql.prototype.delList = function(list) {
713
+ Sql.prototype.delList = function(list, like) {
711
714
  var sql = "";
712
715
  var len = list.length;
713
716
  for (var i = 0; i < len; i++) {
714
- sql += this.toDelSql(list[i].query);
717
+ sql += this.toDelSql(list[i].query, like);
715
718
  }
716
719
  return this.exec(sql);
717
720
  };
718
721
  /**
719
722
  * @description 修改多条数据
720
723
  * @param {Array} list 对象数组
724
+ * @param {Boolean} like 是否使用like匹配, 为空使用默认方式
721
725
  * @return {Promise|Object} 执行结果
722
726
  */
723
- Sql.prototype.setList = function(list) {
727
+ Sql.prototype.setList = function(list, like) {
724
728
  var sql = "";
725
729
  var len = list.length;
726
730
  for (var i = 0; i < len; i++) {
727
- sql += this.toSetSql(list[i].query, list[i].item);
731
+ sql += this.toSetSql(list[i].query, list[i].item, like);
728
732
  }
729
733
  return this.exec(sql);
730
734
  };
@@ -917,25 +921,32 @@ Sql.prototype.model = function(model) {
917
921
  var _this = this;
918
922
  return new Proxy(model, {
919
923
  set: function(obj, prop, value) {
920
- if (typeof(value) === "number") {
921
- var n = obj[prop];
922
- var cha = value - n;
923
- if (cha > 0) {
924
- _this.setSql("`" + _this.key + "`=" + obj[_this.key], "`" + prop + "`=`" +
925
- prop + "` + " + cha);
926
- } else if (cha < 0) {
927
- _this.setSql("`" + _this.key + "`=" + obj[_this.key], "`" + prop + "`=`" +
928
- 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
+ }
929
945
  } else {
930
- _this.setSql("`" + _this.key + "`=" + obj[_this.key], "`" + prop + "`=" +
931
- value);
946
+ var set = {};
947
+ set[prop] = value;
948
+ _this.set(query, set, false);
932
949
  }
933
- } else {
934
- var query = {};
935
- query[_this.key] = obj[_this.key];
936
- var set = {};
937
- set[prop] = value;
938
- _this.set(query, set);
939
950
  }
940
951
  obj[prop] = value;
941
952
  return obj;
@@ -960,9 +971,6 @@ Sql.prototype.getObj = async function(query, sort, view, like) {
960
971
  view += "," + escapeId(key);
961
972
  }
962
973
  }
963
- if (like === undefined) {
964
- like = this.like;
965
- }
966
974
  var sql = this.toGetSql(query, sort, view, like);
967
975
  var list = await this.run(sql);
968
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