Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PRegiments.SQL.Wrappers = {}
- function PRegiments.SQL.Wrappers.Escape( str )
- return "\"" .. PRegiments.SQL.DatabaseObject:Escape( tostring( str ) ) .. "\""
- end
- PRegiments.SQL.Wrappers.RegimentExists = function(name, callback)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_reglist WHERE reg_name=%s
- ]], PRegiments.SQL.Wrappers.Escape(name)), function(data)
- local exists = false
- if #data[1]["data"] > 0 then exists = true end
- callback(exists)
- end)
- end
- PRegiments.SQL.Wrappers.ClassExists = function(owning_reg, name, callback)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_classes WHERE class_owning_reg=%s AND class_name=%s
- ]], PRegiments.SQL.Wrappers.Escape(owning_reg), PRegiments.SQL.Wrappers.Escape(name)), function(data)
- local rows = data[1]["data"] or false
- local exists = false
- if rows != false then
- for k, v in pairs(rows) do
- if v["class_name"] == name then exists = true end
- end
- end
- callback(exists)
- end)
- end
- PRegiments.SQL.Wrappers.CreateRegiment = function(name, owner, userlist, makePrimaryClass, primary, callback)
- if !isnumber(owner) then owner = owner:SteamID64() end
- userlist = util.TableToJSON(userlist)
- primary = primary or 0
- PRegiments.SQL.Wrappers.RegimentExists(name, function(exists)
- if !exists then
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- INSERT INTO gmod_regiments_reglist(reg_name, reg_owner, reg_userlist, reg_primary) VALUES(%s, %s, %s, %s)
- ]], PRegiments.SQL.Wrappers.Escape(name), PRegiments.SQL.Wrappers.Escape(owner), PRegiments.SQL.Wrappers.Escape(userlist), PRegiments.SQL.Wrappers.Escape(primary)), function(data)
- if makePrimaryClass then
- PRegiments.SQL.Wrappers.CreateClass(data[1]["lastid"], name .. " Primary Class (Edit Me)", "AA (Edit Me)", PRegiments.SQL.ClassBase, {}, 1, function()
- for k, v in pairs(player.GetAll()) do
- PRegiments.CachedTables.UpdateCache(v)
- end
- end)
- else
- for k, v in pairs(player.GetAll()) do
- PRegiments.CachedTables.UpdateCache(v)
- end
- end
- end)
- callback(true)
- else
- callback(false)
- end
- end)
- end
- PRegiments.SQL.Wrappers.DeleteRegiment = function(name, callback)
- PRegiments.SQL.Wrappers.RegimentExists(name, function(exists)
- if exists then
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_reglist WHERE reg_name=%s
- ]], PRegiments.SQL.Wrappers.Escape(name)), function(data)
- local id = data[1]["data"][1]["reg_id"]
- local users = util.JSONToTable(data[1]["data"][1]["reg_userlist"])
- if #users > 0 then
- for k, ply in pairs(users) do
- PRegiments.SQL.Wrappers.GetPlayersRegimentsAndClasses(ply, function(regimentTable)
- if table.Count(regimentTable.regiments) != 0 then
- PRegiments.SQL.Wrappers.SetPlayerRegiment_Primary(ply, function(primary_reg)
- PRegiments.SQL.Wrappers.SetPlayerClass_Primary(ply, primary_reg["reg_id"], function() end)
- end)
- end
- end)
- end
- end
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- DELETE FROM gmod_regiments_classes WHERE class_owning_reg=%s
- ]], PRegiments.SQL.Wrappers.Escape(id)), function(data)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- DELETE FROM gmod_regiments_reglist WHERE reg_name=%s
- ]], PRegiments.SQL.Wrappers.Escape(name)), function(data)
- for k, v in pairs(player.GetAll()) do
- PRegiments.CachedTables.UpdateCache(v)
- end
- callback(true)
- end)
- end)
- end)
- else
- callback(false)
- end
- end)
- end
- PRegiments.SQL.Wrappers.CreateClass = function(owning_reg, name, abbr, perms, userlist, primary, callback)
- userlist = util.TableToJSON(userlist)
- perms = util.TableToJSON(perms)
- PRegiments.SQL.Wrappers.ClassExists(owning_reg, name, function(exists)
- if !exists then
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- INSERT INTO gmod_regiments_classes(class_owning_reg, class_name, class_abbr, class_perms, class_userlist, class_primary) VALUES(%s, %s, %s, %s, %s, %s)
- ]], PRegiments.SQL.Wrappers.Escape(owning_reg), PRegiments.SQL.Wrappers.Escape(name), PRegiments.SQL.Wrappers.Escape(abbr), PRegiments.SQL.Wrappers.Escape(perms), PRegiments.SQL.Wrappers.Escape(userlist), PRegiments.SQL.Wrappers.Escape(primary)), function()
- for k, v in pairs(player.GetAll()) do
- PRegiments.CachedTables.UpdateCache(v)
- end
- callback(true)
- end)
- else
- callback(false)
- end
- end)
- end
- PRegiments.SQL.Wrappers.GetPlayersRegiments = function(ply, callback)
- if !isstring(ply) then ply = ply:SteamID64() end
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_reglist
- ]]), function(data)
- local rows = data[1]["data"] or false
- local playersRegiments = {}
- if rows != false then
- for k, v in pairs(rows) do
- local userlist = util.JSONToTable(v["reg_userlist"])
- if #userlist > 0 then
- if table.HasValue(userlist, ply) then
- table.insert(playersRegiments, v)
- end
- end
- end
- end
- callback(playersRegiments)
- end)
- end
- /* Setters */
- PRegiments.SQL.Wrappers.RemovePlayerFromAllRegiments = function(ply, callback)
- if !isstring(ply) then ply = ply:SteamID64() end
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_reglist
- ]]), function(data)
- local rows = data[1]["data"] or false
- if rows != false then
- if #rows != 0 then
- for k, v in pairs(rows) do
- local userlist = util.JSONToTable(v["reg_userlist"])
- if table.HasValue(userlist, ply) then
- table.RemoveByValue(userlist, ply)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- UPDATE gmod_regiments_reglist SET reg_userlist=%s WHERE reg_id=%s
- ]],PRegiments.SQL.Wrappers.Escape(util.TableToJSON(userlist)), PRegiments.SQL.Wrappers.Escape(v["reg_id"])))
- end
- end
- callback()
- end
- end
- end)
- end
- PRegiments.SQL.Wrappers.RemovePlayerFromAllClasses = function(ply, callback)
- if !isstring(ply) then ply = ply:SteamID64() end
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_classes
- ]]), function(data)
- local rows = data[1]["data"] or false
- if rows != false then
- if #rows != 0 then
- for k, v in pairs(rows) do
- local userlist = util.JSONToTable(v["class_userlist"])
- if table.HasValue(userlist, ply) then
- table.RemoveByValue(userlist, ply)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- UPDATE gmod_regiments_classes SET class_userlist=%s WHERE class_id=%s
- ]],PRegiments.SQL.Wrappers.Escape(util.TableToJSON(userlist)), PRegiments.SQL.Wrappers.Escape(v["class_id"])))
- end
- end
- callback()
- end
- end
- end)
- end
- PRegiments.SQL.Wrappers.SetPlayerRegiment = function(ply, reg_id, callback)
- if !isstring(ply) then ply = ply:SteamID64() end
- PRegiments.SQL.Wrappers.RemovePlayerFromAllRegiments(ply, function()
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_reglist WHERE reg_id=%s
- ]], PRegiments.SQL.Wrappers.Escape(reg_id)), function(data)
- local rows = data[1]["data"] or false
- if rows != false then
- if #rows != 0 then
- local userlist = util.JSONToTable(rows[1]["reg_userlist"])
- table.insert(userlist, ply)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- UPDATE gmod_regiments_reglist SET reg_userlist=%s WHERE reg_id=%s
- ]],PRegiments.SQL.Wrappers.Escape(util.TableToJSON(userlist)), PRegiments.SQL.Wrappers.Escape(reg_id)))
- callback(rows[1])
- end
- end
- end)
- end)
- end
- PRegiments.SQL.Wrappers.SetPlayerRegiment_Primary = function(ply, callback)
- if !isstring(ply) then ply = ply:SteamID64() end
- PRegiments.SQL.Wrappers.RemovePlayerFromAllRegiments(ply, function()
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_reglist WHERE reg_primary=1
- ]]), function(data)
- local rows = data[1]["data"] or false
- if rows != false then
- if #rows != 0 then
- local userlist = util.JSONToTable(rows[1]["reg_userlist"])
- table.insert(userlist, ply)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- UPDATE gmod_regiments_reglist SET reg_userlist=%s WHERE reg_primary=1
- ]], PRegiments.SQL.Wrappers.Escape(util.TableToJSON(userlist))))
- callback(rows[1])
- end
- end
- end)
- end)
- end
- PRegiments.SQL.Wrappers.SetPlayerClass_Primary = function(ply, relativeRegiment, callback)
- if !isstring(ply) then ply = ply:SteamID64() end
- PRegiments.SQL.Wrappers.RemovePlayerFromAllClasses(ply, function()
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_classes WHERE class_primary=1 AND class_owning_reg=%s
- ]], PRegiments.SQL.Wrappers.Escape(relativeRegiment)), function(data)
- local rows = data[1]["data"] or false
- if rows != false then
- if #rows != 0 then
- local userlist = util.JSONToTable(rows[1]["class_userlist"])
- if !table.HasValue(userlist, ply) then
- table.insert(userlist, ply)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- UPDATE gmod_regiments_classes SET class_userlist=%s WHERE class_primary=1 and class_owning_reg=%s
- ]], PRegiments.SQL.Wrappers.Escape(util.TableToJSON(userlist)), PRegiments.SQL.Wrappers.Escape(relativeRegiment)))
- for k, v in pairs(player.GetAll()) do
- PRegiments.CachedTables.UpdateCache(v)
- end
- callback()
- end
- end
- end
- end)
- end)
- end
- hook.Add("PlayerSpawn", "pregiments_check_belongs", function(ply)
- if ply:IsBot() then return end
- PRegiments.SQL.Wrappers.GetPlayersRegimentsAndClasses(ply, function(regimentTable)
- if table.Count(regimentTable.regiments) == 0 then
- PRegiments.SQL.Wrappers.SetPlayerRegiment_Primary(ply, function(primary_reg)
- PRegiments.SQL.Wrappers.SetPlayerClass_Primary(ply, primary_reg["reg_id"], function() end)
- end)
- end
- end)
- end)
- PRegiments.SQL.Wrappers.GetPlayersClasses = function(ply, callback)
- if !isstring(ply) then ply = ply:SteamID64() end
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_classes
- ]]), function(data)
- local rows = data[1]["data"] or false
- local playersClasses = {}
- if rows != false then
- for k, v in pairs(rows) do
- local userlist = util.JSONToTable(v["class_userlist"])
- if #userlist > 0 then
- if table.HasValue(userlist, ply) then
- table.insert(playersClasses, v)
- end
- end
- end
- end
- callback(playersClasses)
- end)
- end
- PRegiments.SQL.Wrappers.GetPlayersRegimentsAndClasses = function(ply, callback)
- if !isstring(ply) then ply = ply:SteamID64() end
- local plyTable = {}
- PRegiments.SQL.Wrappers.GetPlayersRegiments(ply, function(regiments)
- plyTable.regiments = regiments
- local regFind = 1
- if regiments[1] != nil then regFind = regiments[1]["reg_id"] end
- PRegiments.SQL.Wrappers.GetAllClassesOfID(regFind, function(classes)
- plyTable.classes = classes
- callback(plyTable)
- end)
- end)
- end
- // Admin shit
- PRegiments.SQL.Wrappers.GetAllRegiments = function(callback)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_reglist
- ]]), function(data)
- local rows = data[1]["data"] or false
- local playersRegiments = {}
- if rows != false then
- for k, v in pairs(rows) do
- table.insert(playersRegiments, v)
- end
- end
- callback(playersRegiments)
- end)
- end
- PRegiments.SQL.Wrappers.GetAllClasses = function(callback)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_classes
- ]]), function(data)
- local rows = data[1]["data"] or false
- local playersClasses = {}
- if rows != false then
- for k, v in pairs(rows) do
- table.insert(playersClasses, v)
- end
- end
- callback(playersClasses)
- end)
- end
- PRegiments.SQL.Wrappers.GetAllClassesOfID = function(id, callback)
- PRegiments.SQL.DatabaseObject:Query(string.format([[
- SELECT * FROM gmod_regiments_classes WHERE class_owning_reg=%s
- ]], PRegiments.SQL.Wrappers.Escape(id)), function(data)
- local rows = data[1]["data"] or false
- local playersClasses = {}
- if rows != false then
- for k, v in pairs(rows) do
- table.insert(playersClasses, v)
- end
- end
- callback(playersClasses)
- end)
- end
- PRegiments.SQL.Wrappers.GetAllRegimentsAndClasses = function(callback)
- local plyTable = {}
- PRegiments.SQL.Wrappers.GetAllRegiments(function(regiments)
- plyTable.regiments = regiments
- PRegiments.SQL.Wrappers.GetAllClasses(function(classes)
- plyTable.classes = classes
- callback(plyTable)
- end)
- end)
- end
- hook.Run("PRegimentsLoadCache")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement