Dropped workshop map names.

Added table migrations so tables get the workshop/xxxxx/ prefix removed.
This commit is contained in:
shavitush 2017-08-15 01:56:12 +03:00
parent 9ac71c3a08
commit d5d4ee487f
6 changed files with 91 additions and 65 deletions

View File

@ -1686,12 +1686,30 @@ public void SQL_CreateTable_Callback(Database db, DBResultSet results, const cha
return;
}
char[] sQuery = new char[64];
FormatEx(sQuery, 64, "SELECT lastlogin FROM %susers LIMIT 1;", gS_MySQLPrefix);
char[] sQuery = new char[192];
FormatEx(sQuery, 192, "SELECT lastlogin FROM %susers LIMIT 1;", gS_MySQLPrefix);
gH_SQL.Query(SQL_TableMigration1_Callback, sQuery, 0, DBPrio_High);
FormatEx(sQuery, 64, "SELECT points FROM %susers LIMIT 1;", gS_MySQLPrefix);
FormatEx(sQuery, 192, "SELECT points FROM %susers LIMIT 1;", gS_MySQLPrefix);
gH_SQL.Query(SQL_TableMigration2_Callback, sQuery, 0, DBPrio_High);
// TODO: table migration to all tables here, to remove workshop/xxxxxx/ from names
char sTables[][] =
{
"maptiers",
"mapzones",
"playertimes"
};
for(int i = 0; i < sizeof(sTables); i++)
{
DataPack dp = new DataPack();
dp.WriteString(sTables[i]);
FormatEx(sQuery, 192, "SELECT map FROM %s%s WHERE map LIKE 'workshop%%' GROUP BY map;", gS_MySQLPrefix, sTables[i]);
gH_SQL.Query(SQL_TableMigration3_Callback, sQuery, dp, DBPrio_Low);
}
}
public void SQL_TableMigration1_Callback(Database db, DBResultSet results, const char[] error, any data)
@ -1699,7 +1717,7 @@ public void SQL_TableMigration1_Callback(Database db, DBResultSet results, const
if(results == null)
{
char[] sQuery = new char[128];
FormatEx(sQuery, 128, "ALTER TABLE `%susers` ADD %s;", gS_MySQLPrefix, gB_MySQL? "(`lastlogin` INT NOT NULL DEFAULT -1)":"COLUMN `lastlogin` INTEGER NOT NULL DEFAULT -1");
FormatEx(sQuery, 128, "ALTER TABLE `%susers` ADD %s;", gS_MySQLPrefix, (gB_MySQL)? "(`lastlogin` INT NOT NULL DEFAULT -1)":"COLUMN `lastlogin` INTEGER NOT NULL DEFAULT -1");
gH_SQL.Query(SQL_AlterTable1_Callback, sQuery);
}
}
@ -1719,7 +1737,7 @@ public void SQL_TableMigration2_Callback(Database db, DBResultSet results, const
if(results == null)
{
char[] sQuery = new char[128];
FormatEx(sQuery, 128, "ALTER TABLE `%susers` ADD %s;", gS_MySQLPrefix, gB_MySQL? "(`points` FLOAT NOT NULL DEFAULT 0)":"COLUMN `points` FLOAT NOT NULL DEFAULT 0");
FormatEx(sQuery, 128, "ALTER TABLE `%susers` ADD %s;", gS_MySQLPrefix, (gB_MySQL)? "(`points` FLOAT NOT NULL DEFAULT 0)":"COLUMN `points` FLOAT NOT NULL DEFAULT 0");
gH_SQL.Query(SQL_AlterTable2_Callback, sQuery);
}
}
@ -1734,6 +1752,44 @@ public void SQL_AlterTable2_Callback(Database db, DBResultSet results, const cha
}
}
public void SQL_TableMigration3_Callback(Database db, DBResultSet results, const char[] error, DataPack data)
{
char[] sTable = new char[16];
data.Reset();
data.ReadString(sTable, 16);
delete data;
if(results == null || results.RowCount == 0)
{
// no error logging here because not everyone runs the rankings/wr modules
return;
}
while(results.FetchRow())
{
char[] sMap = new char[160];
results.FetchString(0, sMap, 160);
char[] sDisplayMap = new char[160];
GetMapDisplayName(sMap, sDisplayMap, 160);
char[] sQuery = new char[256];
FormatEx(sQuery, 256, "UPDATE %s%s SET map = '%s' WHERE map = '%s';", gS_MySQLPrefix, sTable, sDisplayMap, sMap);
gH_SQL.Query(SQL_AlterTable3_Callback, sQuery, 0, DBPrio_High);
}
}
public void SQL_AlterTable3_Callback(Database db, DBResultSet results, const char[] error, any data)
{
if(results == null)
{
LogError("Timer error! Table alteration 3 (core) failed. Reason: %s", error);
return;
}
}
public void PreThinkPost(int client)
{
if(IsPlayerAlive(client))

View File

@ -59,7 +59,6 @@ bool gB_Late = false;
int gI_Tier = 1; // No floating numbers for tiers, sorry.
char gS_Map[160];
char gS_DisplayMap[128];
int gI_ValidMaps = 0;
ArrayList gA_ValidMaps = null;
@ -309,7 +308,7 @@ public void OnMapStart()
}
GetCurrentMap(gS_Map, 160);
GetMapDisplayName(gS_Map, gS_DisplayMap, 128);
GetMapDisplayName(gS_Map, gS_Map, 160);
// Default tier.
// I won't repeat the same mistake blacky has done with tier 3 being default..
@ -377,11 +376,8 @@ public void SQL_FillTierCache_Callback(Database db, DBResultSet results, const c
char[] sMap = new char[160];
results.FetchString(0, sMap, 160);
char[] sDisplayMap = new char[128];
GetMapDisplayName(sMap, sDisplayMap, 128);
gA_MapTiers.SetValue(sDisplayMap, results.FetchInt(1));
gA_ValidMaps.PushString(sDisplayMap);
gA_MapTiers.SetValue(sMap, results.FetchInt(1));
gA_ValidMaps.PushString(sMap);
}
gI_ValidMaps = gA_ValidMaps.Length;
@ -422,7 +418,7 @@ public Action Command_Tier(int client, int args)
int tier = gI_Tier;
char[] sMap = new char[128];
strcopy(sMap, 128, gS_DisplayMap);
strcopy(sMap, 128, gS_Map);
if(args > 0)
{
@ -431,7 +427,7 @@ public Action Command_Tier(int client, int args)
if(!gA_MapTiers.GetValue(sMap, tier))
{
strcopy(sMap, 128, gS_DisplayMap);
strcopy(sMap, 128, gS_Map);
}
}

