Software /
code /
prosody
Comparison
plugins/mod_storage_sql.lua @ 10677:0054aec3e8c5
mod_storage_sql: Add map_store:find_key() and map_store:delete_key() (+ tests)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 11 Mar 2020 15:57:53 +0000 |
parent | 10656:ffa9a20aca8b |
child | 10680:19692fc5c106 |
comparison
equal
deleted
inserted
replaced
10676:33c7e4920591 | 10677:0054aec3e8c5 |
---|---|
222 extradata[key] = data; | 222 extradata[key] = data; |
223 local t, value = assert(serialize(extradata)); | 223 local t, value = assert(serialize(extradata)); |
224 engine:insert(insert_sql, host, username or "", self.store, "", t, value); | 224 engine:insert(insert_sql, host, username or "", self.store, "", t, value); |
225 end | 225 end |
226 end | 226 end |
227 return true; | |
228 end); | |
229 if not ok then return nil, result; end | |
230 return result; | |
231 end | |
232 | |
233 function map_store:find_key(key) | |
234 if type(key) ~= "string" or key == "" then | |
235 return nil, "find_key only supports non-empty string keys"; | |
236 end | |
237 local ok, result = engine:transaction(function() | |
238 local query = [[ | |
239 SELECT "user", "type", "value" | |
240 FROM "prosody" | |
241 WHERE "host"=? AND "store"=? AND "key"=? | |
242 ]]; | |
243 | |
244 local data; | |
245 for row in engine:select(query, host, self.store, key) do | |
246 local key_data, err = deserialize(row[2], row[3]); | |
247 assert(key_data ~= nil, err); | |
248 if data == nil then | |
249 data = {}; | |
250 end | |
251 data[row[1]] = key_data; | |
252 end | |
253 | |
254 return data; | |
255 | |
256 end); | |
257 if not ok then return nil, result; end | |
258 return result; | |
259 end | |
260 | |
261 function map_store:delete_key(key) | |
262 if type(key) ~= "string" or key == "" then | |
263 return nil, "delete_key only supports non-empty string keys"; | |
264 end | |
265 local ok, result = engine:transaction(function() | |
266 local delete_sql = [[ | |
267 DELETE FROM "prosody" | |
268 WHERE "host"=? AND "store"=? AND "key"=?; | |
269 ]]; | |
270 engine:delete(delete_sql, host, self.store, key); | |
227 return true; | 271 return true; |
228 end); | 272 end); |
229 if not ok then return nil, result; end | 273 if not ok then return nil, result; end |
230 return result; | 274 return result; |
231 end | 275 end |