forked from Simnation/Main
117 lines
4 KiB
Lua
117 lines
4 KiB
Lua
![]() |
Utils.Database = {}
|
||
|
|
||
|
function Utils.Database.execute(sql,params)
|
||
|
MySQL.Sync.execute(sql, params)
|
||
|
end
|
||
|
|
||
|
function Utils.Database.fetchAll(sql,params)
|
||
|
return MySQL.Sync.fetchAll(sql, params)
|
||
|
end
|
||
|
|
||
|
function Utils.Database.fetchAllAsync(sql,params,cb)
|
||
|
MySQL.Async.fetchAll(sql, params, function(result)
|
||
|
if cb then
|
||
|
cb(result)
|
||
|
end
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function Utils.Database.executeAsync(sql,params,cb)
|
||
|
MySQL.Async.execute(sql, params, function(result)
|
||
|
if cb then
|
||
|
cb(result)
|
||
|
end
|
||
|
end)
|
||
|
end
|
||
|
|
||
|
function Utils.Database.validateTableColumns(tables, add_column_sqls, change_table_sqls)
|
||
|
for table, columns in pairs(tables) do
|
||
|
if Config.disable_column_check == true then
|
||
|
local columns_str = "";
|
||
|
for i, column in pairs(columns) do
|
||
|
if i == 1 then
|
||
|
columns_str = columns_str.."`"..column.."`";
|
||
|
else
|
||
|
columns_str = columns_str..", `"..column.."`";
|
||
|
end
|
||
|
end
|
||
|
local sql = "SELECT "..columns_str.." FROM `"..table.."` LIMIT 1";
|
||
|
local query_2 = Utils.Database.fetchAll(sql,{});
|
||
|
if query_2 == nil then
|
||
|
error("^1["..getResourceName().."]^3 The table^1"..table.."^3 has some missing columns. Please, delete this table \"^1"..table.."^3\" and restart the server.^7")
|
||
|
end
|
||
|
else
|
||
|
local sql = "SELECT COLUMN_TYPE, DATA_TYPE, COLUMN_NAME, COLUMN_DEFAULT, IS_NULLABLE FROM `information_schema`.`COLUMNS` WHERE TABLE_SCHEMA = (SELECT DATABASE() AS default_schema) and TABLE_NAME='"..table.."' ORDER BY ORDINAL_POSITION;";
|
||
|
local query_information_schema = Utils.Database.fetchAll(sql,{});
|
||
|
for _, column in pairs(columns) do
|
||
|
local column_found = false
|
||
|
for k, column_data in pairs(query_information_schema) do
|
||
|
if column == column_data.COLUMN_NAME then
|
||
|
column_found = true
|
||
|
checkExistingColumnType(table,column,column_data,change_table_sqls)
|
||
|
end
|
||
|
end
|
||
|
if column_found == false then
|
||
|
fixMissingColumn(table,column,add_column_sqls)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function fixMissingColumn(table_name, column_name, add_column_sqls)
|
||
|
if add_column_sqls and add_column_sqls[table_name] and add_column_sqls[table_name][column_name] then
|
||
|
Utils.Database.execute(add_column_sqls[table_name][column_name])
|
||
|
else
|
||
|
error("^1["..getResourceName().."]^3 The table ^1"..table_name.."^3 has some missing columns. Please, delete this table \"^1"..table_name.."^3\" and restart the server.^7")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function checkExistingColumnType(table_name, column_name, column_data, change_table_sqls)
|
||
|
if change_table_sqls and change_table_sqls[table_name] and change_table_sqls[table_name][column_name] then
|
||
|
local change_table_sql = change_table_sqls[table_name][column_name]
|
||
|
local is_outdated = false
|
||
|
for k, v in pairs(column_data) do
|
||
|
if change_table_sql[k] ~= v then
|
||
|
is_outdated = true
|
||
|
end
|
||
|
end
|
||
|
if is_outdated then
|
||
|
Utils.Database.execute(change_table_sql.sql)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local wasValidated = false
|
||
|
function Utils.Database.validateOwnedVehicleTableColumns(table_name)
|
||
|
if wasValidated then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
TriggerEvent("lc_utils:setWasValidated", true) -- Sync to all other scripts that import this file
|
||
|
|
||
|
local tables = {
|
||
|
[table_name] = {
|
||
|
"parking",
|
||
|
"balance",
|
||
|
"paymentamount",
|
||
|
"paymentsleft",
|
||
|
"financetime"
|
||
|
}
|
||
|
}
|
||
|
local add_column_sqls = {
|
||
|
[table_name] = {
|
||
|
['parking'] = "ALTER TABLE `"..table_name.."` ADD COLUMN `parking` VARCHAR(60) NULL DEFAULT NULL;",
|
||
|
['balance'] = "ALTER TABLE `"..table_name.."` ADD COLUMN `balance` INT(11) NOT NULL DEFAULT '0';",
|
||
|
['paymentamount'] = "ALTER TABLE `"..table_name.."` ADD COLUMN `paymentamount` INT(11) NOT NULL DEFAULT '0';",
|
||
|
['paymentsleft'] = "ALTER TABLE `"..table_name.."` ADD COLUMN `paymentsleft` INT(11) NOT NULL DEFAULT '0';",
|
||
|
['financetime'] = "ALTER TABLE `"..table_name.."` ADD COLUMN `financetime` INT(11) NOT NULL DEFAULT '0';",
|
||
|
}
|
||
|
}
|
||
|
Utils.Database.validateTableColumns(tables, add_column_sqls)
|
||
|
end
|
||
|
|
||
|
RegisterServerEvent('lc_utils:setWasValidated')
|
||
|
AddEventHandler('lc_utils:setWasValidated', function(bool)
|
||
|
wasValidated = bool
|
||
|
end)
|