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; return;
} }
char[] sQuery = new char[64]; char[] sQuery = new char[192];
FormatEx(sQuery, 64, "SELECT lastlogin FROM %susers LIMIT 1;", gS_MySQLPrefix); FormatEx(sQuery, 192, "SELECT lastlogin FROM %susers LIMIT 1;", gS_MySQLPrefix);
gH_SQL.Query(SQL_TableMigration1_Callback, sQuery, 0, DBPrio_High); 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); 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) 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) if(results == null)
{ {
char[] sQuery = new char[128]; 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); gH_SQL.Query(SQL_AlterTable1_Callback, sQuery);
} }
} }
@ -1719,7 +1737,7 @@ public void SQL_TableMigration2_Callback(Database db, DBResultSet results, const
if(results == null) if(results == null)
{ {
char[] sQuery = new char[128]; 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); 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) public void PreThinkPost(int client)
{ {
if(IsPlayerAlive(client)) if(IsPlayerAlive(client))

View File

@ -59,7 +59,6 @@ bool gB_Late = false;
int gI_Tier = 1; // No floating numbers for tiers, sorry. int gI_Tier = 1; // No floating numbers for tiers, sorry.
char gS_Map[160]; char gS_Map[160];
char gS_DisplayMap[128];
int gI_ValidMaps = 0; int gI_ValidMaps = 0;
ArrayList gA_ValidMaps = null; ArrayList gA_ValidMaps = null;
@ -309,7 +308,7 @@ public void OnMapStart()
} }
GetCurrentMap(gS_Map, 160); GetCurrentMap(gS_Map, 160);
GetMapDisplayName(gS_Map, gS_DisplayMap, 128); GetMapDisplayName(gS_Map, gS_Map, 160);
// Default tier. // Default tier.
// I won't repeat the same mistake blacky has done with tier 3 being default.. // 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]; char[] sMap = new char[160];
results.FetchString(0, sMap, 160); results.FetchString(0, sMap, 160);
char[] sDisplayMap = new char[128]; gA_MapTiers.SetValue(sMap, results.FetchInt(1));
GetMapDisplayName(sMap, sDisplayMap, 128); gA_ValidMaps.PushString(sMap);
gA_MapTiers.SetValue(sDisplayMap, results.FetchInt(1));
gA_ValidMaps.PushString(sDisplayMap);
} }
gI_ValidMaps = gA_ValidMaps.Length; gI_ValidMaps = gA_ValidMaps.Length;
@ -422,7 +418,7 @@ public Action Command_Tier(int client, int args)
int tier = gI_Tier; int tier = gI_Tier;
char[] sMap = new char[128]; char[] sMap = new char[128];
strcopy(sMap, 128, gS_DisplayMap); strcopy(sMap, 128, gS_Map);
if(args > 0) if(args > 0)
{ {
@ -431,7 +427,7 @@ public Action Command_Tier(int client, int args)
if(!gA_MapTiers.GetValue(sMap, tier)) 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]; char[] sMap = new char[192];
results.FetchString(0, sMap, 192); results.FetchString(0, sMap, 192);
GetMapDisplayName(sMap, sMap, 192);
char[] sRecordID = new char[16]; char[] sRecordID = new char[16];
char[] sDisplay = new char[256]; 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[] sName = new char[MAX_NAME_LENGTH];
char[] sAuthID = new char[32]; char[] sAuthID = new char[32];
char[] sMap = new char[256]; char[] sMap = new char[192];
if(results.FetchRow()) if(results.FetchRow())
{ {
@ -762,7 +761,7 @@ public void SQL_SubMenu_Callback(Database db, DBResultSet results, const char[]
results.FetchString(4, sAuthID, 32); results.FetchString(4, sAuthID, 32);
// 6 - map // 6 - map
results.FetchString(6, sMap, 256); results.FetchString(6, sMap, 192);
float points = results.FetchFloat(9); 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); FormatEx(sDisplay, 128, (sync > 0.0)? "%T: %d (%.02f%%)":"%T: %d", "Strafes", client, strafes, sync, "Strafes", client, strafes);
menu.AddItem("-1", sDisplay); menu.AddItem("-1", sDisplay);
} }
GetMapDisplayName(sMap, sMap, 256);
} }
char[] sFormattedTitle = new char[256]; char[] sFormattedTitle = new char[256];

View File

