Scripts/resources/[custom_script]/renzu_motels/server/sql.lua

91 lines
3.0 KiB
Lua
Raw Normal View History

2024-12-29 19:48:41 +00:00
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()