mm_mysql 1.9.0 → 1.9.1

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 (4) hide show
  1. package/data.sql +4963 -0
  2. package/index.js +53 -0
  3. package/package.json +1 -1
  4. package/test.js +154 -132
package/index.js CHANGED
@@ -216,6 +216,59 @@ class Mysql {
216
216
  this.db = function() {
217
217
  return new DB($this);
218
218
  };
219
+
220
+ /**
221
+ *
222
+ * @param {Object} file sql文件
223
+ * @param {Function} func 回调函数
224
+ * @return {Promise} 异步构造器, 当await时返回执行结果
225
+ */
226
+ this.load = async function(file, func) {
227
+ var count = 0;
228
+ var progress = 0;
229
+ var errors = [];
230
+ var index = 0;
231
+ try {
232
+ var data = file.loadText();
233
+ // 将SQL文件内容分割成单独的语句
234
+ const arr = data.split(';\r\n');
235
+ count = arr.length;
236
+ for (var i = 0; i < arr.length; i++) {
237
+ var sql_str = arr[i].trim();
238
+ var bl;
239
+ if (sql_str !== '') {
240
+ await this.run(sql_str + ";");
241
+ if (this.error) {
242
+ errors.push({
243
+ sql_str: sql_str.slice(0, 512),
244
+ error: this.error
245
+ });
246
+ bl = false;
247
+ // 如果数据库链接失败(密码错误或无法连接),则退出循环
248
+ if (this.error.code == 1045 || this.error.code == 2003) {
249
+ break;
250
+ }
251
+ } else {
252
+ bl = true;
253
+ }
254
+ }
255
+ var p = i / arr.length;
256
+ progress = Math.ceil(p * 100);
257
+ index = i;
258
+ if (func) {
259
+ func(progress, index, bl, this.error, sql_str);
260
+ }
261
+ }
262
+ } catch (err) {
263
+ $.log.error("导入SQL文件失败!", err);
264
+ }
265
+ return {
266
+ index,
267
+ count,
268
+ progress,
269
+ errors
270
+ }
271
+ }
219
272
  }
220
273
  }
221
274
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mm_mysql",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "这是超级美眉mysql帮助函数模块,用于便捷操作mysql,使用await方式,可以避免嵌套函数",
5
5
  "main": "index.js",
