HonorLee 6 years ago
parent
commit
e114b7f40a
5 changed files with 124 additions and 111 deletions
  1. 24 18
      analysis.js
  2. 3 3
      config.js
  3. 1 1
      finalRepinTime.txt
  4. 11 85
      lib/mysql-pool.js
  5. 85 4
      lib/mysqldb.js

File diff suppressed because it is too large
+ 24 - 18
analysis.js


+ 3 - 3
config.js

@@ -10,8 +10,8 @@ global.Config   = {
     mysqlConfig:{
         host:'localhost',
         port:3306,
-        user:'root',
-        password:'',
+        user:'TouTiao',
+        password:'129810lh',
         database:'TouTiao',
         prefix:''
     },
@@ -21,4 +21,4 @@ global.Config   = {
 global.FinalRepinFile = ROOTPATH + '/finalRepinTime.txt';
 global.FinalRepinTime = Number(FILE.readFileSync(FinalRepinFile,'UTF-8'));
 
-// https://www.toutiao.com/c/user/favourite/?page_type=2&user_id=9129707997&max_behot_time=0&count=20&as=A1B519B8F75D744&cp=5987BDC764040E1&max_repin_time=0
+// https://www.toutiao.com/c/user/favourite/?page_type=2&user_id=9129707997&max_behot_time=0&count=20&as=A1B519B8F75D744&cp=5987BDC764040E1&max_repin_time=0

+ 1 - 1
finalRepinTime.txt

@@ -1 +1 @@
-1504255053
+1513878184

+ 11 - 85
lib/mysql-pool.js

@@ -2,94 +2,20 @@
  */
 var Mysql = require('mysql');  
 
-var pool = function(config){  
-    this.free = [];//空闲连接集合
-    this.used = 0; //已使用连接集合
-    for(var key in config.pool){this[key] = config.pool[key];}
-
-    this.newConnection = function(){
-        var con = Mysql.createConnection(config.db);
-        return con;
-    };
-    this.getConnection = function(){
-        var con = null;
-        if(this.used < this.maxconn){
-            if(this.free.length > 0){
-                con = this.free.shift();
-            }else{
-                con = this.newConnection();
-            }
-            this.used++;
-            // console.log('当前使用连接: ' + this.used + ' 空闲连接: ' + this.free.length);
-        }
-        return con;
-    };
-    this.freeConnection = function(con){
-        this.free.push(con);
-        this.used--;
-    };
-    this.freeAll = function(){
-        this.used = 0;
-        for(var i = 0; i < this.free.length; i++){
-            this.free[i].end();
-        }
-        this.free = [];
-    };
-    this.endConnection = function(){
-        this.freeAll();
-        // for(var i = 0; i < this.free.length; i++){
-        //     this.free[i].end();
-        // }
-    }
-};
-var client = {  
-    pools: [],
-    /**
-     * 得到一个数据库连接
-     * @param name 数据库pool名字name
-     * @return {*}
-     */
-    getConnection: function(name){
-        var pool = this.pools[name];
-        return pool ? pool.getConnection() : null;
-    },
-    /**
-     * 释放一个数据库连接
-     * @param name 数据库pool名字name
-     * @param con 连接
-     */
-    freeConnection: function(name,con){
-        var pool = this.pools[name];
-        if(pool){
-            pool.freeConnection(con);
-        }
-    },
-    /**
-     * 释放一个数据库所有连接
-     * @param name 数据库pool名字name
-     */
-    freePool: function(name){
-        var pool = this.pools[name];
-        if(pool)
-            pool.freeAll();
-    },
-    /**
-     * 释放所有数据库的所有连接
-     */
-    freeAll: function(){
-        for(var key in this.pools)
-            this.pools[key].freeAll();
+var pool;
+var client = {
+    getConnection:function(callback){
+        if(!pool) throw new Error("Mysql pool not created!");
+        if(!callback || typeof(callback)!='function') throw new Error("Mysql pool get connection lost callback!");
+        pool.getConnection(function(err,connection){
+            callback(err,connection);
+        });
     },
     end:function(){
-        for(var key in this.pools)
-            this.pools[key].freeAll();
+        pool.end();
     }
-};
+}
 exports.instance = function(config){
-    // if(client.pools.length < 1){
-        // for(var i = 0; i < config.length; i++){
-            client.pools[config.pool.name] = new pool(config);
-        // }
-    // }
+    pool = Mysql.createPool(config)
     return client;
 };

+ 85 - 4
lib/mysqldb.js

@@ -1,10 +1,91 @@
 'use strict'
 module.exports={
     query:function(query,callback){
-        let mysql = MysqlPool.getConnection('TouTiaoFav');
-        mysql.query(query,function(err, results, fields) {  
-            MysqlPool.freeConnection('TouTiaoFav',mysql);
-            callback(err,results,fields);
+        MysqlPool.getConnection(function(err,con){
+            con.query(query,function(err, results, fields) {  
+                con.release();
+                if(callback && typeof(callback)=='function') callback(err,results,fields);
+            });
         });
     }
+};
+
+global.M = function(table){
+    if(!table) return null;
+    return new Module(Config.mysql_cfg.prefix+table);
+};
+
+var Module = function(table){
+    let instance = this;
+    let tableName = table;
+    let method,where;
+    let rows,value;
+
+    instance.get = function(row){
+        method = 'select';
+        if(!row) row = '*';
+        if(typeof row ==='string') rows = row.split(',');
+        if(typeof row ==='object' && row.length) rows = row;
+        return instance;
+    };
+    instance.update = function(row,val){
+        method = 'update';
+        if(!val) return instance;
+        let rowArr,valArr,pair;
+        if(typeof row ==='string') rowArr = row.split(',');
+        if(typeof row ==='object' && row.length) rowArr = row;
+        if(typeof val ==='string') valArr = val.split(',');
+        if(typeof val ==='object' && val.length) valArr = val;
+        if(rowArr.length == valArr.length){
+            for(let i in rowArr){
+                if(Number(valArr[i])==valArr[i]){
+                    valArr[i] = Number(valArr[i]);
+                }else{
+                    valArr[i] = '"'+String(valArr[i])+'"';
+                }
+            }
+            rows  = rowArr.join(',');
+            value = valArr.join(',');
+        }
+        return instance;
+    };
+    instance.del = function(){
+
+    };
+    instance.where = function(row,val){
+        if(!row || !val) return instance;
+        let rowArr,valArr;
+        if(typeof row ==='string') rowArr = row.split(',');
+        if(typeof row ==='object' && row.length) rowArr = row;
+        if(typeof val ==='string') valArr = val.split(',');
+        if(typeof val ==='object' && val.length) valArr = val;
+        if(rowArr.length == valArr.length){
+            where = [];
+            for(let i in rowArr){
+                if(Number(valArr[i])==valArr[i]){
+                    valArr[i] = Number(valArr[i]);
+                }else{
+                    valArr[i] = '"'+String(valArr[i])+'"';
+                }
+                where.push(([rowArr[i],valArr[i]]).join('='));
+            }
+        }
+        return instance;
+    };
+    instance.run = function(callback){
+        let query = [],queryStr;
+        let whereStr = where?('where '+where.join(' and ')):'';
+        switch(method){
+            case 'select':
+                query = ['select',rows.join(','),'from',tableName,whereStr];
+                break;
+            case 'update':
+                query = ['update',tableName,'set','(',rows.join(','),')','values(',value.join(','),')',whereStr];
+                break;
+        }
+        queryStr = query.join(' ');
+        MysqlDB.query(queryStr,function(err,result,fields){
+            if(callback && typeof callback === 'function') callback(err,result);
+        })
+    }
 };