Skip to content

Commit

Permalink
refactor: replaced if error statements with assertions
Browse files Browse the repository at this point in the history
  • Loading branch information
Manason committed Apr 19, 2024
1 parent 60f1151 commit fbb94ce
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 86 deletions.
5 changes: 1 addition & 4 deletions bridge/qb/client/functions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -419,10 +419,7 @@ function functions.SetVehicleProperties(vehicle, props)
props.modRoofLivery = props.modRoofLivery or props.liveryRoof

--- lib.setVehicleProperties copied and pasted from Overextended below so that we can remove the error so that setting properties is best effort
if not DoesEntityExist(vehicle) then
error(('Unable to set vehicle properties for "%s" (entity does not exist)'):
format(vehicle))
end
assert(DoesEntityExist(vehicle), string.format('Unable to set vehicle properties for "%s" (entity does not exist)', vehicle))

if NetworkGetEntityIsNetworked(vehicle) and NetworkGetEntityOwner(vehicle) ~= cache.playerId then
lib.print.warn('setting vehicle properties on non entity owner client. This may cause certain properties to fail to set. entity:', vehicle)
Expand Down
8 changes: 2 additions & 6 deletions config/server.lua
Original file line number Diff line number Diff line change
Expand Up @@ -100,16 +100,12 @@ return {
starterItems = { -- Character starting items
{ name = 'phone', amount = 1 },
{ name = 'id_card', amount = 1, metadata = function(source)
if GetResourceState('qbx_idcard') ~= 'started' then
error('qbx_idcard resource not found. Required to give an id_card as a starting item')
end
assert(GetResourceState('qbx_idcard') == 'started', 'qbx_idcard resource not found. Required to give an id_card as a starting item')
return exports.qbx_idcard:GetMetaLicense(source, {'id_card'})
end
},
{ name = 'driver_license', amount = 1, metadata = function(source)
if GetResourceState('qbx_idcard') ~= 'started' then
error('qbx_idcard resource not found. Required to give an id_card as a starting item')
end
assert(GetResourceState('qbx_idcard') == 'started', 'qbx_idcard resource not found. Required to give an id_card as a starting item')
return exports.qbx_idcard:GetMetaLicense(source, {'driver_license'})
end
},
Expand Down
2 changes: 1 addition & 1 deletion modules/hooks.lua
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
-- Modified from original source https://github.com/overextended/ox_inventory/blob/main/modules/hooks/server.lua
-- Copyright (C) 2021 Linden <https://github.com/thelindat>, Dunak <https://github.com/dunak-debug>, Luke <https://github.com/LukeWasTakenn>

if not lib.checkDependency('ox_lib', '3.8.0', true) then error() return end
assert(lib.checkDependency('ox_lib', '3.8.0', true))

local eventHooks = {}
-- luacheck: ignore
Expand Down
2 changes: 1 addition & 1 deletion server/main.lua
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
lib.versionCheck('Qbox-project/qbx_core')
if not lib.checkDependency('ox_lib', '3.16.3', true) then error() return end
assert(lib.checkDependency('ox_lib', '3.16.3', true))

---@type 'strict'|'relaxed'|'inactive'
local bucketLockDownMode = GetConvar('qbx:bucketlockdownmode', 'inactive')
Expand Down
100 changes: 29 additions & 71 deletions server/player.lua
Original file line number Diff line number Diff line change
Expand Up @@ -85,21 +85,14 @@ end
---@param jobName string
function SetPlayerPrimaryJob(citizenid, jobName)
local player = GetPlayerByCitizenId(citizenid) or GetOfflinePlayer(citizenid)
if not player then
error(('player not found with citizenid %s'):format(citizenid))
end
assert(player ~= nil, string.format('player not found with citizenid %s', citizenid))

local grade = jobName == 'unemployed' and 0 or player.PlayerData.jobs[jobName]
if not grade then
error(('player %s does not have job %s'):format(citizenid, jobName))
end
local job = GetJob(jobName)
if not job then
error('job not found: ' .. jobName)
end
assert(grade ~= nil, string.format('player %s does not have job %s', citizenid, jobName))

if not job.grades[grade] then
error(('job %s does not have grade %s'):format(jobName, grade))
end
local job = GetJob(jobName)
assert(job ~= nil, 'job not found: ' .. jobName)
assert(job.grades[grade] ~= nil, string.format('job %s does not have grade %s', jobName, grade))

player.PlayerData.job = toPlayerJob(jobName, job, grade)
player.Functions.Save()
Expand All @@ -120,20 +113,13 @@ function AddPlayerToJob(citizenid, jobName, grade)
-- unemployed job is the default, so players cannot be added to it
if jobName == 'unemployed' then return end
local job = GetJob(jobName)
if not job then
error('job not found: ' .. jobName)
end
if not job.grades[grade] then
error(('job %s does not have grade %s'):format(jobName, grade))
end
assert(job ~= nil, 'job not found: ' .. jobName)
assert(job.grades[grade] ~= nil, string.format('job %s does not have grade %s', jobName, grade))

local player = GetPlayerByCitizenId(citizenid) or GetOfflinePlayer(citizenid)
if not player then
error(('player not found with citizenid %s'):format(citizenid))
end
assert(player ~= nil, string.format('player not found with citizenid %s', citizenid))
if player.PlayerData.jobs[jobName] == grade then return end
if qbx.table.size(player.PlayerData.jobs) >= maxJobsPerPlayer and not player.PlayerData.jobs[jobName] then
error('player already has maximum amount of jobs allowed')
end
assert(qbx.table.size(player.PlayerData.jobs) < maxJobsPerPlayer or player.PlayerData.jobs[jobName], 'player already has maximum amount of jobs allowed')

storage.addPlayerToJob(citizenid, jobName, grade)
if not player.Offline then
Expand All @@ -156,19 +142,15 @@ function RemovePlayerFromJob(citizenid, jobName)
-- Unemployed is the default job, so players cannot be removed from it.
if jobName == 'unemployed' then return end
local player = GetPlayerByCitizenId(citizenid) or GetOfflinePlayer(citizenid)
if not player then
error(('player not found with citizenid %s'):format(citizenid))
end
assert(player ~= nil, string.format('player not found with citizenid %s', citizenid))

if not player.PlayerData.jobs[jobName] then return end

storage.removePlayerFromJob(citizenid, jobName)
player.PlayerData.jobs[jobName] = nil
if player.PlayerData.job.name == jobName then
local job = GetJob('unemployed')
if not job then
error('cannot find unemployed job. Check database/config')
end
assert(job ~= nil, 'cannot find unemployed job. Does it exist in shared/jobs.lua?')
player.PlayerData.job = toPlayerJob('unemployed', job, 0)
player.Functions.Save()
end
Expand All @@ -187,21 +169,14 @@ exports('RemovePlayerFromJob', RemovePlayerFromJob)
---@param gangName string
local function setPlayerPrimaryGang(citizenid, gangName)
local player = GetPlayerByCitizenId(citizenid) or GetOfflinePlayer(citizenid)
if not player then
error(('player not found with citizenid %s'):format(citizenid))
end
assert(player ~= nil, string.format('player not found with citizenid %s', citizenid))

local grade = gangName == 'none' and 0 or player.PlayerData.gangs[gangName]
if not grade then
error(('player %s does not have gang %s'):format(citizenid, gangName))
end
local gang = GetGang(gangName)
if not gang then
error('gang not found: ' .. gangName)
end
assert(grade ~= nil, string.format('player %s does not have gang %s', citizenid, gangName))

if not gang.grades[grade] then
error(('gang %s does not have grade %s'):format(gangName, grade))
end
local gang = GetGang(gangName)
assert(gang ~= nil, 'gang not found: ' .. gangName)
assert(gang.grades[grade] ~= nil, string.format('gang %s does not have grade %s', gangName, grade))

player.PlayerData.gang = {
name = gangName,
Expand Down Expand Up @@ -231,26 +206,17 @@ exports('SetPlayerPrimaryGang', setPlayerPrimaryGang)
function AddPlayerToGang(citizenid, gangName, grade)
-- None is the default gang, so players cannot be added to it.
if gangName == 'none' then return end
local gang = GetGang(gangName)

if not gang then
error('gang not found: ' .. gangName)
end

if not gang.grades[grade] then
error(('gang %s does not have grade %s'):format(gangName, grade))
end
local gang = GetGang(gangName)
assert(gang ~= nil, 'gang not found: ' .. gangName)
assert(gang.grades[grade] ~= nil, string.format('gang %s does not have grade %s', gangName, grade))

local player = GetPlayerByCitizenId(citizenid) or GetOfflinePlayer(citizenid)
if not player then
error(('player not found with citizenid %s'):format(citizenid))
end
assert(player ~= nil, string.format('player not found with citizenid %s', citizenid))

if player.PlayerData.gangs[gangName] == grade then return end

if qbx.table.size(player.PlayerData.gangs) >= maxGangsPerPlayer and not player.PlayerData.gangs[gangName] then
error('player already has maximum amount of gangs allowed')
end
assert(qbx.table.size(player.PlayerData.gangs) < maxGangsPerPlayer or player.PlayerData.gangs[gangName], 'player already has maximum amount of gangs allowed')

storage.addPlayerToGang(citizenid, gangName, grade)
if not player.Offline then
Expand All @@ -272,20 +238,16 @@ exports('AddPlayerToGang', AddPlayerToGang)
local function removePlayerFromGang(citizenid, gangName)
-- None is the default gang. So players cannot be removed from it.
if gangName == 'none' then return end
local player = GetPlayerByCitizenId(citizenid) or GetOfflinePlayer(citizenid)
if not player then
error(('player not found with citizenid %s'):format(citizenid))
end

local player = GetPlayerByCitizenId(citizenid) or GetOfflinePlayer(citizenid)
assert(player ~= nil, string.format('player not found with citizenid %s', citizenid))
if not player.PlayerData.gangs[gangName] then return end

storage.removePlayerFromGang(citizenid, gangName)
player.PlayerData.gangs[gangName] = nil
if player.PlayerData.gang.name == gangName then
local gang = GetGang('none')
if not gang then
error('cannot find none gang. Check database/config')
end
assert(gang ~= nil, 'cannot find none gang. Does it exist in shared/gangs.lua?')
player.PlayerData.gang = {
name = gangName,
label = gang.label,
Expand Down Expand Up @@ -397,9 +359,7 @@ function CheckPlayerData(source, playerData)
local jobs, gangs = storage.fetchPlayerGroups(playerData.citizenid)

local job = GetJob(playerData.job?.name) or GetJob('unemployed')
if not job then
error('unemployed job not found. Is it in your config?')
end
assert(job ~= nil, 'Unemployed job not found. Does it exist in shared/jobs.lua?')
local jobGrade = GetJob(playerData.job?.name) and playerData.job.grade.level or 0
playerData.job = {
name = playerData.job?.name or 'unemployed',
Expand All @@ -415,9 +375,7 @@ function CheckPlayerData(source, playerData)
}
playerData.jobs = jobs or {}
local gang = GetGang(playerData.gang?.name) or GetGang('none')
if not gang then
error('none gang not found. Is it in your config?')
end
assert(gang ~= nil, 'none gang not found. Does it exist in shared/gangs.lua?')
local gangGrade = GetGang(playerData.gang?.name) and playerData.gang.grade.level or 0
playerData.gang = {
name = playerData.gang?.name or 'none',
Expand Down
4 changes: 1 addition & 3 deletions server/storage/players.lua
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@ local characterDataTables = require 'config.server'.characterDataTables

---@param request InsertBanRequest
local function insertBan(request)
if not request.discordId and not request.ip and not request.license then
error('no identifier provided')
end
assert(request.discordId or request.ip or request.license, 'no identifier provided')

MySQL.insert.await('INSERT INTO bans (name, license, discord, ip, reason, expire, bannedby) VALUES (?, ?, ?, ?, ?, ?, ?)', {
request.name,
Expand Down

0 comments on commit fbb94ce

Please sign in to comment.