Software / code / prosody
Comparison
plugins/mod_storage_sql.lua @ 3976:16170a66e140
mod_storage_sql: Dynamically replace backquotes with double quotes when connecting to PostgreSQL...
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Mon, 27 Dec 2010 06:10:35 +0500 |
| parent | 3975:aa5e93e61760 |
| child | 3977:6724853adb80 |
comparison
equal
deleted
inserted
replaced
| 3975:aa5e93e61760 | 3976:16170a66e140 |
|---|---|
| 27 local setmetatable = setmetatable; | 27 local setmetatable = setmetatable; |
| 28 local json = { stringify = function(s) return require"util.serialization".serialize(s) end, parse = require"util.serialization".deserialize }; | 28 local json = { stringify = function(s) return require"util.serialization".serialize(s) end, parse = require"util.serialization".deserialize }; |
| 29 | 29 |
| 30 local connection = ...; | 30 local connection = ...; |
| 31 local host,user,store = module.host; | 31 local host,user,store = module.host; |
| 32 local params = module:get_option("sql"); | |
| 32 | 33 |
| 33 do -- process options to get a db connection | 34 do -- process options to get a db connection |
| 34 local DBI = require "DBI"; | 35 local DBI = require "DBI"; |
| 35 | 36 |
| 36 local params = module:get_option("sql") or { driver = "SQLite3", database = "prosody.sqlite" }; | 37 params = params or { driver = "SQLite3", database = "prosody.sqlite" }; |
| 37 assert(params and params.driver and params.database, "invalid params"); | 38 assert(params.driver and params.database, "invalid params"); |
| 38 | 39 |
| 39 prosody.unlock_globals(); | 40 prosody.unlock_globals(); |
| 40 local dbh, err = DBI.Connect( | 41 local dbh, err = DBI.Connect( |
| 41 params.driver, params.database, | 42 params.driver, params.database, |
| 42 params.username, params.password, | 43 params.username, params.password, |
| 83 return json.parse(value); | 84 return json.parse(value); |
| 84 end | 85 end |
| 85 end | 86 end |
| 86 | 87 |
| 87 local function getsql(sql, ...) | 88 local function getsql(sql, ...) |
| 89 if params.driver == "PostgreSQL" then | |
| 90 sql = sql:gsub("`", "\""); | |
| 91 end | |
| 88 -- do prepared statement stuff | 92 -- do prepared statement stuff |
| 89 local stmt, err = connection:prepare(sql); | 93 local stmt, err = connection:prepare(sql); |
| 90 if not stmt then return nil, err; end | 94 if not stmt then return nil, err; end |
| 91 -- run query | 95 -- run query |
| 92 local ok, err = stmt:execute(host or "", user or "", store or "", ...); | 96 local ok, err = stmt:execute(host or "", user or "", store or "", ...); |