· 5 years ago · Mar 19, 2020, 06:23 PM
1--[[
2 Addon: ATM
3 By: SlownLS
4]]
5
6local DATABASE = {}
7DATABASE.host = "178.63.109.253"
8DATABASE.username = "erisrole_bxee"
9DATABASE.password = "n_!O}TEXBaje"
10DATABASE.dbname = "erisrole_gmod"
11DATABASE.useMysql = true
12
13if ( DATABASE.useMysql ) then
14 local boolSuccess, err = pcall(require, 'mysqloo')
15
16 if !boolSuccess then
17 return print('[SlownLS - ATM] - [MYSQL] : Mysql is not installed!')
18 end
19
20 database = mysqloo.connect(DATABASE.host, DATABASE.username, DATABASE.password, DATABASE.dbname)
21end
22
23--[[
24 desc: Replace query params
25 return: string
26]]--
27
28
29function DATABASE:Replace(strQuery, strValue)
30 local pattern = '?'
31
32 if ( strValue == nil ) then
33 strValue = 'NULL'
34 end
35
36 return string.gsub(strQuery, pattern, sql.SQLStr(strValue), 1)
37end
38
39--[[
40 desc: Make prepare Query
41 return: table
42]]--
43
44function DATABASE:Query(strQuery, tbl)
45 if ( database == nil and self.useMysql ) then return end
46 if strQuery == nil then return end
47
48 if ( not self.useMysql ) then
49 for k,v in ipairs(tbl or {}) do
50 strQuery = self:Replace(strQuery, v)
51 end
52
53 return sql.Query(strQuery), nil
54 end
55
56 local query = database:prepare(strQuery)
57
58 function query:onSuccess(data) end
59
60 function query:onAborted()
61 end
62
63 function query:onError(err)
64 print("SlownLS - ATM [MYSQL] : ", err or "")
65 end
66
67 for k,v in ipairs(tbl or {}) do
68 if( isnumber(v) ) then
69 query:setNumber( k, v )
70 end
71
72 if( isstring(v) ) then
73 query:setString( k, v )
74 end
75
76 if( isbool(v) ) then
77 query:setBoolean( k, v )
78 end
79 end
80
81 query:start()
82
83 query:wait()
84
85 return query:getData(), query:lastInsert()
86end
87
88--[[
89 desc: Create table on connect
90 return: nil
91]]--
92
93function DATABASE:onConnected()
94 local strQuery = [[
95 CREATE TABLE IF NOT EXISTS `slownls_atm_accounts` (
96 `steamid` VARCHAR(255) NOT NULL UNIQUE,
97 `balance` INT(12) NOT NULL
98 );
99 ]]
100
101 self:Query(strQuery)
102
103 strQuery = [[
104 CREATE TABLE IF NOT EXISTS `slownls_atm_logs` (
105 `steamid` VARCHAR(255) NOT NULL,
106 `isGroup` INT(1) NOT NULL DEFAULT '0',
107 `text` VARCHAR(255) NOT NULL,
108 `time` VARCHAR(255) NOT NULL
109 );
110 ]]
111
112 self:Query(strQuery)
113
114 strQuery = [[
115 CREATE TABLE IF NOT EXISTS `slownls_atm_groups` (
116 `steamid` VARCHAR(255) NOT NULL UNIQUE,
117 `ownerName` VARCHAR(255) NOT NULL,
118 `members` LONGTEXT NOT NULL,
119 `balance` INT(12) NOT NULL
120 );
121 ]]
122
123 self:Query(strQuery)
124end
125
126if ( DATABASE.useMysql ) then
127 database:connect()
128
129 function database:onConnected()
130 DATABASE:onConnected()
131 end
132else
133 DATABASE:onConnected()
134end
135
136--[[
137 desc: Load data from Blue's ATM ( RIP <3 )
138 return: nil
139]]--
140
141function DATABASE:LoadFromBlueATM()
142 -- Personal accounts
143 local tblQuery = DATABASE:Query('SELECT * FROM batm_personal_accounts', {} )
144
145 for k,v in pairs(tblQuery or {}) do
146 local tbl = util.JSONToTable(v.accountinfo or {})
147
148 local strSteamID64 = tbl.ownerID
149 local intBalance = tbl.balance
150
151 DATABASE:Query('INSERT INTO slownls_atm_accounts(steamid,balance) VALUES(?,?)', {
152 strSteamID64,
153 intBalance
154 })
155 end
156
157 -- Group accounts
158 local tblQuery = DATABASE:Query('SELECT * FROM batm_group_accounts', {} )
159
160 for k,v in pairs(tblQuery or {}) do
161 local tbl = util.JSONToTable(v.accountinfo or {})
162
163 PrintTable(tbl or {})
164
165 local strSteamID64 = tbl.ownerID
166 local strOwnerName = tbl.ownerName
167 local intBalance = tbl.balance
168 local tblOwnerName = tbl.ownerNames or {}
169
170 local tblOwners = {}
171
172 for k,v in pairs(tbl.owners or {}) do
173 tblOwners[v] = tblOwnerName["S" .. v]
174 end
175
176 DATABASE:Query('INSERT INTO slownls_atm_groups(steamid,ownerName,members,balance) VALUES(?,?,?,?)', {
177 strSteamID64,
178 strOwnerName,
179 util.TableToJSON(tblOwners or {}),
180 intBalance
181 })
182 end
183end
184
185SlownLS.ATM.SQL = DATABASE