91 lines
3.0 KiB
Lua
91 lines
3.0 KiB
Lua
|
|
local db = setmetatable({},{
|
|
__call = function(self)
|
|
|
|
self.insert = function(...)
|
|
local str = 'INSERT INTO %s (%s, %s, %s, %s, %s, %s) VALUES(?, ?, ?, ?, ?, ?)'
|
|
return MySQL.insert.await(str:format('renzu_motels','motel','hour_rate','revenue','employees','rooms','owned'),{...})
|
|
end
|
|
|
|
self.update = function(column, where, string, data)
|
|
local str = 'UPDATE %s SET %s WHERE %s = ?'
|
|
return MySQL.update(str:format('renzu_motels',column,where),{data,string})
|
|
end
|
|
|
|
self.updateall = function(pattern, where, string, ...)
|
|
local str = 'UPDATE %s SET % WHERE %s = ?'
|
|
local str = 'UPDATE renzu_motels SET '..pattern..' WHERE '..where..' = ?'
|
|
local data = {...}
|
|
table.insert(data,string)
|
|
return MySQL.update(str,data)
|
|
end
|
|
|
|
self.query = function(column, where, string)
|
|
local str = 'SELECT %s FROM %s WHERE %s = ?'
|
|
return MySQL.query.await(str:format(column,'renzu_motels',where),{string})
|
|
end
|
|
|
|
self.fetchAll = function()
|
|
local str = 'SELECT * FROM renzu_motels'
|
|
local query = MySQL.query.await(str)
|
|
local data = {}
|
|
for k,v in pairs(query) do
|
|
for column, value in pairs(v) do
|
|
if v.motel then
|
|
if column ~= 'id' and value then
|
|
if not data[column] then data[column] = {} end
|
|
local success, result = pcall(json.decode, value)
|
|
result = result == nil and value or result
|
|
if not data[v.motel] then data[v.motel] = {} end
|
|
if column == 'owned' and result == 0 then result = nil end
|
|
if column == 'hour_rate' and result == 0 then result = nil end
|
|
data[v.motel][column] = result
|
|
end
|
|
end
|
|
end
|
|
end
|
|
return data
|
|
end
|
|
|
|
return self
|
|
end
|
|
})
|
|
|
|
Citizen.CreateThreadNow(function()
|
|
local success, result = pcall(MySQL.scalar.await, 'SELECT 1 FROM renzu_motels')
|
|
if not success then
|
|
MySQL.query.await([[CREATE TABLE `renzu_motels` (
|
|
`id` int NOT NULL AUTO_INCREMENT KEY,
|
|
`motel` varchar(64) DEFAULT NULL,
|
|
`hour_rate` int DEFAULT 0,
|
|
`revenue` int DEFAULT 0,
|
|
`employees` longtext DEFAULT NULL,
|
|
`rooms` longtext DEFAULT NULL,
|
|
`owned` varchar(64) DEFAULT NULL
|
|
)]])
|
|
print("^2SQL INSTALL SUCCESSFULLY ^0")
|
|
end
|
|
Wait(500)
|
|
for k,v in pairs(config.motels) do
|
|
local query = MySQL.query.await('SELECT rooms FROM renzu_motels WHERE `motel` = ?',{v.motel})
|
|
if not query[1] then
|
|
local doors = {}
|
|
for doorindex,_ in pairs(v.doors) do
|
|
if not doors.rooms then doors.rooms = {} end
|
|
if not doors.rooms[doorindex] then doors.rooms[doorindex] = {} end
|
|
if not doors.rooms[doorindex].players then doors.rooms[doorindex].players = {} end
|
|
doors.rooms[doorindex].lock = true
|
|
end
|
|
db.insert(v.motel,0,0,'[]',json.encode(doors.rooms),0)
|
|
elseif query[1] and #v.doors > #json.decode(query[1].rooms) then
|
|
local addnew = (#v.doors - #json.decode(query[1].rooms))
|
|
local rooms = json.decode(query[1].rooms) or {}
|
|
for i = 1, addnew do
|
|
table.insert(rooms,{players = {}, lock = true})
|
|
end
|
|
db.updateall('rooms = ?', '`motel`', v.motel, json.encode(rooms))
|
|
end
|
|
end
|
|
end)
|
|
|
|
return db() |