OSDN Git Service

インデックスハッシュを使用するようにした
[webchat/WebChat.git] / profile.js
index 3022f06..699d9f8 100644 (file)
@@ -265,6 +265,7 @@ function RenderMessage(res,msg,info)
 function ProfileCollection()\r
 {\r
        var MySQLPool = new require("./mysql_pool.js");\r
+       var murmurhash = require("murmurhash");\r
        var pool = new MySQLPool({\r
                                host     : config.db_host,\r
                                user     : config.db_user,\r
@@ -275,7 +276,7 @@ function ProfileCollection()
        this.AuthAsync = function(name,password,cb){\r
                async.waterfall([\r
                        function(next){\r
-                               pool.query("SELECT * FROM list WHERE name = ?",[name],next);\r
+                               pool.query("SELECT * FROM list WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],next);\r
                        },\r
                        function(result,next){\r
                                if(result[0].password == password)\r
@@ -286,10 +287,11 @@ function ProfileCollection()
                ],cb);\r
        }\r
        this.GetAsync = function(name,cb){\r
-               pool.query("SELECT * FROM list WHERE name = ?",[name],cb);\r
+               pool.query("SELECT * FROM list WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],cb);\r
        }\r
        this.AddAsync = function(data,cb){\r
                var item = {\r
+                       name_hash:murmurhash.v3(data.name),\r
                        name:data.name,\r
                        age:data.age,\r
                        gender:data.gender,\r
@@ -304,6 +306,7 @@ function ProfileCollection()
        }\r
        this.UpdatAsync = function(name,data,cb){\r
                var item = {\r
+                       name_hash:murmurhash.v3(data.name),\r
                        name:data.name,\r
                        age:data.age,\r
                        gender:data.gender,\r
@@ -323,7 +326,7 @@ function ProfileCollection()
                pool.query("DELETE FROM list WHERE name IN (?)",[names],cb);\r
        }\r
        this.RemoveAsync = function(name,cb){\r
-               pool.query("DELETE FROM list WHERE name = ?",[name],cb);\r
+               pool.query("DELETE FROM list WHERE name_hash = ? and name = ?",[murmurhash.v3(name),name],cb);\r
        }\r
        this.FindByNameAsync = function(pattern,start,count,cb){\r
                pool.query("SELECT * FROM list WHERE name LIKE ? LIMIT ?,?",[pattern+"%",start,count],cb);\r