Software /
code /
prosody
Comparison
plugins/mod_storage_sql.lua @ 13241:0419de4e4db1
mod_storage_sql: Pass variables as arguments instead of upvalues
Probably a workaround for the lack of argument passing when using xpcall
in Lua 5.1, no longer relevant.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sat, 22 Jul 2023 15:22:54 +0200 |
parent | 13229:bb7177efbf41 |
child | 13242:0d3881bf29a8 |
comparison
equal
deleted
inserted
replaced
13240:a378937103cb | 13241:0419de4e4db1 |
---|---|
59 end | 59 end |
60 return nil, "Unhandled value type: "..t; | 60 return nil, "Unhandled value type: "..t; |
61 end | 61 end |
62 | 62 |
63 local host = module.host; | 63 local host = module.host; |
64 local user, store; | 64 |
65 | 65 local function keyval_store_get(user, store) |
66 local function keyval_store_get() | |
67 local haveany; | 66 local haveany; |
68 local result = {}; | 67 local result = {}; |
69 local select_sql = [[ | 68 local select_sql = [[ |
70 SELECT "key","type","value" | 69 SELECT "key","type","value" |
71 FROM "prosody" | 70 FROM "prosody" |
86 end | 85 end |
87 if haveany then | 86 if haveany then |
88 return result; | 87 return result; |
89 end | 88 end |
90 end | 89 end |
91 local function keyval_store_set(data) | 90 local function keyval_store_set(data, user, store) |
92 local delete_sql = [[ | 91 local delete_sql = [[ |
93 DELETE FROM "prosody" | 92 DELETE FROM "prosody" |
94 WHERE "host"=? AND "user"=? AND "store"=? | 93 WHERE "host"=? AND "user"=? AND "store"=? |
95 ]]; | 94 ]]; |
96 engine:delete(delete_sql, host, user or "", store); | 95 engine:delete(delete_sql, host, user or "", store); |
121 --- Key/value store API (default store type) | 120 --- Key/value store API (default store type) |
122 | 121 |
123 local keyval_store = {}; | 122 local keyval_store = {}; |
124 keyval_store.__index = keyval_store; | 123 keyval_store.__index = keyval_store; |
125 function keyval_store:get(username) | 124 function keyval_store:get(username) |
126 user, store = username, self.store; | 125 local ok, result = engine:transaction(keyval_store_get, username, self.store); |
127 local ok, result = engine:transaction(keyval_store_get); | |
128 if not ok then | 126 if not ok then |
129 module:log("error", "Unable to read from database %s store for %s: %s", store, username or "<host>", result); | 127 module:log("error", "Unable to read from database %s store for %s: %s", self.store, username or "<host>", result); |
130 return nil, result; | 128 return nil, result; |
131 end | 129 end |
132 return result; | 130 return result; |
133 end | 131 end |
134 function keyval_store:set(username, data) | 132 function keyval_store:set(username, data) |
135 user,store = username,self.store; | 133 return engine:transaction(keyval_store_set, data, username, self.store); |
136 return engine:transaction(function() | |
137 return keyval_store_set(data); | |
138 end); | |
139 end | 134 end |
140 function keyval_store:users() | 135 function keyval_store:users() |
141 local ok, result = engine:transaction(function() | 136 local ok, result = engine:transaction(function() |
142 local select_sql = [[ | 137 local select_sql = [[ |
143 SELECT DISTINCT "user" | 138 SELECT DISTINCT "user" |