diff options
| author | navewindre <nw@moneybot.cc> | 2023-12-04 18:06:10 +0100 |
|---|---|---|
| committer | navewindre <nw@moneybot.cc> | 2023-12-04 18:06:10 +0100 |
| commit | aef0d1c1268ab7d4bc18996c9c6b4da16a40aadc (patch) | |
| tree | 43e766b51704f4ab8b383583bdc1871eeeb9c698 /sourcemod/scripting/gokz-localranks/db/helpers.sp | |
| parent | 38f1140c11724da05a23a10385061200b907cf6e (diff) | |
bbbbbbbbwaaaaaaaaaaa
Diffstat (limited to 'sourcemod/scripting/gokz-localranks/db/helpers.sp')
| -rw-r--r-- | sourcemod/scripting/gokz-localranks/db/helpers.sp | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/sourcemod/scripting/gokz-localranks/db/helpers.sp b/sourcemod/scripting/gokz-localranks/db/helpers.sp new file mode 100644 index 0000000..670a420 --- /dev/null +++ b/sourcemod/scripting/gokz-localranks/db/helpers.sp @@ -0,0 +1,91 @@ +/* + Database helper functions and callbacks. +*/ + + + +/* Error report callback for failed transactions */ +public void DB_TxnFailure_Generic(Handle db, any data, int numQueries, const char[] error, int failIndex, any[] queryData) +{ + LogError("Database transaction error: %s", error); +} + +/* Error report callback for failed transactions which deletes the DataPack */ +public void DB_TxnFailure_Generic_DataPack(Handle db, DataPack data, int numQueries, const char[] error, int failIndex, any[] queryData) +{ + delete data; + LogError("Database transaction error: %s", error); +} + +/* Used to search the database for a player name and return their PlayerID and alias + + For SQLTxnSuccess onSuccess: + results[0] - 0:PlayerID, 1:Alias +*/ +void DB_FindPlayer(const char[] playerSearch, SQLTxnSuccess onSuccess, any data = 0, DBPriority priority = DBPrio_Normal) +{ + char query[1024], playerEscaped[MAX_NAME_LENGTH * 2 + 1]; + SQL_EscapeString(gH_DB, playerSearch, playerEscaped, sizeof(playerEscaped)); + + String_ToLower(playerEscaped, playerEscaped, sizeof(playerEscaped)); + + Transaction txn = SQL_CreateTransaction(); + + // Look for player name and retrieve their PlayerID + FormatEx(query, sizeof(query), sql_players_searchbyalias, playerEscaped, playerEscaped); + txn.AddQuery(query); + + SQL_ExecuteTransaction(gH_DB, txn, onSuccess, DB_TxnFailure_Generic, data, priority); +} + +/* Used to search the database for a map name and return its MapID and name + + For SQLTxnSuccess onSuccess: + results[0] - 0:MapID, 1:Name +*/ +void DB_FindMap(const char[] mapSearch, SQLTxnSuccess onSuccess, any data = 0, DBPriority priority = DBPrio_Normal) +{ + char query[1024], mapEscaped[129]; + SQL_EscapeString(gH_DB, mapSearch, mapEscaped, sizeof(mapEscaped)); + + Transaction txn = SQL_CreateTransaction(); + + // Look for map name and retrieve it's MapID + FormatEx(query, sizeof(query), sql_maps_searchbyname, mapEscaped, mapEscaped); + txn.AddQuery(query); + + SQL_ExecuteTransaction(gH_DB, txn, onSuccess, DB_TxnFailure_Generic, data, priority); +} + +/* Used to search the database for a player name and return their PlayerID and alias, + and search the database for a map name and return its MapID and name + + For SQLTxnSuccess onSuccess: + results[0] - 0:PlayerID, 1:Alias + results[1] - 0:MapID, 1:Name +*/ +void DB_FindPlayerAndMap(const char[] playerSearch, const char[] mapSearch, SQLTxnSuccess onSuccess, any data = 0, DBPriority priority = DBPrio_Normal) +{ + char query[1024], mapEscaped[129], playerEscaped[MAX_NAME_LENGTH * 2 + 1]; + SQL_EscapeString(gH_DB, playerSearch, playerEscaped, sizeof(playerEscaped)); + SQL_EscapeString(gH_DB, mapSearch, mapEscaped, sizeof(mapEscaped)); + + String_ToLower(playerEscaped, playerEscaped, sizeof(playerEscaped)); + + Transaction txn = SQL_CreateTransaction(); + + // Look for player name and retrieve their PlayerID + FormatEx(query, sizeof(query), sql_players_searchbyalias, playerEscaped, playerEscaped); + txn.AddQuery(query); + // Look for map name and retrieve it's MapID + FormatEx(query, sizeof(query), sql_maps_searchbyname, mapEscaped, mapEscaped); + txn.AddQuery(query); + + SQL_ExecuteTransaction(gH_DB, txn, onSuccess, DB_TxnFailure_Generic, data, priority); +} + +// Used to convert the Account ID to the SteamID we can use for a Global API query +int GetSteam2FromAccountId(char[] result, int maxlen, int account_id) +{ + return Format(result, maxlen, "STEAM_1:%d:%d", view_as<bool>(account_id % 2), account_id / 2); +} |
