git repos / oastat

commit 5018bb91

sago007 · 2011-02-02 20:37
5018bb9162712fcecbbeea3f0443ac9d9a232159 patch · browse files
parent f52ccd29bc2474a29820b3e5056f43755260effa

We now save all publicly displayed server variables in the database.


git-svn-id: http://oastat.googlecode.com/svn/trunk@22 a36be8df-c75f-1e49-46ad-4f0ee64bdc62

Changed files

M sql/create_tables/oastat_create_tables_common.sql before
M src/oastatstruct.cpp before
M src/oss2db/init2db.cpp before
diff --git a/sql/create_tables/oastat_create_tables_common.sql b/sql/create_tables/oastat_create_tables_common.sql index 104a7d8..d0ff4a3 100644 --- a/sql/create_tables/oastat_create_tables_common.sql +++ b/sql/create_tables/oastat_create_tables_common.sql
@@ -91,7 +91,7 @@ CREATE TABLE oastat_points (
CREATE TABLE oastat_userinfo (
eventNumber SERIAL PRIMARY KEY,
- gamenumber integer NOT NULL,
+ gamenumber bigint NOT NULL,
guid character varying(64) NOT NULL,
team integer,
model character varying(64) NOT NULL,
@@ -101,8 +101,8 @@ CREATE TABLE oastat_userinfo (
CREATE TABLE oastat_uservars (
userinfoevent bigint NOT NULL, -- will be used as primary key
- key character varying(100) NOT NULL, -- will be used as primary key later
- value character varying(256),
+ thekey character varying(100) NOT NULL, -- will be used as primary key later
+ thevalue character varying(256),
numericvalue float -- if value is a float or int, then the value will also be stored here for easier comparison
);
@@ -117,13 +117,13 @@ ALTER TABLE oastat_games
ALTER TABLE oastat_players
- ADD CONSTRAINT oastat_players_pk PRIMARY KEY (guid);
+ ADD CONSTRAINT oastat_players_pk pRIMARY KEY (guid);
ALTER TABLE oastat_gamecvars
- ADD CONSTRAINT oastat_gamecvars_pk PRIMARY KEY (gamenumber,cvar);
+ ADD CONSTRAINT oastat_gamecvars_pk pRIMARY KEY (gamenumber,cvar);
ALTER TABLE oastat_uservars
- ADD CONSTRAINT oastat_gamevars_pk PRIMARY KEY (userinfoevent,key);
+ ADD CONSTRAINT oastat_gamevars_pk pRIMARY KEY (userinfoevent,thekey);
-- PRIMARY KEYS END
diff --git a/src/oastatstruct.cpp b/src/oastatstruct.cpp index 52ee5c1..1e7efe7 100644 --- a/src/oastatstruct.cpp +++ b/src/oastatstruct.cpp
@@ -100,6 +100,13 @@ void OaStatStruct::parseLine(string line) {
restOfLine = line;
}
+void makeLower(string &x) {
+ for(int i=0; i<x.length();i++) {
+ if(x[i] >= 'A' && x[i] <= 'X')
+ x[i] = x[i]-'A'+'a';
+ }
+}
+
map<string,string> OaStatStruct::GetInfostring(string restOfLine) {
map<string,string> list;
int curPos = 0, lastPos = 0;
@@ -116,6 +123,7 @@ map<string,string> OaStatStruct::GetInfostring(string restOfLine) {
} else {
value = restOfLine.substr(lastPos,curPos-lastPos);
//list.insert(pair<string,string>(key,value));
+ makeLower(key);
if(key.length()>0)
list[key] = value;
//cout << key << ":" << value << endl;
diff --git a/src/oss2db/init2db.cpp b/src/oss2db/init2db.cpp index f91be3d..199dbc6 100644 --- a/src/oss2db/init2db.cpp +++ b/src/oss2db/init2db.cpp
@@ -44,4 +44,16 @@ void Init2Db::process(OaStatStruct oss) {
oss.setTimeStamp(arguments["g_timestamp"]);
dp->startGame(gametype,mapname,basegame,servername,&oss);
+ map<string,string>::iterator it;
+ for(it = arguments.begin(); it != arguments.end(); it++) {
+ if(
+ it->first == "g_gametype" ||
+ it->first == "gamename" ||
+ it->first == "mapname" ||
+ it->first == "sv_hostname" ||
+ it->first == "g_timestamp"
+ )
+ continue; //Skip the ones on the games-table
+ dp->addGameCvar(it->first,it->second);
+ }
}