summaryrefslogtreecommitdiff
path: root/sourcemod/scripting/gokz-localranks/db/cache_records.sp
blob: 611b13cc4ced3ce39f60e5312692099cc798a610 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*
	Caches the record times on the map.
*/



void DB_CacheRecords(int mapID)
{
	char query[1024];

	Transaction txn = SQL_CreateTransaction();

	// Reset record exists array
	for (int course = 0; course < GOKZ_MAX_COURSES; course++)
	{
		for (int mode = 0; mode < MODE_COUNT; mode++)
		{
			for (int timeType = 0; timeType < TIMETYPE_COUNT; timeType++)
			{
				gB_RecordExistsCache[course][mode][timeType] = false;
			}
		}
	}

	// Get Map WRs
	FormatEx(query, sizeof(query), sql_getwrs, mapID);
	txn.AddQuery(query);
	// Get PRO WRs
	FormatEx(query, sizeof(query), sql_getwrspro, mapID);
	txn.AddQuery(query);

	SQL_ExecuteTransaction(gH_DB, txn, DB_TxnSuccess_CacheRecords, DB_TxnFailure_Generic, _, DBPrio_High);
}

public void DB_TxnSuccess_CacheRecords(Handle db, any data, int numQueries, Handle[] results, any[] queryData)
{
	int course, mode;

	while (SQL_FetchRow(results[0]))
	{
		course = SQL_FetchInt(results[0], 1);
		mode = SQL_FetchInt(results[0], 2);
		gB_RecordExistsCache[course][mode][TimeType_Nub] = true;
		gF_RecordTimesCache[course][mode][TimeType_Nub] = GOKZ_DB_TimeIntToFloat(SQL_FetchInt(results[0], 0));
	}

	while (SQL_FetchRow(results[1]))
	{
		course = SQL_FetchInt(results[1], 1);
		mode = SQL_FetchInt(results[1], 2);
		gB_RecordExistsCache[course][mode][TimeType_Pro] = true;
		gF_RecordTimesCache[course][mode][TimeType_Pro] = GOKZ_DB_TimeIntToFloat(SQL_FetchInt(results[1], 0));
	}
}