1
+ --[[
2
+ MySQLoo Handler for FairSelection
3
+ ]]
4
+ require (' mysqloo' )
5
+ local CONN
6
+
7
+ -- Initialize database setup
8
+ function HANDLER :Init ()
9
+ if not FairSelection .CFG .DB .Port then
10
+ FairSelection .CFG .DB .Port = 3306
11
+ elseif not isnumber (FairSelection .CFG .DB .Port ) then
12
+ FairSelection .CFG .DB .Port = tonumber (FairSelection .CFG .DB .Port )
13
+ end
14
+
15
+ CONN = mysqloo .connect (FairSelection .CFG .DB .Hostname , FairSelection .CFG .DB .Username , FairSelection .CFG .DB .Password , FairSelection .CFG .DB .Database , FairSelection .CFG .DB .Port )
16
+ end
17
+
18
+ -- Connects to the database
19
+ function HANDLER :connect ()
20
+ local function CONN :onConnected ()
21
+ FairSelection :Message (" Database connection established!" )
22
+
23
+ HANDLER :CheckTimer ()
24
+ end
25
+
26
+ local function CONN :onConnectionFailed (err )
27
+ FairSelection :Error (" SQL Error: " .. err )
28
+ end
29
+
30
+ CONN :connect ()
31
+ end
32
+
33
+ -- Checks if connection is established, if not trying to connect
34
+ function HANDLER :CheckTimer ()
35
+ timer .Create (" FairSelectionDatabaseConnectionCheck" , 90 , 0 , function ()
36
+ if CONN :status () != mysqloo .DATABASE_CONNECTED then
37
+ FairSelection :Error (" Database connection interrupted!" )
38
+ FairSelection :Message (" Try to reconnect..." )
39
+ HANDLER :connect ()
40
+ end
41
+ end )
42
+ end
43
+
44
+ function HANDLER :CreateDatabase ()
45
+
46
+ end
47
+
48
+ function HANDLER :query (sql , callback )
49
+ if not callback then callback = nil end
50
+
51
+ local sql = FairSelection .DB :esPrefix (sql )
52
+ local query = CONN :query (sql )
53
+
54
+ if query != nil then
55
+ function query :onSuccess (data )
56
+ row = data [1 ]
57
+
58
+ if isfunction (callback ) then
59
+ callback (data )
60
+ end
61
+ end
62
+
63
+ function query :onError (err )
64
+ FairSelection .DB :sqlError (sql , err )
65
+ end
66
+
67
+ query :start ()
68
+ query :wait ()
69
+ end
70
+
71
+ return row
72
+ end
73
+
74
+ function HANDLER :prepare (sql , args , callback )
75
+ if not callback then callback = nil end
76
+
77
+ local sql = FairSelection .DB :esPrefix (sql )
78
+ local query = CONN :prepare (sql )
79
+
80
+ if query != nil then
81
+ function query :onSuccess (data )
82
+ row = data [1 ]
83
+
84
+ if isfunction (callback ) then
85
+ callback (data )
86
+ end
87
+ end
88
+
89
+ function query :onError (err )
90
+ FairSelection .DB :sqlError (sql , err )
91
+ end
92
+
93
+ if not args then
94
+ args = nil
95
+ else
96
+ local count = 1
97
+
98
+ for _ , arg in pairs (args ) do
99
+ if type (arg ) == ' string' then
100
+ query :setString (count , arg )
101
+ elseif type (arg ) == ' number' then
102
+ query :setNumber (count , arg )
103
+ elseif type (arg ) == ' boolean' then
104
+ query :setBoolean (count , arg )
105
+ else
106
+ query :setNull (count )
107
+ end
108
+
109
+ count = count + 1
110
+ end
111
+ end
112
+
113
+ query :start ()
114
+ query :wait ()
115
+ end
116
+
117
+ return row
118
+ end
0 commit comments