#define TABLENAME "client_data"
Database db;
public void OnPluginStart()
{
Database.Connect(SQLConnect, "session_data");
}
public void OnClientConnected(int client)
{
AddClientToDb(client);
}
public void OnClientDisconnect(int client)
{
RemoveClientFromDb(client);
}
public void SQLConnect(Database hdb, const char[] error, any data)
{
if(hdb == INVALID_HANDLE || error[0])
{
SetFailState("ERROR CONNECT TO DB: %s", error);
return;
}
db = hdb;
CreateTable();
}
void CreateTable()
{
char sQuery[256];
SQL_FormatQuery(db, sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS `%s` (\
`id` AUTO_INCREMENT, \
`auth` VARCHAR(22) NOT NULL, \
`connect_time` TIMESTAMP)", TABLENAME);
db.Query(SQLCreateTableCallBack, sQuery, _, DBPrio_High);
}
void AddClientToDb(int client)
{
char sQuery[256], sAuth[22];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
//char sTime[32];
//FormatTime(sTime, sizeof(sTime), "%F %X", GetTime());
SQL_FormatQuery(db, sQuery, sizeof(sQuery), "INSERT INTO `%s` (\
`auth`, \
`connect_time`) VALUES ('%s', CURRENT_TIMESTAMP)", TABLENAME, sAuth);
db.Query(SQLAddToDBCallBack, sQuery, _, DBPrio_High);
}
void RemoveClientFromDb(int client)
{
char sQuery[256], sAuth[22];
GetClientAuthId(client, AuthId_Steam2, sAuth, sizeof(sAuth));
SQL_FormatQuery(db, sQuery, sizeof(sQuery), "DELETE FROM `%s` WHERE `auth`='%s'"TABLENAME, sAuth);
db.Query(RemoveFromDBCallBack, sQuery, _, DBPrio_High);
}
public void SQLCreateTableCallBack(Database hdb, DBResultSet results, const char[] error, any data)
{
if(error[0] || db == INVALID_HANDLE)
{
SetFailState("ERROR CREATE TABLE: %s", error);
return;
}
}
public void SQLAddToDBCallBack(Database hdb, DBResultSet results, const char[] error, any data)
{
if(error[0] || db == INVALID_HANDLE)
{
SetFailState("ERROR ADD CLIENT: %s", error);
return;
}
}
public void RemoveFromDBCallBack(Database hdb, DBResultSet results, const char[] error, any data)
{
if(error[0] || db == INVALID_HANDLE)
{
SetFailState("ERROR REMOVE CLIENT: %s", error);
return;
}
}