mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
119
lua/includes/util/sql.lua
Normal file
119
lua/includes/util/sql.lua
Normal file
@@ -0,0 +1,119 @@
|
||||
--[[
|
||||
| This file was obtained through the combined efforts
|
||||
| of Madbluntz & Plymouth Antiquarian Society.
|
||||
|
|
||||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||||
| Maloy, DrPepper10 @ RIP, Atle!
|
||||
|
|
||||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||||
--]]
|
||||
|
||||
|
||||
-- Return if there's nothing to add on to
|
||||
if ( !sql ) then return end
|
||||
|
||||
|
||||
--[[----------------------------------------------------------
|
||||
Attempts to make a string safe to put into the database
|
||||
------------------------------------------------------------]]
|
||||
function sql.SQLStr( str_in, bNoQuotes )
|
||||
|
||||
local str = tostring( str_in )
|
||||
|
||||
str = str:gsub( "'", "''" )
|
||||
|
||||
local null_chr = string.find( str, "\0" )
|
||||
if ( null_chr ) then
|
||||
str = string.sub( str, 1, null_chr - 1 )
|
||||
end
|
||||
|
||||
if ( bNoQuotes ) then
|
||||
return str
|
||||
end
|
||||
|
||||
return "'" .. str .. "'"
|
||||
end
|
||||
|
||||
SQLStr = sql.SQLStr
|
||||
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Returns true if the table exists. False if it doesn't
|
||||
-----------------------------------------------------------]]
|
||||
function sql.TableExists( name )
|
||||
|
||||
local r = sql.Query( "SELECT name FROM sqlite_master WHERE name=" .. SQLStr( name ) .. " AND type='table'" )
|
||||
|
||||
return r and true or false
|
||||
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Returns true if the index exists. False if it doesn't
|
||||
-----------------------------------------------------------]]
|
||||
function sql.IndexExists( name )
|
||||
|
||||
local r = sql.Query( "SELECT name FROM sqlite_master WHERE name=" .. SQLStr( name ) .. " AND type='index'" )
|
||||
|
||||
return r and true or false
|
||||
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Query and get a single row
|
||||
eg sql.QueryRow( "SELECT * from ratings LIMIT 1" )
|
||||
-----------------------------------------------------------]]
|
||||
function sql.QueryRow( query, row )
|
||||
|
||||
row = row or 1
|
||||
|
||||
local r = sql.Query( query )
|
||||
|
||||
if ( r ) then return r[ row ] end
|
||||
|
||||
return r
|
||||
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Query and get a single value
|
||||
eg sql.QueryValue( "SELECT count(*) from ratings" )
|
||||
-----------------------------------------------------------]]
|
||||
function sql.QueryValue( query )
|
||||
|
||||
local r = sql.QueryRow( query )
|
||||
|
||||
if ( r ) then
|
||||
|
||||
-- Is this really the best way to get the first/only value in a table
|
||||
for k, v in pairs( r ) do return v end
|
||||
|
||||
end
|
||||
|
||||
return r
|
||||
|
||||
end
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
Call before lots of inserts (100+), will hold off writing to disk
|
||||
until Commit is called, which will increase performance (a lot)
|
||||
-----------------------------------------------------------]]
|
||||
function sql.Begin()
|
||||
sql.Query( "BEGIN;" )
|
||||
end
|
||||
|
||||
|
||||
--[[---------------------------------------------------------
|
||||
See Above
|
||||
-----------------------------------------------------------]]
|
||||
function sql.Commit()
|
||||
sql.Query( "COMMIT;" )
|
||||
end
|
||||
|
||||
|
||||
--[[----------------------------------------------------------
|
||||
m_strError is set by the dll
|
||||
------------------------------------------------------------]]
|
||||
function sql.LastError()
|
||||
return sql.m_strError
|
||||
end
|
||||
Reference in New Issue
Block a user