Software /
code /
prosody-modules
Comparison
mod_storage_gdbm/mod_storage_gdbm.lua @ 1653:1fe899527ee5
mod_storage_gdbm: Cleanup [luacheck]
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Tue, 07 Apr 2015 17:35:37 +0200 |
parent | 1635:b877b75eb973 |
child | 1753:54c8a0cb2996 |
comparison
equal
deleted
inserted
replaced
1652:9a3d2f1479a4 | 1653:1fe899527ee5 |
---|---|
3 -- | 3 -- |
4 -- This file is MIT/X11 licensed. | 4 -- This file is MIT/X11 licensed. |
5 -- | 5 -- |
6 -- Depends on lgdbm: | 6 -- Depends on lgdbm: |
7 -- http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/#lgdbm | 7 -- http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/#lgdbm |
8 -- | |
9 -- luacheck: globals open purge | |
8 | 10 |
9 local gdbm = require"gdbm"; | 11 local gdbm = require"gdbm"; |
10 local path = require"util.paths"; | 12 local path = require"util.paths"; |
11 local lfs = require"lfs"; | 13 local lfs = require"lfs"; |
12 local st = require"util.stanza"; | 14 local st = require"util.stanza"; |
16 local serialize = serialization.serialize; | 18 local serialize = serialization.serialize; |
17 local deserialize = serialization.deserialize; | 19 local deserialize = serialization.deserialize; |
18 | 20 |
19 local g_set, g_get, g_del = gdbm.replace, gdbm.fetch, gdbm.delete; | 21 local g_set, g_get, g_del = gdbm.replace, gdbm.fetch, gdbm.delete; |
20 local g_first, g_next = gdbm.firstkey, gdbm.nextkey; | 22 local g_first, g_next = gdbm.firstkey, gdbm.nextkey; |
21 | |
22 local t_remove = table.remove; | |
23 | 23 |
24 local empty = {}; | 24 local empty = {}; |
25 | 25 |
26 local function id(v) return v; end | 26 local function id(v) return v; end |
27 | 27 |
92 ok, err = self:set(username, meta); | 92 ok, err = self:set(username, meta); |
93 if not ok then return nil, err; end | 93 if not ok then return nil, err; end |
94 return key; | 94 return key; |
95 end | 95 end |
96 | 96 |
97 local deserialize = { | 97 local deserialize_map = { |
98 stanza = st.deserialize; | 98 stanza = st.deserialize; |
99 }; | 99 }; |
100 | 100 |
101 function archive:find(username, query) | 101 function archive:find(username, query) |
102 query = query or empty; | 102 query = query or empty; |
121 if (not query.with or item.with == query.with) | 121 if (not query.with or item.with == query.with) |
122 and (not query.start or item.when >= query.start) | 122 and (not query.start or item.when >= query.start) |
123 and (not query["end"] or item.when <= query["end"]) then | 123 and (not query["end"] or item.when <= query["end"]) then |
124 s = i + d; c = c + 1; | 124 s = i + d; c = c + 1; |
125 value = self:get(prefix..item.key); | 125 value = self:get(prefix..item.key); |
126 return item.key, (deserialize[item.type] or id)(value), item.when, item.with; | 126 return item.key, (deserialize_map[item.type] or id)(value), item.when, item.with; |
127 end | 127 end |
128 end | 128 end |
129 end | 129 end |
130 end | 130 end |
131 | 131 |
162 end | 162 end |
163 return true; | 163 return true; |
164 end | 164 end |
165 | 165 |
166 function module.unload() | 166 function module.unload() |
167 for path, db in pairs(cache) do | 167 for db_path, db in pairs(cache) do |
168 module:log("debug", "Closing db at %q", db_path); | |
168 gdbm.sync(db); | 169 gdbm.sync(db); |
169 gdbm.close(db); | 170 gdbm.close(db); |
170 end | 171 end |
171 end | 172 end |
172 | 173 |