summaryrefslogtreecommitdiff
path: root/sourcemod/scripting/gokz-localranks/db/helpers.sp
diff options
context:
space:
mode:
authornavewindre <nw@moneybot.cc>2023-12-04 18:06:10 +0100
committernavewindre <nw@moneybot.cc>2023-12-04 18:06:10 +0100
commitaef0d1c1268ab7d4bc18996c9c6b4da16a40aadc (patch)
tree43e766b51704f4ab8b383583bdc1871eeeb9c698 /sourcemod/scripting/gokz-localranks/db/helpers.sp
parent38f1140c11724da05a23a10385061200b907cf6e (diff)
bbbbbbbbwaaaaaaaaaaa
Diffstat (limited to 'sourcemod/scripting/gokz-localranks/db/helpers.sp')
-rw-r--r--sourcemod/scripting/gokz-localranks/db/helpers.sp91
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);
+}