Skip to content

Commit df22953

Browse files
authored
Fix tables upgrades which stop after the first upgrade (#433)
* Step by Step upgrades * Update sql.sp
1 parent 82a269f commit df22953

File tree

1 file changed

+62
-40
lines changed
  • addons/sourcemod/scripting/surftimer

1 file changed

+62
-40
lines changed

addons/sourcemod/scripting/surftimer/sql.sp

Lines changed: 62 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -45,45 +45,7 @@ public void db_setupDatabase()
4545
g_bRenaming = false;
4646
g_bInTransactionChain = false;
4747

48-
// If tables haven't been created yet.
49-
if (!SQL_FastQuery(g_hDb, "SELECT steamid FROM ck_playerrank LIMIT 1"))
50-
{
51-
SQL_UnlockDatabase(g_hDb);
52-
db_createTables();
53-
return;
54-
}
55-
else
56-
{
57-
// Check for db upgrades
58-
if (!SQL_FastQuery(g_hDb, "SELECT prespeed FROM ck_zones LIMIT 1"))
59-
{
60-
db_upgradeDatabase(0);
61-
return;
62-
}
63-
else if(!SQL_FastQuery(g_hDb, "SELECT ranked FROM ck_maptier LIMIT 1") || !SQL_FastQuery(g_hDb, "SELECT style FROM ck_playerrank LIMIT 1;"))
64-
{
65-
db_upgradeDatabase(1);
66-
return;
67-
}
68-
else if (!SQL_FastQuery(g_hDb, "SELECT wrcppoints FROM ck_playerrank LIMIT 1"))
69-
{
70-
db_upgradeDatabase(2);
71-
}
72-
else if (!SQL_FastQuery(g_hDb, "SELECT teleside FROM ck_playeroptions LIMIT 1"))
73-
{
74-
db_upgradeDatabase(3);
75-
}
76-
else if (!SQL_FastQuery(g_hDb, "SELECT steamid FROM ck_prinfo LIMIT 1"))
77-
{
78-
db_upgradeDatabase(4);
79-
}
80-
else if (!SQL_FastQuery(g_hDb, "SELECT csd_update_rate FROM ck_playeroptions2 LIMIT 1"))
81-
{
82-
db_upgradeDatabase(5);
83-
}
84-
}
85-
86-
SQL_UnlockDatabase(g_hDb);
48+
CheckDatabaseForUpdates();
8749

8850
for (int i = 0; i < sizeof(g_failedTransactions); i++)
8951
g_failedTransactions[i] = 0;
@@ -124,6 +86,66 @@ public void SQLTxn_CreateDatabaseFailed(Handle db, any data, int numQueries, con
12486
SetFailState("[SurfTimer] Database tables could not be created! Error: %s", error);
12587
}
12688

89+
void CheckDatabaseForUpdates()
90+
{
91+
// If tables haven't been created yet.
92+
if (!SQL_FastQuery(g_hDb, "SELECT steamid FROM ck_playerrank LIMIT 1"))
93+
{
94+
SQL_UnlockDatabase(g_hDb);
95+
db_createTables();
96+
return;
97+
}
98+
else
99+
{
100+
LogMessage("Tables exists.");
101+
102+
// Check for db upgrades
103+
if (!SQL_FastQuery(g_hDb, "SELECT prespeed FROM ck_zones LIMIT 1"))
104+
{
105+
db_upgradeDatabase(0);
106+
return;
107+
}
108+
LogMessage("Version 0 looks good.");
109+
110+
if(!SQL_FastQuery(g_hDb, "SELECT ranked FROM ck_maptier LIMIT 1") || !SQL_FastQuery(g_hDb, "SELECT style FROM ck_playerrank LIMIT 1;"))
111+
{
112+
db_upgradeDatabase(1);
113+
return;
114+
}
115+
LogMessage("Version 1 looks good.");
116+
117+
if (!SQL_FastQuery(g_hDb, "SELECT wrcppoints FROM ck_playerrank LIMIT 1"))
118+
{
119+
db_upgradeDatabase(2);
120+
return;
121+
}
122+
LogMessage("Version 2 looks good.");
123+
124+
if (!SQL_FastQuery(g_hDb, "SELECT teleside FROM ck_playeroptions2 LIMIT 1"))
125+
{
126+
db_upgradeDatabase(3);
127+
return;
128+
}
129+
LogMessage("Version 3 looks good.");
130+
131+
if (!SQL_FastQuery(g_hDb, "SELECT steamid FROM ck_prinfo LIMIT 1"))
132+
{
133+
db_upgradeDatabase(4);
134+
return;
135+
}
136+
LogMessage("Version 4 looks good.");
137+
138+
if (!SQL_FastQuery(g_hDb, "SELECT csd_update_rate FROM ck_playeroptions2 LIMIT 1"))
139+
{
140+
db_upgradeDatabase(5);
141+
return;
142+
}
143+
LogMessage("Version 5 looks good.");
144+
}
145+
146+
SQL_UnlockDatabase(g_hDb);
147+
}
148+
127149
public void db_upgradeDatabase(int ver)
128150
{
129151
if (ver == 0)
@@ -172,7 +194,7 @@ public void db_upgradeDatabase(int ver)
172194
SQL_FastQuery(g_hDb, "ALTER TABLE ck_playeroptions2 ADD csd_update_rate int(11) NOT NULL DEFAULT '1', ADD csd_pos_x float(11) NOT NULL DEFAULT '0.5', ADD csd_pos_y float(11) NOT NULL DEFAULT '0.3', ADD csd_r int(11) NOT NULL DEFAULT '255', ADD csd_g int(11) NOT NULL DEFAULT '255', ADD csd_b int(11) NOT NULL DEFAULT '255';");
173195
}
174196

175-
SQL_UnlockDatabase(g_hDb);
197+
CheckDatabaseForUpdates();
176198
}
177199

178200
/* Admin Delete Menu */

0 commit comments

Comments
 (0)