Comparison

plugins/mod_storage_memory.lua @ 10839:018acdaf374f

mod_storage_memory: Add map store methods to archive store
author Kim Alvefur <zash@zash.se>
date Mon, 11 May 2020 23:22:25 +0200
parent 10222:51f145094648
child 10926:c55bd98a54f8
comparison
equal deleted inserted replaced
10838:f26f2ec33f1e 10839:018acdaf374f
165 if not item then return; end 165 if not item then return; end
166 return item.key, item.value(), item.when, item.with; 166 return item.key, item.value(), item.when, item.with;
167 end, count; 167 end, count;
168 end 168 end
169 169
170 function archive_store:get(username, wanted_key)
171 local items = self.store[username or NULL];
172 if not items then return nil, "item-not-found"; end
173 local i = items[wanted_key];
174 if not i then return nil, "item-not-found"; end
175 local item = items[i];
176 return item.value(), item.when, item.with;
177 end
178
179 function archive_store:set(username, wanted_key, new_value, new_when, new_with)
180 local items = self.store[username or NULL];
181 if not items then return nil, "item-not-found"; end
182 local i = items[wanted_key];
183 if not i then return nil, "item-not-found"; end
184 local item = items[i];
185
186 if is_stanza(new_value) then
187 new_value = st.preserialize(new_value);
188 item.value = envload("return xml"..serialize(new_value), "=(stanza)", { xml = st.deserialize })
189 else
190 item.value = envload("return "..serialize(new_value), "=(data)", {});
191 end
192 if new_when then
193 item.when = new_when;
194 end
195 if new_with then
196 item.with = new_when;
197 end
198 return true;
199 end
200
170 function archive_store:summary(username, query) 201 function archive_store:summary(username, query)
171 local iter, err = self:find(username, query) 202 local iter, err = self:find(username, query)
172 if not iter then return iter, err; end 203 if not iter then return iter, err; end
173 local counts = {}; 204 local counts = {};
174 local earliest = {}; 205 local earliest = {};