UNPKG

4.8 kBJavaScriptView Raw
1var mysql = require('mysql');
2var queues = require('mysql-queues');
3var db = {};
4var zxy = require('zxy-comm');
5var verify = require('./comm/verify');
6var promise = require('bluebird');
7var fs = require('fs');
8var path = require('path');
9
10var runMysql = function (config) {
11 if (config) {
12 this.db = db = config;
13 this.query = query;
14 this.run = run;
15 if (!db.database) {
16 db.database = "localdb";
17 }
18 var sql = "SET GLOBAL max_connections = 16384;";
19 query(sql);
20 var file = path.join(__dirname, './db/upload');
21 sql = fs.readFileSync(file, "utf-8");
22 query(sql);
23 file = path.join(__dirname, './db/ucpaas');
24 sql = fs.readFileSync(file, "utf-8");
25 query(sql);
26 file = path.join(__dirname, './db/api');
27 sql = fs.readFileSync(file, "utf-8");
28 query(sql);
29 if (zxy.app.v_singleCoreProcess) {
30 console.info("a single core process[" + process.pid + "] mysql connected to", config.host, ":", config.port);
31 }
32 return this;
33 }
34 else {
35 return undefined;
36 }
37}
38exports.runMysql = runMysql;
39
40//执行mysql
41var query_connect = function (sql, callback) {
42 var client = mysql.createConnection(db);
43 client.connect(function (err) {
44 if (err) {
45 callback && callback(false);
46 return;
47 }
48 client.query(sql, null, function (err, results) {
49 client.end();
50 if (err) {
51 callback && callback(false);
52 }
53 else {
54 callback && callback(results);
55 }
56 });
57 });
58}
59
60// //执行mysql 使用连接池
61// var query = function (sql, callback) {
62// var pool = mysql.createPool(db);
63// var conn;
64// pool.getConnection(function (err, connection) {
65// if (!err) {
66// conn = connection;
67// conn.query(sql, function (err, result) {
68// conn && conn.release();
69// if (err) {
70// callback && callback(false);
71// }
72// else {
73// callback && callback(result);
74// }
75// });
76// }
77// else {
78// callback && callback(false);
79// }
80// });
81// }
82
83//执行mysql 使用连接池和参数化
84var query = function () {
85 var sql = "";
86 var data = null;
87 var callback = null;
88 if (arguments && arguments.length) {
89 sql = arguments[0];
90 data = arguments[1];
91 callback = arguments[2];
92 }
93 if (!callback && typeof data == 'function') {
94 callback = data;
95 data = null;
96 }
97 var pool = mysql.createPool(db);
98 var conn;
99 pool.getConnection(function (err, connection) {
100 if (!err) {
101 conn = connection;
102 if (data && verify.isJson(data)) {
103 sql = makeSQL(sql, data);
104 }
105 // console.info(sql);
106 conn.query(sql, function (err, result) {
107 conn && conn.release();
108 if (err) {
109 callback && callback(false);
110 }
111 else {
112 callback && callback(result);
113 }
114 });
115 }
116 else {
117 console.error("mysql connect error:", err.toString());
118 callback && callback(false);
119 }
120 });
121}
122
123var makeSQL = function (sql, options) {
124 for (var k in options) {
125 if (typeof options[k] != 'function') {
126 var reg = new RegExp("@" + k, "g");
127 if (typeof options[k] == 'string' && options[k].substr(options[k].length - 1, 1) == '$') {
128 options[k] += '$';
129 }
130 sql = sql.replace(reg, mysql.escape(options[k]));
131 }
132 }
133 return sql;
134}
135
136var run = function (sql, data) {
137 return new promise(function (resolve, reject) {
138 var pool = mysql.createPool(db);
139 var conn;
140 pool.getConnection(function (err_conn, connection) {
141 if (!err_conn) {
142 conn = connection;
143 if (data && verify.isJson(data)) {
144 sql = makeSQL(sql, data);
145 }
146 conn.query(sql, function (err, result) {
147 conn && conn.release();
148 if (err) {
149 reject(err);
150 }
151 else {
152 resolve(result);
153 }
154 });
155 }
156 else {
157 reject(err_conn);
158 }
159 });
160 });
161}
\No newline at end of file