View File

@ -629,7 +629,6 @@ public void ShowMapsCallback(Database db, DBResultSet results, const char[] erro
{
char[] sMap = new char[192];
results.FetchString(0, sMap, 192);
GetMapDisplayName(sMap, sMap, 192);
char[] sRecordID = new char[16];
char[] sDisplay = new char[256];
@ -732,7 +731,7 @@ public void SQL_SubMenu_Callback(Database db, DBResultSet results, const char[]
char[] sName = new char[MAX_NAME_LENGTH];
char[] sAuthID = new char[32];
char[] sMap = new char[256];
char[] sMap = new char[192];
if(results.FetchRow())
{
@ -762,7 +761,7 @@ public void SQL_SubMenu_Callback(Database db, DBResultSet results, const char[]
results.FetchString(4, sAuthID, 32);
// 6 - map
results.FetchString(6, sMap, 256);
results.FetchString(6, sMap, 192);
float points = results.FetchFloat(9);
@ -792,8 +791,6 @@ public void SQL_SubMenu_Callback(Database db, DBResultSet results, const char[]
FormatEx(sDisplay, 128, (sync > 0.0)? "%T: %d (%.02f%%)":"%T: %d", "Strafes", client, strafes, sync, "Strafes", client, strafes);
menu.AddItem("-1", sDisplay);
}
GetMapDisplayName(sMap, sMap, 256);
}
char[] sFormattedTitle = new char[256];

View File

@ -160,8 +160,9 @@ void StartCalculating()
{
if(gH_SQL != null)
{
char sMap[256];
GetCurrentMap(sMap, 256);
char sMap[160];
GetCurrentMap(sMap, 160);
GetMapDisplayName(sMap, sMap, 160);
char sQuery[512];
FormatEx(sQuery, 512, "SELECT COUNT(*), SUM(t.time) FROM (SELECT r.time, r.style FROM %splayertimes r WHERE r.map = '%s' AND r.track = 0 %sORDER BY r.time LIMIT %d) t;", gS_MySQLPrefix, sMap, (gB_Style)? "AND style = 0 ":"", gI_PlayerAmount);

View File

@ -49,7 +49,7 @@ bool gB_MySQL = false;
int gBS_LastWR[MAXPLAYERS+1];
char gS_ClientMap[MAXPLAYERS+1][128];
int gI_LastTrack[MAXPLAYERS+1];
char gS_Map[192]; // blame workshop paths being so fucking long
char gS_Map[160]; // blame workshop paths being so fucking long
ArrayList gA_ValidMaps = null;
int gI_ValidMaps = 1;
@ -314,18 +314,15 @@ public void OnLibraryRemoved(const char[] name)
public void OnMapStart()
{
GetCurrentMap(gS_Map, 128);
GetCurrentMap(gS_Map, 160);
GetMapDisplayName(gS_Map, gS_Map, 160);
if(gH_SQL != null)
{
UpdateWRCache();
int size = (strlen(gS_Map) + 1);
char[] sDisplayMap = new char[size];
GetMapDisplayName(gS_Map, sDisplayMap, size);
char[] sLowerCase = new char[128];
strcopy(sLowerCase, 128, sDisplayMap);
char[] sLowerCase = new char[160];
strcopy(sLowerCase, 160, gS_Map);
for(int i = 0; i < strlen(sLowerCase); i++)
{
@ -365,12 +362,8 @@ public void SQL_UpdateMaps_Callback(Database db, DBResultSet results, const char
char[] sMap = new char[192];
results.FetchString(0, sMap, 192);
int size = (strlen(sMap) + 1);
char[] sDisplayMap = new char[size];
GetMapDisplayName(sMap, sDisplayMap, size);
char[] sLowerCase = new char[128];
strcopy(sLowerCase, 128, sDisplayMap);
strcopy(sLowerCase, 128, sMap);
for(int i = 0; i < strlen(sLowerCase); i++)
{
@ -754,14 +747,11 @@ public int MenuHandler_DeleteAll_First(Menu menu, MenuAction action, int param1,
void DeleteAllSubmenu(int client)
{
char[] sDisplayMap = new char[strlen(gS_Map) + 1];
GetMapDisplayName(gS_Map, sDisplayMap, strlen(gS_Map) + 1);
char[] sTrack = new char[32];
GetTrackName(client, gI_LastTrack[client], sTrack, 32);
Menu menu = new Menu(MenuHandler_DeleteAll);
menu.SetTitle("%T\n ", "DeleteAllRecordsMenuTitle", client, sDisplayMap, sTrack);
menu.SetTitle("%T\n ", "DeleteAllRecordsMenuTitle", client, gS_Map, sTrack);
char[] sMenuItem = new char[64];
@ -819,11 +809,8 @@ public Action Command_DeleteStyleRecords(int client, int args)
return Plugin_Handled;
}
char[] sDisplayMap = new char[strlen(gS_Map) + 1];
GetMapDisplayName(gS_Map, sDisplayMap, strlen(gS_Map) + 1);
Menu menu = new Menu(MenuHandler_DeleteStyleRecords);
menu.SetTitle("%T\n ", "DeleteStyleRecordsRecordsMenuTitle", client, sDisplayMap);
menu.SetTitle("%T\n ", "DeleteStyleRecordsRecordsMenuTitle", client, gS_Map);
for(int i = 0; i < gI_Styles; i++)
{
@ -1031,11 +1018,8 @@ public void SQL_OpenDelete_Callback(Database db, DBResultSet results, const char
return;
}
char[] sDisplayMap = new char[strlen(gS_Map) + 1];
GetMapDisplayName(gS_Map, sDisplayMap, strlen(gS_Map) + 1);
Menu menu = new Menu(OpenDelete_Handler);
menu.SetTitle("%t", "ListClientRecords", sDisplayMap, gS_StyleStrings[style][sStyleName]);
menu.SetTitle("%t", "ListClientRecords", gS_Map, gS_StyleStrings[style][sStyleName]);
int iCount = 0;
@ -1461,15 +1445,11 @@ public void SQL_WR_Callback(Database db, DBResultSet results, const char[] error
}
}
int size = (strlen(sMap) + 1);
char[] sDisplayMap = new char[size];
GetMapDisplayName(sMap, sDisplayMap, size + 1);
char[] sFormattedTitle = new char[256];
if(menu.ItemCount == 0)
{
menu.SetTitle("%T", "WRMap", client, sDisplayMap);
menu.SetTitle("%T", "WRMap", client, sMap);
char[] sNoRecords = new char[64];
FormatEx(sNoRecords, 64, "%T", "WRMapNoRecords", client);
@ -1496,7 +1476,7 @@ public void SQL_WR_Callback(Database db, DBResultSet results, const char[] error
char[] sTrack = new char[32];
GetTrackName(client, track, sTrack, 32);
FormatEx(sFormattedTitle, 192, "%T %s: [%s]\n%s", "WRRecordFor", client, sDisplayMap, sTrack, sRanks);
FormatEx(sFormattedTitle, 192, "%T %s: [%s]\n%s", "WRRecordFor", client, sMap, sTrack, sRanks);
menu.SetTitle(sFormattedTitle);
}
@ -1574,10 +1554,7 @@ public void SQL_RR_Callback(Database db, DBResultSet results, const char[] error
{
char[] sMap = new char[192];
results.FetchString(1, sMap, 192);
char[] sDisplayMap = new char[64];
GetMapDisplayName(sMap, sDisplayMap, 64);
char[] sName = new char[MAX_NAME_LENGTH];
results.FetchString(2, sName, MAX_NAME_LENGTH);
@ -1596,12 +1573,12 @@ public void SQL_RR_Callback(Database db, DBResultSet results, const char[] error
if(gB_Rankings && fPoints > 0.0)
{
FormatEx(sDisplay, 192, "[%s] [%s] %s - %s @ %s (%.03f %T)", gS_StyleStrings[style][sShortName], sTrack, sDisplayMap, sName, sTime, fPoints, "WRPoints", client);
FormatEx(sDisplay, 192, "[%s] [%s] %s - %s @ %s (%.03f %T)", gS_StyleStrings[style][sShortName], sTrack, sMap, sName, sTime, fPoints, "WRPoints", client);
}
else
{
FormatEx(sDisplay, 192, "[%s] [%s] %s - %s @ %s (%d %T)", gS_StyleStrings[style][sShortName], sTrack, sDisplayMap, sName, sTime, jumps, "WRJumps", client);
FormatEx(sDisplay, 192, "[%s] [%s] %s - %s @ %s (%d %T)", gS_StyleStrings[style][sShortName], sTrack, sMap, sName, sTime, jumps, "WRJumps", client);
}
char[] sInfo = new char[192];
@ -1693,8 +1670,8 @@ public void SQL_SubMenu_Callback(Database db, DBResultSet results, const char[]
char[] sFormattedTitle = new char[256];
char[] sName = new char[MAX_NAME_LENGTH];
char[] sAuthID = new char[32];
char[] sDisplayMap = new char[192];
char[] sTrack = new char[32];
char[] sMap = new char[192];
if(results.FetchRow())
{
@ -1721,10 +1698,8 @@ public void SQL_SubMenu_Callback(Database db, DBResultSet results, const char[]
menu.AddItem("-1", sDisplay);
// 6 - map
char[] sMap = new char[192];
results.FetchString(6, sMap, 192);
GetMapDisplayName(sMap, sDisplayMap, 192);
float fPoints = results.FetchFloat(9);
if(gB_Rankings && fPoints > 0.0)
@ -1787,7 +1762,7 @@ public void SQL_SubMenu_Callback(Database db, DBResultSet results, const char[]
if(strlen(sName) > 0)
{
FormatEx(sFormattedTitle, 256, "%s %s\n--- %s: [%s]", sName, sAuthID, sDisplayMap, sTrack);
FormatEx(sFormattedTitle, 256, "%s %s\n--- %s: [%s]", sName, sAuthID, sMap, sTrack);
}
else

View File

@ -37,7 +37,7 @@ Database gH_SQL = null;
bool gB_MySQL = false;
bool gB_DBReady = false;
char gS_Map[128];
char gS_Map[160];
char gS_ZoneNames[][] =
{
@ -532,7 +532,8 @@ void LoadZoneSettings()
public void OnMapStart()
{
GetCurrentMap(gS_Map, 128);
GetCurrentMap(gS_Map, 160);
GetMapDisplayName(gS_Map, gS_Map, 160);
gI_MapZones = 0;
UnloadZones(0);