6
6
  "dependencies": {
package/test.js CHANGED
@@ -1,5 +1,27 @@
1
1
  const Mysql = require('./index.js').Mysql;
2
2
 
3
+ /**
4
+ * 测试导入sql文件
5
+ */
6
+ async function test() {
7
+ var sql = new Mysql();
8
+ sql.setConfig({
9
+ database: 'test',
10
+ // 连接用户名
11
+ user: "root",
12
+ // 连接密码
13
+ password: "Asd159357",
14
+ multipleStatements: true
15
+ });
16
+ await sql.open();
17
+ var file = "./data.sql".fullname(__dirname);
18
+ var ret = await sql.load(file, function(progress, index, bl, error, sql_str) {
19
+ console.log(progress, index, bl, error, sql_str);
20
+ });
21
+ sql.close();
22
+ console.log("执行结果", ret);
23
+ }
24
+ test();
3
25
 
4
26
  // function test() {
5
27
  // var setSql = "`nickname`='hao,1,2,3',`gm`=5,`mc`=2,`group`='2,3'";
@@ -14,42 +36,42 @@ const Mysql = require('./index.js').Mysql;
14
36
  // });
15
37
  // sql.open();
16
38
 
17
- var tpl = {
18
- "query": {
19
- "state_min": "`state` >= '{0}'",
20
- "state_max": "`state` <= '{0}'",
21
- "vip_min": "`vip` >= '{0}'",
22
- "vip_max": "`vip` <= '{0}'",
23
- "gm_min": "`gm` >= '{0}'",
24
- "gm_max": "`gm` <= '{0}'",
25
- "mc_min": "`mc` >= '{0}'",
26
- "mc_max": "`mc` <= '{0}'",
27
- "create_time_min": "`create_time` >= '{0}'",
28
- "create_time_max": "`create_time` <= '{0}'",
29
- "login_time_min": "`login_time` >= '{0}'",
30
- "login_time_max": "`login_time` <= '{0}'",
31
- "salt": "`salt` like '%{0}%'",
32
- "invite_code": "`invite_code` like '%{0}%'",
33
- "phone": "`phone` like '%{0}%'",
34
- "username": "`username` like '%{0}%'",
35
- "nickname": "`nickname` like '%{0}%'",
36
- "password": "`password` like '%{0}%'",
37
- "email": "`email` like '%{0}%'",
38
- "user_group": "`user_group` like '%{0}%'",
39
- "user_admin": "`user_admin` like '%{0}%'",
40
- "login_ip": "`login_ip` like '%{0}%'",
41
- "signature": "`signature` like '%{0}%'",
42
- "avatar": "`avatar` like '%{0}%'",
43
- "friends": "`friends` like '%{0}%'",
44
- "admin_group": "`admin_group` like '%{0}%'"
45
- },
46
- "update": {
47
- "state_add": "`state` = `state` + '{0}'",
48
- "vip_add": "`vip` = `vip` + '{0}'",
49
- "gm_add": "`gm` = `gm` + '{0}'",
50
- "mc_add": "`mc` = `mc` + '{0}'"
51
- }
52
- };
39
+ // var tpl = {
40
+ // "query": {
41
+ // "state_min": "`state` >= '{0}'",
42
+ // "state_max": "`state` <= '{0}'",
43
+ // "vip_min": "`vip` >= '{0}'",
44
+ // "vip_max": "`vip` <= '{0}'",
45
+ // "gm_min": "`gm` >= '{0}'",
46
+ // "gm_max": "`gm` <= '{0}'",
47
+ // "mc_min": "`mc` >= '{0}'",
48
+ // "mc_max": "`mc` <= '{0}'",
49
+ // "create_time_min": "`create_time` >= '{0}'",
50
+ // "create_time_max": "`create_time` <= '{0}'",
51
+ // "login_time_min": "`login_time` >= '{0}'",
52
+ // "login_time_max": "`login_time` <= '{0}'",
53
+ // "salt": "`salt` like '%{0}%'",
54
+ // "invite_code": "`invite_code` like '%{0}%'",
55
+ // "phone": "`phone` like '%{0}%'",
56
+ // "username": "`username` like '%{0}%'",
57
+ // "nickname": "`nickname` like '%{0}%'",
58
+ // "password": "`password` like '%{0}%'",
59
+ // "email": "`email` like '%{0}%'",
60
+ // "user_group": "`user_group` like '%{0}%'",
61
+ // "user_admin": "`user_admin` like '%{0}%'",
62
+ // "login_ip": "`login_ip` like '%{0}%'",
63
+ // "signature": "`signature` like '%{0}%'",
64
+ // "avatar": "`avatar` like '%{0}%'",
65
+ // "friends": "`friends` like '%{0}%'",
66
+ // "admin_group": "`admin_group` like '%{0}%'"
67
+ // },
68
+ // "update": {
69
+ // "state_add": "`state` = `state` + '{0}'",
70
+ // "vip_add": "`vip` = `vip` + '{0}'",
71
+ // "gm_add": "`gm` = `gm` + '{0}'",
72
+ // "mc_add": "`mc` = `mc` + '{0}'"
73
+ // }
74
+ // };
53
75
 
54
76
  // // 测试模板修改
55
77
  // async function test_tpl_set() {
@@ -76,112 +98,112 @@ var tpl = {
76
98
  // }
77
99
  // test_tpl_set();
78
100
 
79
- async function test() {
80
- console.log('测试开始')
81
- var sql = new Mysql();
82
- var db = sql.db();
83
- // 是否输出语法
84
- // sql.config.log = false;
85
- // 忽视那些错误的输出,例如[1062],忽视主键重复插入
86
- // sql.config.log_ignore = [];
101
+ // async function test() {
102
+ // console.log('测试开始')
103
+ // var sql = new Mysql();
104
+ // var db = sql.db();
105
+ // // 是否输出语法
106
+ // // sql.config.log = false;
107
+ // // 忽视那些错误的输出,例如[1062],忽视主键重复插入
108
+ // // sql.config.log_ignore = [];
87
109
 
88
- sql.setConfig({
89
- "user": "root",
90
- "password": "Asd159357"
91
- });
92
- sql.open();
93
- // sql.close();
94
- // sql.open();
110
+ // sql.setConfig({
111
+ // "user": "root",
112
+ // "password": "Asd159357"
113
+ // });
114
+ // sql.open();
115
+ // // sql.close();
116
+ // // sql.open();
95
117
 
96
- // --- 测试事件 ---
97
- $.eventer.on("mysql_add_before:user_account", function(json) {
98
- console.log("添加前", json);
99
- });
100
- $.eventer.on("mysql_add_after:user_account", function(json) {
101
- console.log("添加后", json);
102
- });
103
- $.eventer.on("mysql_del_before:user_account", function(json) {
104
- console.log("删除前", json);
105
- });
106
- $.eventer.on("mysql_del_after:user_account", function(json) {
107
- console.log("删除后", json);
108
- });
109
- $.eventer.on("mysql_set_before:user_account", function(json) {
110
- console.log("修改前", json);
111
- });
112
- $.eventer.on("mysql_set_after:user_account", function(json) {
113
- console.log("修改后", json);
114
- });
115
- $.eventer.on("mysql_addOrSet_before:user_account", function(json) {
116
- console.log("添加或修改前", json);
117
- });
118
- $.eventer.on("mysql_addOrSet_after:user_account", function(json) {
119
- console.log("添加或修改后", json);
120
- });
121
- $.eventer.on("mysql_get_before:user_account", function(json) {
122
- console.log("查询列表前", json);
123
- });
124
- $.eventer.on("mysql_get_after:user_account", function(json) {
125
- console.log("查询列表后", json);
126
- });
127
- $.eventer.on("mysql_getObj_before:user_account", function(json) {
128
- console.log("查询对象前", json);
129
- });
130
- $.eventer.on("mysql_getObj_after:user_account", function(json) {
131
- console.log("查询对象后", json);
132
- });
118
+ // // --- 测试事件 ---
119
+ // $.eventer.on("mysql_add_before:user_account", function(json) {
120
+ // console.log("添加前", json);
121
+ // });
122
+ // $.eventer.on("mysql_add_after:user_account", function(json) {
123
+ // console.log("添加后", json);
124
+ // });
125
+ // $.eventer.on("mysql_del_before:user_account", function(json) {
126
+ // console.log("删除前", json);
127
+ // });
128
+ // $.eventer.on("mysql_del_after:user_account", function(json) {
129
+ // console.log("删除后", json);
130
+ // });
131
+ // $.eventer.on("mysql_set_before:user_account", function(json) {
132
+ // console.log("修改前", json);
133
+ // });
134
+ // $.eventer.on("mysql_set_after:user_account", function(json) {
135
+ // console.log("修改后", json);
136
+ // });
137
+ // $.eventer.on("mysql_addOrSet_before:user_account", function(json) {
138
+ // console.log("添加或修改前", json);
139
+ // });
140
+ // $.eventer.on("mysql_addOrSet_after:user_account", function(json) {
141
+ // console.log("添加或修改后", json);
142
+ // });
143
+ // $.eventer.on("mysql_get_before:user_account", function(json) {
144
+ // console.log("查询列表前", json);
145
+ // });
146
+ // $.eventer.on("mysql_get_after:user_account", function(json) {
147
+ // console.log("查询列表后", json);
148
+ // });
149
+ // $.eventer.on("mysql_getObj_before:user_account", function(json) {
150
+ // console.log("查询对象前", json);
151
+ // });
152
+ // $.eventer.on("mysql_getObj_after:user_account", function(json) {
153
+ // console.log("查询对象后", json);
154
+ // });
133
155
 
134
- db.table = "user_account";
135
- db.key = "user_id,username";
136
- var obj = await db.getObj({
137
- user_id_has: "1"
138
- });
139
- obj.vip += 1;
156
+ // db.table = "user_account";
157
+ // db.key = "user_id,username";
158
+ // var obj = await db.getObj({
159
+ // user_id_has: "1"
160
+ // });
161
+ // obj.vip += 1;
140
162
 
141
- await db.add(obj);
142
- console.log("尝试重复插入", db.error);
163
+ // await db.add(obj);
164
+ // console.log("尝试重复插入", db.error);
143
165
 
144
- // obj.vip -= 1;
145
- console.log("语法", db.sql, obj);
166
+ // // obj.vip -= 1;
167
+ // console.log("语法", db.sql, obj);
146
168
 
147
- obj.nickname = '管理员';
148
- // obj.vip -= 1;
149
- console.log("语法2", db.sql, obj);
169
+ // obj.nickname = '管理员';
170
+ // // obj.vip -= 1;
171
+ // console.log("语法2", db.sql, obj);
150
172
 
151
- var list = await db.get({
152
- user_id_has: "1,2,a-3,4,5"
153
- });
154
- console.log("语法", db.sql, list.length);
173
+ // var list = await db.get({
174
+ // user_id_has: "1,2,a-3,4,5"
175
+ // });
176
+ // console.log("语法", db.sql, list.length);
155
177
 
156
- var list = await db.get({
157
- user_id: "1"
158
- });
159
- console.log("查询语法", db.sql, list.length);
178
+ // var list = await db.get({
179
+ // user_id: "1"
180
+ // });
181
+ // console.log("查询语法", db.sql, list.length);
160
182
 
161
- var list = await db.get({
162
- user_id: "1"
163
- }, null, null, true);
164
- console.log("模糊查询语法", db.sql, list.length);
183
+ // var list = await db.get({
184
+ // user_id: "1"
185
+ // }, null, null, true);
186
+ // console.log("模糊查询语法", db.sql, list.length);
165
187
 
166
- var obj = await db.getObj({
167
- user_id_has: "1,2,a-3,4,5"
168
- });
169
- console.log("语法", db.sql, obj);
170
-
171
- var bl = await db.addOrSet({
172
- user_id: obj.user_id
173
- }, obj);
174
- console.log("语法", db.sql, bl);
175
-
176
- var obj = await db.getObj({}, "user_id desc");
177
- var obj_new = Object.assign({}, obj);
178
- obj_new.user_id += 1;
179
- var bl = await db.addOrSet({
180
- user_id: obj_new.user_id
181
- }, obj_new);
182
- console.log("语法", db.sql, bl);
183
- }
184
- test();
188
+ // var obj = await db.getObj({
189
+ // user_id_has: "1,2,a-3,4,5"
190
+ // });
191
+ // console.log("语法", db.sql, obj);
192
+
193
+ // var bl = await db.addOrSet({
194
+ // user_id: obj.user_id
195
+ // }, obj);
196
+ // console.log("语法", db.sql, bl);
197
+
198
+ // var obj = await db.getObj({}, "user_id desc");
199
+ // var obj_new = Object.assign({}, obj);
200
+ // obj_new.user_id += 1;
201
+ // var bl = await db.addOrSet({
202
+ // user_id: obj_new.user_id
203
+ // }, obj_new);
204
+ // console.log("语法", db.sql, bl);
205
+ // }
206
+ // test();
185
207
  // setInterval(() => {
186
208
  // test();
187
209
  // }, 3000)