Add multi-server-per-admin support via sa_admins_servers table

This commit is contained in:
Ravid-A 2026-05-31 17:34:53 +03:00
parent eea700bfb4
commit e028441b56
7 changed files with 72 additions and 10 deletions

View file

@ -176,22 +176,28 @@ public class SqliteDatabaseProvider(string filePath) : IDatabaseProvider
FROM sa_admins_flags
JOIN sa_admins ON sa_admins_flags.admin_id = sa_admins.id
WHERE (sa_admins.ends IS NULL OR sa_admins.ends > @CurrentTime)
AND (sa_admins.server_id IS NULL OR sa_admins.server_id = @serverid)
AND (sa_admins.`global` = 1
OR EXISTS (SELECT 1 FROM sa_admins_servers
WHERE sa_admins_servers.admin_id = sa_admins.id
AND sa_admins_servers.server_id = @serverid))
ORDER BY sa_admins.player_steamid
""";
public string GetDeleteAdminQuery(bool globalDelete) =>
globalDelete
? "DELETE FROM sa_admins WHERE player_steamid = @PlayerSteamID"
: "DELETE FROM sa_admins WHERE player_steamid = @PlayerSteamID AND server_id = @ServerId";
: "DELETE FROM sa_admins_servers WHERE server_id = @ServerId AND admin_id IN (SELECT id FROM sa_admins WHERE player_steamid = @PlayerSteamID)";
public string GetAddAdminQuery() =>
"""
INSERT INTO sa_admins (player_steamid, player_name, immunity, ends, created, server_id)
VALUES (@playerSteamId, @playerName, @immunity, @ends, @created, @serverid);
INSERT INTO sa_admins (player_steamid, player_name, immunity, ends, created, `global`)
VALUES (@playerSteamId, @playerName, @immunity, @ends, @created, @isGlobal);
SELECT last_insert_rowid();
""";
public string GetAddAdminServerQuery() =>
"INSERT INTO sa_admins_servers (admin_id, server_id) VALUES (@adminId, @server_id);";
public string GetGroupsQuery() =>
"""
SELECT g.group_id, sg.name AS group_name, sg.immunity, f.flag