From b5df2dfb0763fe263c0412e96d94e19aa66621b9 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Tue, 14 Aug 2007 05:42:44 +0000 Subject: [PATCH] schema change (ugh) normalized immunity properly --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401332 --- configs/sql-init-scripts/admins-mysql.sql | 7 +- configs/sql-init-scripts/admins-sqlite.sq3 | Bin 13312 -> 14336 bytes configs/sql-init-scripts/admins-sqlite.sql | 9 +- plugins/admin-sql-prefetch.sp | 259 ++++++++------------- plugins/admin-sql-threaded.sp | 154 ++++++------ plugins/sql-admin-manager.sp | 45 ++-- translations/sqladmins.phrases.txt | 5 + 7 files changed, 221 insertions(+), 258 deletions(-) diff --git a/configs/sql-init-scripts/admins-mysql.sql b/configs/sql-init-scripts/admins-mysql.sql index c8e06d34..12c79ed5 100644 --- a/configs/sql-init-scripts/admins-mysql.sql +++ b/configs/sql-init-scripts/admins-mysql.sql @@ -14,10 +14,15 @@ CREATE TABLE sm_groups ( immunity enum('none','all','default') NOT NULL, flags varchar(30) NOT NULL, name varchar(120) NOT NULL, - groups_immune varchar(255), PRIMARY KEY (id) ); +CREATE TABLE sm_group_immunity ( + group_id int(10) unsigned NOT NULL, + other_id int(10) unsigned NOT NULL, + PRIMARY KEY (group_id, other_id) +); + CREATE TABLE sm_group_overrides ( group_id int(10) unsigned NOT NULL, type enum('command','group') NOT NULL, diff --git a/configs/sql-init-scripts/admins-sqlite.sq3 b/configs/sql-init-scripts/admins-sqlite.sq3 index 2883fd10060345631e3d453f64200109e3503c95..2b01c1c7aee47c8f5c8ed369003e21fa1e9cf9f2 100644 GIT binary patch delta 430 zcmZq3XegKDI52}hyzNPq@DS&BmkYa#RV<|ION3$hNM|x3y zX#q$Fguya-uF91VF3mRe_v6oZO_C|)4ufnshT%>~4qK+J)J**6QaTwtEW z!NJ7*5y*VS%)`%EoEx8*lAD=V%(#h%MTCo)F@S+FfN>Gi(T$Bxj7$L{li8I5l$sPo z*~R7M8C&>E5|eUL;d8d8rCz ziABj7iA5Slrly))nvK3vlciL27`Z3At1M)dW)lzAovf!SJ()vQo*m?O7H9Fv_G(Tn hY>kl;lT%bxCT~>}oIF!?36r_xWGz)QMvg@SJOJS(Oxged diff --git a/configs/sql-init-scripts/admins-sqlite.sql b/configs/sql-init-scripts/admins-sqlite.sql index 1c0e2795..2a608548 100644 --- a/configs/sql-init-scripts/admins-sqlite.sql +++ b/configs/sql-init-scripts/admins-sqlite.sql @@ -12,8 +12,13 @@ CREATE TABLE sm_groups ( id INTEGER PRIMARY KEY AUTOINCREMENT, immunity varchar(16) NOT NULL CHECK(immunity IN ('none', 'default', 'global', 'all')), flags varchar(30) NOT NULL, - name varchar(120) NOT NULL, - groups_immune varchar(255) + name varchar(120) NOT NULL +); + +CREATE TABLE sm_group_immunity ( + group_id INTEGER NOT NULL, + other_id INTEGER NOT NULL, + PRIMARY KEY (group_id, other_id) ); CREATE TABLE sm_group_overrides ( diff --git a/plugins/admin-sql-prefetch.sp b/plugins/admin-sql-prefetch.sp index 4f2ad902..a5789bf2 100644 --- a/plugins/admin-sql-prefetch.sp +++ b/plugins/admin-sql-prefetch.sp @@ -101,7 +101,7 @@ FetchUsers(Handle:db) decl String:query[255], String:error[255]; new Handle:hQuery, Handle:hGroupQuery; - Format(query, sizeof(query), "SELECT id, authtype, identity, passwd, flags, name FROM sm_admins"); + Format(query, sizeof(query), "SELECT id, authtype, identity, password, flags, name FROM sm_admins"); if ((hQuery = SQL_Query(db, query)) == INVALID_HANDLE) { SQL_GetError(db, error, sizeof(error)); @@ -185,7 +185,7 @@ FetchGroups(Handle:db) decl String:query[255]; new Handle:hQuery; - Format(query, sizeof(query), "SELECT id, immunity, flags, name, groups_immune FROM sm_groups"); + Format(query, sizeof(query), "SELECT immunity, flags, name FROM sm_groups"); if ((hQuery = SQL_Query(db, query)) == INVALID_HANDLE) { @@ -196,24 +196,18 @@ FetchGroups(Handle:db) return; } - /* We cache basic group info so we can do reverse lookups */ - new Handle:groups = CreateArray(3); - /* Now start fetching groups */ decl String:immunity[16]; decl String:flags[32]; decl String:name[128]; - decl String:grp_immunity[256]; while (SQL_FetchRow(hQuery)) { - new id = SQL_FetchInt(hQuery, 0); - SQL_FetchString(hQuery, 1, immunity, sizeof(immunity)); - SQL_FetchString(hQuery, 2, flags, sizeof(flags)); - SQL_FetchString(hQuery, 3, name, sizeof(name)); - SQL_FetchString(hQuery, 4, grp_immunity, sizeof(grp_immunity)); + SQL_FetchString(hQuery, 0, immunity, sizeof(immunity)); + SQL_FetchString(hQuery, 1, flags, sizeof(flags)); + SQL_FetchString(hQuery, 2, name, sizeof(name)); #if defined _DEBUG - PrintToServer("Adding group (%d, %s, %s, %s, %s)", id, immunity, flags, name, grp_immunity); + PrintToServer("Adding group (%s, %s, %s)", immunity, flags, name); #endif /* Find or create the group */ @@ -245,108 +239,100 @@ FetchGroups(Handle:db) } else if (StrEqual(immunity, "global")) { SetAdmGroupImmunity(gid, Immunity_Global, true); } - - new Handle:immunity_list = UTIL_ExplodeNumberString(grp_immunity); - - /* Now, save all this for later */ - decl data[3]; - data[0] = id; - data[1] = _:gid; - data[2] = _:immunity_list; - - PushArrayArray(groups, data); } CloseHandle(hQuery); - /* Second pass - resolve immunity and group overrides */ - new num_groups = GetArraySize(groups); - for (new i=0; i 0)) - { - for (new j=0; j