CREATE DATABASE IF NOT EXISTS webchat DEFAULT CHARSET=utf8;
use webchat;
DROP TABLE IF EXISTS list;
-CREATE TABLE list(name VARCHAR(64) NOT NULL,
+CREATE TABLE list(
+ name_hash INT UNSIGNED NOT NULL,
+ name VARCHAR(64) NOT NULL,
age SMALLINT UNSIGNED DEFAULT 0,
+ lastmodified DATETIME,
height SMALLINT UNSIGNED DEFAULT 0,
weight SMALLINT UNSIGNED DEFAULT 0,
gender VARCHAR(8),
race VARCHAR(64),
password VARCHAR(16),
- lastmodified DATETIME,
etc TEXT,
- PRIMARY KEY(name));
-CREATE DATABASE IF NOT EXISTS configure;
+ PRIMARY KEY(name_hash));
+
DROP TABLE IF EXISTS ipbanlist;
CREATE TABLE ipbanlist(ip VARCHAR(64) NOT NULL,
type CHAR(1));
+
DROP TABLE IF EXISTS rooms;
CREATE TABLE rooms(number SMALLINT UNSIGNED NOT NULL,
password VARCHAR(16),
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
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
],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
}\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
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