· 8 years ago · Jul 01, 2018, 09:46 AM
1 SQL CALLBACKS //
2//////////////////////////////
3
4public SQLCallback_Connect(Database db, const char[] error, any data)
5{
6 if (db == null)
7 {
8 SetFailState("Failed to connect to SQL database. Error: %s", error);
9 }
10 else
11 {
12 // If it's already connected we are good to go
13 if(g_dDatabase != null)
14 return;
15
16 g_dDatabase = db;
17
18 char m_szDriver[2];
19 DBDriver iDriver = g_dDatabase.Driver;
20 iDriver.GetIdentifier(m_szDriver, sizeof(m_szDriver));
21 if (StrEqual(m_szDriver, "mysql", false))
22 {
23 g_bMySQL = true;
24 SQL_TVoid(g_dDatabase, "CREATE TABLE IF NOT EXISTS `store_players` (\
25 `id` int(11) NOT NULL AUTO_INCREMENT,\
26 `authid` varchar(32) NOT NULL,\
27 `name` varchar(64) NOT NULL,\
28 `credits` int(11) NOT NULL,\
29 `date_of_join` int(11) NOT NULL,\
30 `date_of_last_join` int(11) NOT NULL,\
31 PRIMARY KEY (`id`),\
32 UNIQUE KEY `id` (`id`),\
33 UNIQUE KEY `authid` (`authid`)\
34 ) ENGINE=InnoDB CHARSET=utf8mb4;");
35 SQL_TVoid(g_dDatabase, "CREATE TABLE IF NOT EXISTS `store_items` (\
36 `id` int(11) NOT NULL AUTO_INCREMENT,\
37 `player_id` int(11) NOT NULL,\
38 `type` varchar(16) NOT NULL,\
39 `unique_id` varchar(256) NOT NULL,\
40 `date_of_purchase` int(11) NOT NULL,\
41 `date_of_expiration` int(11) NOT NULL,\
42 PRIMARY KEY (`id`)\
43 ) ENGINE=InnoDB CHARSET=utf8mb4;");
44 SQL_TVoid(g_dDatabase, "CREATE TABLE IF NOT EXISTS `store_equipment` (\
45 `player_id` int(11) NOT NULL,\
46 `type` varchar(16) NOT NULL,\
47 `unique_id` varchar(256) NOT NULL,\
48 `slot` int(11) NOT NULL\
49 ) ENGINE=InnoDB CHARSET=utf8mb4;");
50 SQL_TVoid(g_dDatabase, "CREATE TABLE IF NOT EXISTS `store_logs` (\
51 `id` int(11) NOT NULL AUTO_INCREMENT,\
52 `player_id` int(11) NOT NULL,\
53 `credits` int(11) NOT NULL,\
54 `reason` varchar(256) NOT NULL,\
55 `date` int(11) NOT NULL,\
56 PRIMARY KEY (`id`)\
57 ) ENGINE=InnoDB CHARSET=utf8mb4;");
58 g_dDatabase.Query(SQLCallback_NoError, "ALTER TABLE store_items ADD COLUMN price_of_purchase int(11)");
59 char m_szQuery[512];
60 Format(m_szQuery, sizeof(m_szQuery), "CREATE TABLE IF NOT EXISTS `%s` (\
61 `id` int(11) NOT NULL AUTO_INCREMENT,\
62 `parent_id` int(11) NOT NULL DEFAULT '-1',\
63 `item_price` int(32) NOT NULL,\
64 `item_type` varchar(64) NOT NULL,\
65 `item_flag` varchar(64) NOT NULL,\
66 `item_name` varchar(64) NOT NULL,\
67 `additional_info` text NOT NULL,\
68 `item_status` tinyint(1) NOT NULL,\
69 `supported_game` varchar(64) NOT NULL,\
70 PRIMARY KEY (`id`)\
71 ) ENGINE=InnoDB CHARSET=utf8mb4;", g_eCvars[g_cvarItemsTable][sCache]);
72 SQL_TVoid(g_dDatabase, m_szQuery);
73 }
74 else // sqlite utf8
75 {
76 SQL_TVoid(g_dDatabase, "CREATE TABLE IF NOT EXISTS `store_players` (\
77 `id` INTEGER PRIMARY KEY AUTOINCREMENT,\
78 `authid` varchar(32) NOT NULL,\
79 `name` varchar(64) NOT NULL,\
80 `credits` int(11) NOT NULL,\
81 `date_of_join` int(11) NOT NULL,\
82 `date_of_last_join` int(11) NOT NULL\
83 )");
84 SQL_TVoid(g_dDatabase, "CREATE TABLE IF NOT EXISTS `store_items` (\
85 `id` INTEGER PRIMARY KEY AUTOINCREMENT,\
86 `player_id` int(11) NOT NULL,\
87 `type` varchar(16) NOT NULL,\
88 `unique_id` varchar(256) NOT NULL,\
89 `date_of_purchase` int(11) NOT NULL,\
90 `date_of_expiration` int(11) NOT NULL\
91 )");
92 SQL_TVoid(g_dDatabase, "CREATE TABLE IF NOT EXISTS `store_equipment` (\
93 `player_id` int(11) NOT NULL,\
94 `type` varchar(16) NOT NULL,\
95 `unique_id` varchar(256) NOT NULL,\
96 `slot` int(11) NOT NULL\
97 )");
98 g_dDatabase.Query(SQLCallback_NoError, "ALTER TABLE store_items ADD COLUMN price_of_purchase int(11)");
99 if(strcmp(g_eCvars[g_cvarItemSource][sCache], "database")==0)
100 {
101
102 SetFailState("Database item source can only be used with MySQL databases");
103 }