@ -160,8 +160,9 @@ void StartCalculating()
{ {
if(gH_SQL != null) if(gH_SQL != null)
{ {
char sMap[256]; char sMap[160];
GetCurrentMap(sMap, 256); GetCurrentMap(sMap, 160);
GetMapDisplayName(sMap, sMap, 160);
char sQuery[512]; 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); 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]; int gBS_LastWR[MAXPLAYERS+1];
char gS_ClientMap[MAXPLAYERS+1][128]; char gS_ClientMap[MAXPLAYERS+1][128];
int gI_LastTrack[MAXPLAYERS+1]; 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; ArrayList gA_ValidMaps = null;
int gI_ValidMaps = 1; int gI_ValidMaps = 1;
@ -314,18 +314,15 @@ public void OnLibraryRemoved(const char[] name)
public void OnMapStart() public void OnMapStart()
{ {
GetCurrentMap(gS_Map, 128); GetCurrentMap(gS_Map, 160);
GetMapDisplayName(gS_Map, gS_Map, 160);
if(gH_SQL != null) if(gH_SQL != null)
{ {
UpdateWRCache(); UpdateWRCache();
int size = (strlen(gS_Map) + 1); char[] sLowerCase = new char[160];
char[] sDisplayMap = new char[size]; strcopy(sLowerCase, 160, gS_Map);
GetMapDisplayName(gS_Map, sDisplayMap, size);
char[] sLowerCase = new char[128];
strcopy(sLowerCase, 128, sDisplayMap);
for(int i = 0; i < strlen(sLowerCase); i++) 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]; char[] sMap = new char[192];
results.FetchString(0, sMap, 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]; char[] sLowerCase = new char[128];
strcopy(sLowerCase, 128, sDisplayMap); strcopy(sLowerCase, 128, sMap);
for(int i = 0; i < strlen(sLowerCase); i++) 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) 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]; char[] sTrack = new char[32];
GetTrackName(client, gI_LastTrack[client], sTrack, 32); GetTrackName(client, gI_LastTrack[client], sTrack, 32);
Menu menu = new Menu(MenuHandler_DeleteAll); 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]; char[] sMenuItem = new char[64];
@ -819,11 +809,8 @@ public Action Command_DeleteStyleRecords(int client, int args)
return Plugin_Handled; 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 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++) for(int i = 0; i < gI_Styles; i++)
{ {
@ -1031,11 +1018,8 @@ public void SQL_OpenDelete_Callback(Database db, DBResultSet results, const char
return; return;
} }
char[] sDisplayMap = new char[strlen(gS_Map) + 1];
GetMapDisplayName(gS_Map, sDisplayMap, strlen(gS_Map) + 1);
Menu menu = new Menu(OpenDelete_Handler); 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; 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]; char[] sFormattedTitle = new char[256];
if(menu.ItemCount == 0) if(menu.ItemCount == 0)
{ {
menu.SetTitle("%T", "WRMap", client, sDisplayMap); menu.SetTitle("%T", "WRMap", client, sMap);
char[] sNoRecords = new char[64]; char[] sNoRecords = new char[64];
FormatEx(sNoRecords, 64, "%T", "WRMapNoRecords", client); 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]; char[] sTrack = new char[32];
GetTrackName(client, track, sTrack, 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); menu.SetTitle(sFormattedTitle);
} }
@ -1574,10 +1554,7 @@ public void SQL_RR_Callback(Database db, DBResultSet results, const char[] error
{ {
char[] sMap = new char[192]; char[] sMap = new char[192];
results.FetchString(1, sMap, 192); results.FetchString(1, sMap, 192);
char[] sDisplayMap = new char[64];
GetMapDisplayName(sMap, sDisplayMap, 64);
char[] sName = new char[MAX_NAME_LENGTH]; char[] sName = new char[MAX_NAME_LENGTH];
results.FetchString(2, sName, 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) 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 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]; 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[] sFormattedTitle = new char[256];
char[] sName = new char[MAX_NAME_LENGTH]; char[] sName = new char[MAX_NAME_LENGTH];
char[] sAuthID = new char[32]; char[] sAuthID = new char[32];
char[] sDisplayMap = new char[192];
char[] sTrack = new char[32]; char[] sTrack = new char[32];
char[] sMap = new char[192];
if(results.FetchRow()) if(results.FetchRow())
{ {
@ -1721,10 +1698,8 @@ public void SQL_SubMenu_Callback(Database db, DBResultSet results, const char[]
menu.AddItem("-1", sDisplay); menu.AddItem("-1", sDisplay);
// 6 - map // 6 - map
char[] sMap = new char[192];
results.FetchString(6, sMap, 192); results.FetchString(6, sMap, 192);
GetMapDisplayName(sMap, sDisplayMap, 192);
float fPoints = results.FetchFloat(9); float fPoints = results.FetchFloat(9);
if(gB_Rankings && fPoints > 0.0) 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) 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 else

View File

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