mm_mysql 1.8.5 → 1.8.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/package.json +37 -37
- package/sql.js +263 -131
- package/test.js +57 -0
package/package.json
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "mm_mysql",
|
|
3
|
+
"version": "1.8.6",
|
|
4
|
+
"description": "这是超级美眉mysql帮助函数模块,用于便捷操作mysql,使用await方式,可以避免嵌套函数",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"mm_logs": "^1.1.6",
|
|
8
|
+
"mysql": "^2.18.1"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"test": "node test.js",
|
|
12
|
+
"dev": "nodemon test.js"
|
|
13
|
+
},
|
|
14
|
+
"author": "邱文武",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/qiuwenwu/mm_mysql.git"
|
|
19
|
+
},
|
|
20
|
+
"keywords": [
|
|
21
|
+
"mysql",
|
|
22
|
+
"async",
|
|
23
|
+
"await",
|
|
24
|
+
"promise",
|
|
25
|
+
"add",
|
|
26
|
+
"del",
|
|
27
|
+
"set",
|
|
28
|
+
"get",
|
|
29
|
+
"query",
|
|
30
|
+
"run",
|
|
31
|
+
"exec"
|
|
32
|
+
],
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/qiuwenwu/mm_mysql/issues"
|
|
35
|
+
},
|
|
36
|
+
"homepage": "https://github.com/qiuwenwu/mm_mysql#readme"
|
|
37
|
+
}
|
package/sql.js
CHANGED
|
@@ -15,7 +15,7 @@ const {
|
|
|
15
15
|
*/
|
|
16
16
|
class Sql {
|
|
17
17
|
/**
|
|
18
|
-
*
|
|
18
|
+
* 数据库管理器
|
|
19
19
|
* @param {Function} run 查询函数
|
|
20
20
|
* @param {Function} exec 更改函数
|
|
21
21
|
*/
|
|
@@ -144,7 +144,7 @@ class Sql {
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
/**
|
|
147
|
-
*
|
|
147
|
+
* 清理存储的数据
|
|
148
148
|
*/
|
|
149
149
|
Sql.prototype.clear = async function() {
|
|
150
150
|
this.run = run;
|
|
@@ -162,7 +162,7 @@ Sql.prototype.clear = async function() {
|
|
|
162
162
|
};
|
|
163
163
|
|
|
164
164
|
/**
|
|
165
|
-
*
|
|
165
|
+
* 过滤查询参数
|
|
166
166
|
* @param {Object} query 查询参数
|
|
167
167
|
*/
|
|
168
168
|
Sql.prototype.filter = function(query) {
|
|
@@ -177,7 +177,7 @@ Sql.prototype.filter = function(query) {
|
|
|
177
177
|
};
|
|
178
178
|
|
|
179
179
|
/**
|
|
180
|
-
*
|
|
180
|
+
* 查询条件拼接
|
|
181
181
|
* @param {String} where 查询条件
|
|
182
182
|
* @param {String} sort 排序
|
|
183
183
|
* @param {String} view 返回的字段
|
|
@@ -203,7 +203,7 @@ Sql.prototype.toQuery = function(where, sort, view) {
|
|
|
203
203
|
};
|
|
204
204
|
/* === 传字符串参数 === */
|
|
205
205
|
/**
|
|
206
|
-
*
|
|
206
|
+
* 增加数据
|
|
207
207
|
* @param {String} key 用作增加的键集合
|
|
208
208
|
* @param {String} val 用作增加的值集合
|
|
209
209
|
* @return {Promise|Object} 执行结果
|
|
@@ -214,7 +214,7 @@ Sql.prototype.addSql = function(key, val) {
|
|
|
214
214
|
return this.exec(sql);
|
|
215
215
|
};
|
|
216
216
|
/**
|
|
217
|
-
*
|
|
217
|
+
* 删除数据
|
|
218
218
|
* @param {String} where 删除条件
|
|
219
219
|
* @return {Promise|Object} 执行结果
|
|
220
220
|
*/
|
|
@@ -235,7 +235,7 @@ Sql.prototype.setSql = function(where, set) {
|
|
|
235
235
|
return this.exec(sql);
|
|
236
236
|
};
|
|
237
237
|
/**
|
|
238
|
-
*
|
|
238
|
+
* 查询数据
|
|
239
239
|
* @param {String} where 查询条件
|
|
240
240
|
* @param {String} sort 排序
|
|
241
241
|
* @param {String} view 显示的字段
|
|
@@ -247,53 +247,7 @@ Sql.prototype.getSql = function(where, sort, view) {
|
|
|
247
247
|
};
|
|
248
248
|
|
|
249
249
|
/**
|
|
250
|
-
*
|
|
251
|
-
* @param {String} where 查询条件
|
|
252
|
-
* @param {String} set 修改的键值
|
|
253
|
-
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
254
|
-
* @return {Promise|Object} 执行结果
|
|
255
|
-
*/
|
|
256
|
-
Sql.prototype.addOrSetSql = async function(where, set, like) {
|
|
257
|
-
if (!where || !set) {
|
|
258
|
-
return -1;
|
|
259
|
-
}
|
|
260
|
-
if (typeof(where) === "object") {
|
|
261
|
-
where = await this.toWhere(where, like);
|
|
262
|
-
}
|
|
263
|
-
var count = await this.countSql(where);
|
|
264
|
-
if (count === 0) {
|
|
265
|
-
var key = "";
|
|
266
|
-
var value = "";
|
|
267
|
-
if (typeof(set) === "string") {
|
|
268
|
-
var arr = set.split(",");
|
|
269
|
-
for (var i = 0; i < arr.length; i++) {
|
|
270
|
-
var o = arr[i];
|
|
271
|
-
var ar = o.split('=');
|
|
272
|
-
if (ar.length === 2) {
|
|
273
|
-
key += "," + ar[0];
|
|
274
|
-
value += "," + ar[1];
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
} else {
|
|
278
|
-
for (var k in set) {
|
|
279
|
-
key += "," + escapeId(k);
|
|
280
|
-
var val = set[k];
|
|
281
|
-
if (val && typeof(val) === "string") {
|
|
282
|
-
val = val.trim("'");
|
|
283
|
-
}
|
|
284
|
-
value += "," + escape(val);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
return await this.addSql(key.replace(",", ""), value.replace(",", ""));
|
|
288
|
-
}
|
|
289
|
-
if (typeof(set) === "object") {
|
|
290
|
-
set = await this.toSet(set);
|
|
291
|
-
}
|
|
292
|
-
return await this.setSql(where, set);
|
|
293
|
-
};
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* @description 查询符合结果总数
|
|
250
|
+
* 查询符合结果总数
|
|
297
251
|
* @param {String} where 查询条件
|
|
298
252
|
* @return {Promise|Number} 返回结果总数
|
|
299
253
|
*/
|
|
@@ -311,7 +265,7 @@ Sql.prototype.countSql = async function(where) {
|
|
|
311
265
|
};
|
|
312
266
|
|
|
313
267
|
/**
|
|
314
|
-
*
|
|
268
|
+
* 查询数据并返回符合条件总数
|
|
315
269
|
* @param {String} where 查询条件
|
|
316
270
|
* @param {String} sort 排序
|
|
317
271
|
* @param {String} view 返回的字段
|
|
@@ -331,7 +285,7 @@ Sql.prototype.getCountSql = async function(where, sort, view) {
|
|
|
331
285
|
};
|
|
332
286
|
|
|
333
287
|
/**
|
|
334
|
-
*
|
|
288
|
+
* 统计学
|
|
335
289
|
* @param {String} where 查询条件
|
|
336
290
|
* @param {String} groupby 分组的字段
|
|
337
291
|
* @param {String} view 返回的字段
|
|
@@ -373,7 +327,7 @@ Sql.prototype.groupMathSql = async function(where, groupby, view, sort, method)
|
|
|
373
327
|
|
|
374
328
|
|
|
375
329
|
/**
|
|
376
|
-
*
|
|
330
|
+
* 分组求平均值
|
|
377
331
|
* @param {String} where 查询条件
|
|
378
332
|
* @param {String} groupby 分组的字段
|
|
379
333
|
* @param {String} view 返回的字段
|
|
@@ -385,7 +339,7 @@ Sql.prototype.groupAvgSql = async function(where, groupby, view, sort) {
|
|
|
385
339
|
};
|
|
386
340
|
|
|
387
341
|
/**
|
|
388
|
-
*
|
|
342
|
+
* 分组合计数值
|
|
389
343
|
* @param {String} where 查询条件
|
|
390
344
|
* @param {String} groupby 分组的字段
|
|
391
345
|
* @param {String} view 返回的字段
|
|
@@ -397,7 +351,7 @@ Sql.prototype.groupSumSql = async function(where, groupby, view, sort) {
|
|
|
397
351
|
};
|
|
398
352
|
|
|
399
353
|
/**
|
|
400
|
-
*
|
|
354
|
+
* 分组合计不同条数
|
|
401
355
|
* @param {String} where 查询条件
|
|
402
356
|
* @param {String} groupby 分组的字段
|
|
403
357
|
* @param {String} view 返回的字段
|
|
@@ -408,7 +362,7 @@ Sql.prototype.groupCountSql = async function(where, groupby, view, sort) {
|
|
|
408
362
|
};
|
|
409
363
|
|
|
410
364
|
/**
|
|
411
|
-
*
|
|
365
|
+
* 统计学
|
|
412
366
|
* @param {Object} query 查询条件
|
|
413
367
|
* @param {String} groupby 分组的字段
|
|
414
368
|
* @param {String} view 返回的字段
|
|
@@ -422,7 +376,7 @@ Sql.prototype.groupMath = async function(query, groupby, view, sort, method, lik
|
|
|
422
376
|
};
|
|
423
377
|
|
|
424
378
|
/**
|
|
425
|
-
*
|
|
379
|
+
* 分组求平均值
|
|
426
380
|
* @param {Object} query 查询条件
|
|
427
381
|
* @param {String} groupby 分组的字段
|
|
428
382
|
* @param {String} view 返回的字段
|
|
@@ -434,7 +388,7 @@ Sql.prototype.groupAvg = async function(query, groupby, view, sort) {
|
|
|
434
388
|
};
|
|
435
389
|
|
|
436
390
|
/**
|
|
437
|
-
*
|
|
391
|
+
* 分组合计数值
|
|
438
392
|
* @param {Object} query 查询条件
|
|
439
393
|
* @param {String} groupby 分组的字段
|
|
440
394
|
* @param {String} view 返回的字段
|
|
@@ -446,7 +400,7 @@ Sql.prototype.groupSum = async function(query, groupby, view, sort) {
|
|
|
446
400
|
};
|
|
447
401
|
|
|
448
402
|
/**
|
|
449
|
-
*
|
|
403
|
+
* 分组合计不同条数
|
|
450
404
|
* @param {Object} query 查询条件
|
|
451
405
|
* @param {String} groupby 分组的字段
|
|
452
406
|
* @param {String} view 返回的字段
|
|
@@ -458,7 +412,7 @@ Sql.prototype.groupCount = async function(query, groupby, view, sort) {
|
|
|
458
412
|
|
|
459
413
|
/* === sql语句拼接函数 === */
|
|
460
414
|
/**
|
|
461
|
-
*
|
|
415
|
+
* 转为where语句
|
|
462
416
|
* @param {Object} obj 用作拼接的对象
|
|
463
417
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
464
418
|
* @return {String} where格式sql语句字符串
|
|
@@ -523,7 +477,7 @@ Sql.prototype.toWhere = function(obj, like) {
|
|
|
523
477
|
};
|
|
524
478
|
|
|
525
479
|
/**
|
|
526
|
-
*
|
|
480
|
+
* 转为set语句
|
|
527
481
|
* @param {Object} obj 用作拼接的对象
|
|
528
482
|
* @return {String} set格式sql语句字符串
|
|
529
483
|
*/
|
|
@@ -549,7 +503,7 @@ Sql.prototype.toSet = function(obj) {
|
|
|
549
503
|
};
|
|
550
504
|
|
|
551
505
|
/**
|
|
552
|
-
*
|
|
506
|
+
* 转添加sql语句
|
|
553
507
|
* @param {Object} item 用作添加的键值
|
|
554
508
|
* @return {String} sql语句
|
|
555
509
|
*/
|
|
@@ -570,7 +524,7 @@ Sql.prototype.toAddSql = function(item) {
|
|
|
570
524
|
};
|
|
571
525
|
|
|
572
526
|
/**
|
|
573
|
-
*
|
|
527
|
+
* 转删除sql语句
|
|
574
528
|
* @param {Object} query 查询键值
|
|
575
529
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
576
530
|
* @return {String} sql语句
|
|
@@ -582,7 +536,7 @@ Sql.prototype.toDelSql = function(query, like) {
|
|
|
582
536
|
};
|
|
583
537
|
|
|
584
538
|
/**
|
|
585
|
-
*
|
|
539
|
+
* 转修改sql语句
|
|
586
540
|
* @param {Object} query 查询的键值集合
|
|
587
541
|
* @param {Object} item 修改的键值集合
|
|
588
542
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
@@ -596,7 +550,7 @@ Sql.prototype.toSetSql = function(query, item, like) {
|
|
|
596
550
|
};
|
|
597
551
|
|
|
598
552
|
/**
|
|
599
|
-
*
|
|
553
|
+
* 转查询sql语句
|
|
600
554
|
* @param {Object} query 查询键值集合
|
|
601
555
|
* @param {String} sort 排序规则
|
|
602
556
|
* @param {String} view 显示的字段
|
|
@@ -610,64 +564,273 @@ Sql.prototype.toGetSql = function(query, sort, view, like) {
|
|
|
610
564
|
};
|
|
611
565
|
/* === 传入对象操作 === */
|
|
612
566
|
/**
|
|
613
|
-
*
|
|
614
|
-
* @param {Object}
|
|
567
|
+
* 增加数据
|
|
568
|
+
* @param {Object} body 添加的对象
|
|
615
569
|
* @return {Promise|Object} 执行结果
|
|
616
570
|
*/
|
|
617
|
-
Sql.prototype.add = function(
|
|
618
|
-
|
|
619
|
-
|
|
571
|
+
Sql.prototype.add = async function(body) {
|
|
572
|
+
await $.eventer.run("mysql_add_before:" + this.table, {
|
|
573
|
+
body
|
|
574
|
+
});
|
|
575
|
+
var sql = this.toAddSql(body);
|
|
576
|
+
var bl = await this.exec(sql);
|
|
577
|
+
await $.eventer.run("mysql_add_after:" + this.table, {
|
|
578
|
+
body,
|
|
579
|
+
sql: this.sql,
|
|
580
|
+
error: this.error,
|
|
581
|
+
bl
|
|
582
|
+
});
|
|
583
|
+
return bl
|
|
620
584
|
};
|
|
621
585
|
|
|
622
586
|
/**
|
|
623
|
-
*
|
|
587
|
+
* 删除数据
|
|
624
588
|
* @param {Object} query 查询条件集合
|
|
625
589
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
626
590
|
* @return {Promise|Object} 执行结果
|
|
627
591
|
*/
|
|
628
|
-
Sql.prototype.del = function(query, like) {
|
|
592
|
+
Sql.prototype.del = async function(query, like) {
|
|
593
|
+
await $.eventer.run("mysql_del_before:" + this.table, {
|
|
594
|
+
query,
|
|
595
|
+
like
|
|
596
|
+
});
|
|
629
597
|
var sql = this.toDelSql(query, like);
|
|
630
|
-
|
|
598
|
+
var bl = await this.exec(sql);
|
|
599
|
+
await $.eventer.run("mysql_del_after:" + this.table, {
|
|
600
|
+
query,
|
|
601
|
+
like,
|
|
602
|
+
sql: this.sql,
|
|
603
|
+
error: this.error,
|
|
604
|
+
bl
|
|
605
|
+
});
|
|
606
|
+
return bl
|
|
631
607
|
};
|
|
632
608
|
|
|
633
609
|
/**
|
|
634
|
-
*
|
|
610
|
+
* 修改数据
|
|
635
611
|
* @param {Object} query 查询条件集合
|
|
636
|
-
* @param {Object}
|
|
612
|
+
* @param {Object} body 修改的键值集合
|
|
637
613
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
638
614
|
* @return {Promise|Object} 执行结果
|
|
639
615
|
*/
|
|
640
|
-
Sql.prototype.set = function(query,
|
|
641
|
-
|
|
642
|
-
|
|
616
|
+
Sql.prototype.set = async function(query, body, like) {
|
|
617
|
+
await $.eventer.run("mysql_set_before:" + this.table, {
|
|
618
|
+
query,
|
|
619
|
+
body,
|
|
620
|
+
like,
|
|
621
|
+
page: this.page,
|
|
622
|
+
size: this.size
|
|
623
|
+
});
|
|
624
|
+
var sql = this.toSetSql(query, body, like);
|
|
625
|
+
var bl = await this.exec(sql);
|
|
626
|
+
await $.eventer.run("mysql_set_after:" + this.table, {
|
|
627
|
+
query,
|
|
628
|
+
body,
|
|
629
|
+
like,
|
|
630
|
+
page: this.page,
|
|
631
|
+
size: this.size,
|
|
632
|
+
sql: this.sql,
|
|
633
|
+
error: this.error,
|
|
634
|
+
bl
|
|
635
|
+
});
|
|
636
|
+
return bl
|
|
643
637
|
};
|
|
644
638
|
|
|
645
639
|
/**
|
|
646
|
-
*
|
|
640
|
+
* 添加或修改
|
|
641
|
+
* @param {String} where 查询条件
|
|
642
|
+
* @param {String} set 修改的键值
|
|
643
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
644
|
+
* @return {Promise|Object} 执行结果
|
|
645
|
+
*/
|
|
646
|
+
Sql.prototype.addOrSetSql = async function(where, set, like) {
|
|
647
|
+
if (!where || !set) {
|
|
648
|
+
return -1;
|
|
649
|
+
}
|
|
650
|
+
var query = where;
|
|
651
|
+
var body = set;
|
|
652
|
+
if (typeof(where) === "object") {
|
|
653
|
+
where = await this.toWhere(where, like);
|
|
654
|
+
}
|
|
655
|
+
var count = await this.countSql(where);
|
|
656
|
+
if (count === 0) {
|
|
657
|
+
var key = "";
|
|
658
|
+
var value = "";
|
|
659
|
+
if (typeof(set) === "string") {
|
|
660
|
+
var arr = set.split(",");
|
|
661
|
+
for (var i = 0; i < arr.length; i++) {
|
|
662
|
+
var o = arr[i];
|
|
663
|
+
var ar = o.split('=');
|
|
664
|
+
if (ar.length === 2) {
|
|
665
|
+
key += "," + ar[0];
|
|
666
|
+
value += "," + ar[1];
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
} else {
|
|
670
|
+
if (typeof(body) === "object") {
|
|
671
|
+
await $.eventer.run("mysql_add_before:" + this.table, {
|
|
672
|
+
body
|
|
673
|
+
});
|
|
674
|
+
}
|
|
675
|
+
for (var k in set) {
|
|
676
|
+
key += "," + escapeId(k);
|
|
677
|
+
var val = set[k];
|
|
678
|
+
if (val && typeof(val) === "string") {
|
|
679
|
+
val = val.trim("'");
|
|
680
|
+
}
|
|
681
|
+
value += "," + escape(val);
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
var bl = await this.addSql(key.replace(",", ""), value.replace(",", ""));
|
|
685
|
+
if (typeof(body) === "object") {
|
|
686
|
+
await $.eventer.run("mysql_add_after:" + this.table, {
|
|
687
|
+
body,
|
|
688
|
+
sql: this.sql,
|
|
689
|
+
error: this.error,
|
|
690
|
+
bl
|
|
691
|
+
});
|
|
692
|
+
}
|
|
693
|
+
return bl
|
|
694
|
+
}
|
|
695
|
+
|
|
696
|
+
if (typeof(set) === "object") {
|
|
697
|
+
await $.eventer.run("mysql_set_before:" + this.table, {
|
|
698
|
+
query,
|
|
699
|
+
body,
|
|
700
|
+
like,
|
|
701
|
+
page: this.page,
|
|
702
|
+
size: this.size,
|
|
703
|
+
sql: this.sql
|
|
704
|
+
});
|
|
705
|
+
set = await this.toSet(set);
|
|
706
|
+
}
|
|
707
|
+
var bl1 = await this.setSql(where, set);
|
|
708
|
+
if (typeof(body) === "object") {
|
|
709
|
+
await $.eventer.run("mysql_set_after:" + this.table, {
|
|
710
|
+
query,
|
|
711
|
+
body,
|
|
712
|
+
like,
|
|
713
|
+
page: this.page,
|
|
714
|
+
size: this.size,
|
|
715
|
+
sql: this.sql,
|
|
716
|
+
error: this.error,
|
|
717
|
+
bl: bl1
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
return bl1
|
|
721
|
+
};
|
|
722
|
+
|
|
723
|
+
/**
|
|
724
|
+
* 查询数据
|
|
647
725
|
* @param {Object} query 查询条件
|
|
648
726
|
* @param {String} sort 排序
|
|
649
727
|
* @param {String} view 返回的字段
|
|
650
728
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
651
729
|
* @return {Promise|Array} 查询结果
|
|
652
730
|
*/
|
|
653
|
-
Sql.prototype.get = function(query, sort, view, like) {
|
|
731
|
+
Sql.prototype.get = async function(query, sort, view, like) {
|
|
732
|
+
await $.eventer.run("mysql_get_before:" + this.table, {
|
|
733
|
+
query,
|
|
734
|
+
sort,
|
|
735
|
+
view,
|
|
736
|
+
like,
|
|
737
|
+
page: this.page,
|
|
738
|
+
size: this.size
|
|
739
|
+
});
|
|
654
740
|
var sql = this.toGetSql(query, sort, view, like);
|
|
655
|
-
|
|
741
|
+
var list = await this.run(sql);
|
|
742
|
+
await $.eventer.run("mysql_get_after:" + this.table, {
|
|
743
|
+
query,
|
|
744
|
+
sort,
|
|
745
|
+
view,
|
|
746
|
+
like,
|
|
747
|
+
page: this.page,
|
|
748
|
+
size: this.size,
|
|
749
|
+
sql: this.sql,
|
|
750
|
+
error: this.error,
|
|
751
|
+
list
|
|
752
|
+
});
|
|
753
|
+
return list
|
|
754
|
+
};
|
|
755
|
+
|
|
756
|
+
/**
|
|
757
|
+
* 查询一条数据
|
|
758
|
+
* @param {Object} query 查询条件
|
|
759
|
+
* @param {String} sort 排序
|
|
760
|
+
* @param {String} view 返回的字段
|
|
761
|
+
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
762
|
+
* @return {Promise|Array} 查询结果
|
|
763
|
+
*/
|
|
764
|
+
Sql.prototype.getObj = async function(query, sort, view, like) {
|
|
765
|
+
await $.eventer.run("mysql_getObj_before:" + this.table, {
|
|
766
|
+
query,
|
|
767
|
+
sort,
|
|
768
|
+
view,
|
|
769
|
+
like
|
|
770
|
+
});
|
|
771
|
+
|
|
772
|
+
this.page = 1;
|
|
773
|
+
this.size = 1;
|
|
774
|
+
var key = this.key;
|
|
775
|
+
if (key) {
|
|
776
|
+
if (view && view.indexOf(key) === -1 && view.indexOf('*') === -1) {
|
|
777
|
+
view += "," + escapeId(key);
|
|
778
|
+
}
|
|
779
|
+
}
|
|
780
|
+
var sql = this.toGetSql(query, sort, view, like);
|
|
781
|
+
var list = await this.run(sql);
|
|
782
|
+
|
|
783
|
+
var obj = null;
|
|
784
|
+
if (list.length > 0) {
|
|
785
|
+
obj = list[0];
|
|
786
|
+
if (key) {
|
|
787
|
+
obj = this.model(obj);
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
await $.eventer.run("mysql_getObj_after:" + this.table, {
|
|
792
|
+
query,
|
|
793
|
+
sort,
|
|
794
|
+
view,
|
|
795
|
+
like,
|
|
796
|
+
sql: this.sql,
|
|
797
|
+
error: this.error,
|
|
798
|
+
obj
|
|
799
|
+
});
|
|
800
|
+
return obj;
|
|
656
801
|
};
|
|
657
802
|
|
|
658
803
|
/**
|
|
659
|
-
*
|
|
660
|
-
* @param {Object}
|
|
804
|
+
* 添加或修改
|
|
805
|
+
* @param {Object} query 查询条件集合
|
|
661
806
|
* @param {Object} set 修改的键值
|
|
662
807
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
663
808
|
* @return {Promise|Object} 执行结果
|
|
664
809
|
*/
|
|
665
|
-
Sql.prototype.addOrSet = async function(
|
|
666
|
-
|
|
810
|
+
Sql.prototype.addOrSet = async function(query, set, like) {
|
|
811
|
+
await $.eventer.run("mysql_addOrSet_before:" + this.table, {
|
|
812
|
+
query,
|
|
813
|
+
set,
|
|
814
|
+
like,
|
|
815
|
+
page: this.page,
|
|
816
|
+
size: this.size
|
|
817
|
+
});
|
|
818
|
+
var bl = await this.addOrSetSql(query, set, like);
|
|
819
|
+
await $.eventer.run("mysql_addOrSet_after:" + this.table, {
|
|
820
|
+
query,
|
|
821
|
+
set,
|
|
822
|
+
like,
|
|
823
|
+
page: this.page,
|
|
824
|
+
size: this.size,
|
|
825
|
+
sql: this.sql,
|
|
826
|
+
error: this.error,
|
|
827
|
+
bl
|
|
828
|
+
});
|
|
829
|
+
return bl
|
|
667
830
|
};
|
|
668
831
|
|
|
669
832
|
/**
|
|
670
|
-
*
|
|
833
|
+
* 查询符合结果总数
|
|
671
834
|
* @param {Object} query 查询条件集合
|
|
672
835
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
673
836
|
* @return {Promise|Number} 查询结果
|
|
@@ -677,7 +840,7 @@ Sql.prototype.count = function(query, like) {
|
|
|
677
840
|
};
|
|
678
841
|
|
|
679
842
|
/**
|
|
680
|
-
*
|
|
843
|
+
* 查询数据并返回符合条件总数
|
|
681
844
|
* @param {Object} query 查询条件
|
|
682
845
|
* @param {String} sort 排序
|
|
683
846
|
* @param {String} view 返回的字段
|
|
@@ -690,7 +853,7 @@ Sql.prototype.getCount = async function(query, sort, view, like) {
|
|
|
690
853
|
|
|
691
854
|
/* === 传入数组操作 === */
|
|
692
855
|
/**
|
|
693
|
-
*
|
|
856
|
+
* 添加多条数据
|
|
694
857
|
* @param {Array} list 对象数组
|
|
695
858
|
* @param {Boolean} lock 是否锁定
|
|
696
859
|
* @return {Promise|Object} 执行结果
|
|
@@ -705,7 +868,7 @@ Sql.prototype.addList = function(list, lock = true) {
|
|
|
705
868
|
return this.exec(sql);
|
|
706
869
|
};
|
|
707
870
|
/**
|
|
708
|
-
*
|
|
871
|
+
* 删除多条数据
|
|
709
872
|
* @param {Array} list 对象数组
|
|
710
873
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
711
874
|
* @return {Promise|Object} 执行结果
|
|
@@ -719,7 +882,7 @@ Sql.prototype.delList = function(list, like) {
|
|
|
719
882
|
return this.exec(sql);
|
|
720
883
|
};
|
|
721
884
|
/**
|
|
722
|
-
*
|
|
885
|
+
* 修改多条数据
|
|
723
886
|
* @param {Array} list 对象数组
|
|
724
887
|
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
725
888
|
* @return {Promise|Object} 执行结果
|
|
@@ -735,7 +898,7 @@ Sql.prototype.setList = function(list, like) {
|
|
|
735
898
|
|
|
736
899
|
/* 辅助类 */
|
|
737
900
|
/**
|
|
738
|
-
*
|
|
901
|
+
* 判断SQL模板是否包含某些参数
|
|
739
902
|
* @param {Object} paramDt 参数集合
|
|
740
903
|
* @param {Object} sqlDt sql模板集合
|
|
741
904
|
* @return {Bool} 有则返回true,没有则返回false
|
|
@@ -753,7 +916,7 @@ Sql.prototype.has_param = function(paramDt, sqlDt) {
|
|
|
753
916
|
};
|
|
754
917
|
|
|
755
918
|
/**
|
|
756
|
-
*
|
|
919
|
+
* 判断某些参数是否没有SQL模板
|
|
757
920
|
* @param {Object} paramDt 参数集合
|
|
758
921
|
* @param {Object} sqlDt sql模板集合
|
|
759
922
|
* @return {Bool} 没有模板则返回名称,都有则返回undefined
|
|
@@ -770,7 +933,7 @@ Sql.prototype.not_param = function(paramDt, sqlDt) {
|
|
|
770
933
|
};
|
|
771
934
|
|
|
772
935
|
/**
|
|
773
|
-
*
|
|
936
|
+
* 过滤参数,仅保留没有sql模板的参数
|
|
774
937
|
* @param {Object} paramDt 参数集合
|
|
775
938
|
* @param {Object} sqlDt sql模板集合
|
|
776
939
|
* @return {Object} 返回过滤后的参数集合
|
|
@@ -786,7 +949,7 @@ Sql.prototype.filter_param = function(paramDt, sqlDt) {
|
|
|
786
949
|
};
|
|
787
950
|
|
|
788
951
|
/**
|
|
789
|
-
*
|
|
952
|
+
* 通过模板拼接查询参数
|
|
790
953
|
* @param {Object} paramDt 参数集合
|
|
791
954
|
* @param {Object} sqlDt 模板集合
|
|
792
955
|
* @return {String} 返回拼接的查询参数
|
|
@@ -888,7 +1051,7 @@ Sql.prototype.tpl_query = function(paramDt, sqlDt) {
|
|
|
888
1051
|
};
|
|
889
1052
|
|
|
890
1053
|
/**
|
|
891
|
-
*
|
|
1054
|
+
* 通过模板拼接修改参数
|
|
892
1055
|
* @param {Object} paramDt 参数集合
|
|
893
1056
|
* @param {Object} sqlDt 模板集合
|
|
894
1057
|
* @return {String} 返回拼接的查询参数
|
|
@@ -913,7 +1076,7 @@ Sql.prototype.tpl_body = function(paramDt, sqlDt) {
|
|
|
913
1076
|
};
|
|
914
1077
|
|
|
915
1078
|
/**
|
|
916
|
-
*
|
|
1079
|
+
* 构建实体模型
|
|
917
1080
|
* @param {Object} obj 模型对象
|
|
918
1081
|
* @return {Object} 返回监听操作的对象
|
|
919
1082
|
*/
|
|
@@ -954,35 +1117,4 @@ Sql.prototype.model = function(model) {
|
|
|
954
1117
|
});
|
|
955
1118
|
};
|
|
956
1119
|
|
|
957
|
-
/**
|
|
958
|
-
* @description 查询一条数据
|
|
959
|
-
* @param {Object} query 查询条件
|
|
960
|
-
* @param {String} sort 排序
|
|
961
|
-
* @param {String} view 返回的字段
|
|
962
|
-
* @param {Boolean} like 是否使用like匹配, 为空使用默认方式
|
|
963
|
-
* @return {Promise|Array} 查询结果
|
|
964
|
-
*/
|
|
965
|
-
Sql.prototype.getObj = async function(query, sort, view, like) {
|
|
966
|
-
this.page = 1;
|
|
967
|
-
this.size = 1;
|
|
968
|
-
var key = this.key;
|
|
969
|
-
if (key) {
|
|
970
|
-
if (view && view.indexOf(key) === -1 && view.indexOf('*') === -1) {
|
|
971
|
-
view += "," + escapeId(key);
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
var sql = this.toGetSql(query, sort, view, like);
|
|
975
|
-
var list = await this.run(sql);
|
|
976
|
-
if (list.length > 0) {
|
|
977
|
-
var obj = list[0];
|
|
978
|
-
if (key) {
|
|
979
|
-
return this.model(obj);
|
|
980
|
-
} else {
|
|
981
|
-
return obj;
|
|
982
|
-
}
|
|
983
|
-
} else {
|
|
984
|
-
return null;
|
|
985
|
-
}
|
|
986
|
-
};
|
|
987
|
-
|
|
988
1120
|
module.exports = Sql;
|
package/test.js
CHANGED
|
@@ -90,6 +90,44 @@ async function test() {
|
|
|
90
90
|
});
|
|
91
91
|
sql.open();
|
|
92
92
|
|
|
93
|
+
// --- 测试事件 ---
|
|
94
|
+
$.eventer.on("mysql_add_before:user_account", function(json) {
|
|
95
|
+
console.log("添加前", json);
|
|
96
|
+
});
|
|
97
|
+
$.eventer.on("mysql_add_after:user_account", function(json) {
|
|
98
|
+
console.log("添加后", json);
|
|
99
|
+
});
|
|
100
|
+
$.eventer.on("mysql_del_before:user_account", function(json) {
|
|
101
|
+
console.log("删除前", json);
|
|
102
|
+
});
|
|
103
|
+
$.eventer.on("mysql_del_after:user_account", function(json) {
|
|
104
|
+
console.log("删除后", json);
|
|
105
|
+
});
|
|
106
|
+
$.eventer.on("mysql_set_before:user_account", function(json) {
|
|
107
|
+
console.log("修改前", json);
|
|
108
|
+
});
|
|
109
|
+
$.eventer.on("mysql_set_after:user_account", function(json) {
|
|
110
|
+
console.log("修改后", json);
|
|
111
|
+
});
|
|
112
|
+
$.eventer.on("mysql_addOrSet_before:user_account", function(json) {
|
|
113
|
+
console.log("添加或修改前", json);
|
|
114
|
+
});
|
|
115
|
+
$.eventer.on("mysql_addOrSet_after:user_account", function(json) {
|
|
116
|
+
console.log("添加或修改后", json);
|
|
117
|
+
});
|
|
118
|
+
$.eventer.on("mysql_get_before:user_account", function(json) {
|
|
119
|
+
console.log("查询列表前", json);
|
|
120
|
+
});
|
|
121
|
+
$.eventer.on("mysql_get_after:user_account", function(json) {
|
|
122
|
+
console.log("查询列表后", json);
|
|
123
|
+
});
|
|
124
|
+
$.eventer.on("mysql_getObj_before:user_account", function(json) {
|
|
125
|
+
console.log("查询对象前", json);
|
|
126
|
+
});
|
|
127
|
+
$.eventer.on("mysql_getObj_after:user_account", function(json) {
|
|
128
|
+
console.log("查询对象后", json);
|
|
129
|
+
});
|
|
130
|
+
|
|
93
131
|
db.table = "user_account";
|
|
94
132
|
db.key = "user_id,username";
|
|
95
133
|
var obj = await db.getObj({
|
|
@@ -121,7 +159,26 @@ async function test() {
|
|
|
121
159
|
user_id: "1"
|
|
122
160
|
}, null, null, true);
|
|
123
161
|
console.log("模糊查询语法", db.sql, list.length);
|
|
162
|
+
|
|
163
|
+
var obj = await db.getObj({
|
|
164
|
+
user_id_has: "1,2,a-3,4,5"
|
|
165
|
+
});
|
|
166
|
+
console.log("语法", db.sql, obj);
|
|
167
|
+
|
|
168
|
+
var bl = await db.addOrSet({
|
|
169
|
+
user_id: obj.user_id
|
|
170
|
+
}, obj);
|
|
171
|
+
console.log("语法", db.sql, bl);
|
|
172
|
+
|
|
173
|
+
var obj = await db.getObj({}, "user_id desc");
|
|
174
|
+
var obj_new = Object.assign({}, obj);
|
|
175
|
+
obj_new.user_id += 1;
|
|
176
|
+
var bl = await db.addOrSet({
|
|
177
|
+
user_id: obj_new.user_id
|
|
178
|
+
}, obj_new);
|
|
179
|
+
console.log("语法", db.sql, bl);
|
|
124
180
|
}
|
|
181
|
+
|
|
125
182
|
test();
|
|
126
183
|
|
|
127
184
|
// 测试模板查询
|