· 7 years ago · Dec 03, 2018, 08:32 PM
1public void SQL_InitConnection()
2{
3 SQL_ConnectToDB();
4 CreateTimer(1.0, DoTheRest);
5}
6
7public Action DoTheRest(Handle timer)
8{
9 SQL_Create_Achievements_Table();
10 SQL_Create_Players_Table();
11 SQL_Create_PlayerID_Table();
12}
13
14public void SQL_ConnectToDB()
15{
16 char sError[512];
17 //DB = SQLite_UseDatabase("AchievementsGO",sError,sizeof(sError));
18 DB = SQL_Connect("AchievementsGO",true, sError, sizeof(sError));
19
20 SQL_CheckIfConnected(sError);
21}
22
23public void SQL_CheckIfConnected(char[] sError)
24{
25 if (DB == null)
26 {
27 LogMessage("Could not connect to the DataBase! Error: %s", sError);
28 }
29 else IsConnectionEstablished = true;
30}
31
32// @@ Creating Achievements table
33public void SQL_Create_Achievements_Table()
34{
35 if(IsConnectionEstablished)
36 {
37 char query[512];
38 FormatAchievementsQuery(query);
39 DB.Query(CheckIf_Achievements_QueryPassed, query, _, DBPrio_High);
40 }
41}
42
43public void FormatAchievementsQuery(char[] query)
44{
45 Format(query, 511, "CREATE TABLE IF NOT EXISTS `Achievements` (`ID` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,`Name` varchar(255) NOT NULL,`Description` varchar(255) NOT NULL,`Category` varchar(255),`Value` INTEGER NOT NULL); ");
46}
47public void CheckIf_Achievements_QueryPassed(Database db, DBResultSet results, const char[] error, any data)
48{
49 if (db == null)
50 {
51 LogMessage("Could not create achievements table! Error: %s", error);
52 }
53
54 tablesCreated++;
55 if (AreAllTablesCreated()) SendForwardOnRegisterAchievements();
56}
57
58// @@ Creating players table
59
60public void SQL_Create_Players_Table()
61{
62 if(IsConnectionEstablished)
63 {
64 char query[512];
65 FormatPlayersQuery(query);
66 DB.Query(CheckIf_Players_QueryPassed, query, _, DBPrio_High);
67 }
68}
69
70public void FormatPlayersQuery(char[] query)
71{
72 Format(query, 511, "CREATE TABLE IF NOT EXISTS `Players` (`PlayerID` INTEGER NOT NULL,`AchievementID` INTEGER NOT NULL,`Progress` INTEGER NOT NULL,UNIQUE(`PlayerID`,`AchievementID`)); ");
73}
74public void CheckIf_Players_QueryPassed(Database db, DBResultSet results, const char[] error, any data)
75{
76 if (db == null)
77 {
78 LogMessage("Could not create players table! Error: %s", error);
79 }
80
81 tablesCreated++;
82 if (AreAllTablesCreated()) SendForwardOnRegisterAchievements();
83}
84
85// @@ Creating PlayerID table - containing a client's unique ID-SteamID pair
86
87public void SQL_Create_PlayerID_Table()
88{
89 if(IsConnectionEstablished)
90 {
91 char query[512];
92 FormatPlayerIdTableQuery(query);
93 DB.Query(CheckIf_PlayerIdTable_QueryPassed, query, _, DBPrio_High);
94 }
95}
96
97public void FormatPlayerIdTableQuery(char[] query)
98{
99 Format(query, 511, "CREATE TABLE IF NOT EXISTS `PlayerID` (`ID` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,`SteamID` varchar(255) NOT NULL,`Name` varchar(255) NOT NULL,`AccomplishedAchievements` int(11) NOT NULL); ");
100}
101public void CheckIf_PlayerIdTable_QueryPassed(Database db, DBResultSet results, const char[] error, any data)
102{
103 if (db == null)
104 {
105 LogMessage("Could not create PlayerID table! Error: %s", error);
106 }
107
108 tablesCreated++;
109 if (AreAllTablesCreated()) SendForwardOnRegisterAchievements();
110}
111
112public bool AreAllTablesCreated()
113{
114 return tablesCreated == 3;
115}