SQLx_Init()<sqlite>{
SQL_SetAffinity("sqlite");
new szDB[32];
get_cvar_string("amx_drstats_db", szDB, 31);
if(!file_exists(szDB)){
new fp = fopen(szDB, "w");
if(!fp){
new szMsg[128];
formatex(szMsg, 127, "%s file not found and cant be created. Do it mannualy", szDB);
set_fail_state(szMsg);
}
fclose(fp);
}
gTuple = SQL_MakeDbTuple("", "", "", szDB, 0);
SQL_ThreadQuery(gTuple, "handleCreateQuery", "PRAGMA integrity_check" );
SQL_ThreadQuery(gTuple, "handleCreateQuery", "PRAGMA synchronous = 1" );
if(gTuple == Empty_Handle){
set_fail_state("Cant create connection tuple");
}
new iErr;
static szError[128];
new Handle:link = SQL_Connect(gTuple, iErr, szError, 127);
if(link == Empty_Handle){
log_amx("Error (%d): %s", iErr, szError);
set_fail_state("Cant connect to database");
}
new Handle:query;
query = SQL_PrepareQuery(link,
"CREATE TABLE IF NOT EXISTS `runners`( \
id INTEGER PRIMARY KEY,\
steamid TEXT NOT NULL, \
nickname TEXT NOT NULL, \
ip TEXT NOT NULL, \
nationality TEXT NULL \
)");
SQL_Execute(query);
SQL_FreeHandle(query);
query = SQL_PrepareQuery(link,
"CREATE TABLE IF NOT EXISTS `maps`( \
mid INTEGER PRIMARY KEY,\
mapname TEXT NOT NULL UNIQUE, \
games INTEGER NOT NULL, \
finishX INTEGER NOT NULL DEFAULT 0, \
finishY INTEGER NOT NULL DEFAULT 0, \
finishZ INTEGER NOT NULL DEFAULT 0 \
)");
SQL_Execute(query);
SQL_FreeHandle(query);
query = SQL_PrepareQuery(link,
"CREATE TABLE IF NOT EXISTS `results`( \
id INTEGER NOT NULL, \
mid INTEGER NOT NULL, \
besttime INTEGER NOT NULL, \
games INTEGER NOT NULL, \
playedtime INTEGER NOT NULL, \
deaths INTEGER NOT NULL, \
recorddate DATETIME NULL, \
FOREIGN KEY(id) REFERENCES `runners`(id), \
FOREIGN KEY(mid) REFERENCES `maps`(mid), \
PRIMARY KEY(id, mid) \
)");
SQL_Execute(query);
SQL_FreeHandle(query);
SQL_FreeHandle(link);
get_mapname(gszMapname, charsmax(gszMapname));
formatex(gszQuery, charsmax(gszQuery), "SELECT mid, games, finishX, finishY, finishZ FROM `maps` WHERE mapname='%s'", gszMapname);
SQL_ThreadQuery(gTuple, "handleSelectMap", gszQuery);
}