Software /
code /
prosody
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 = {}; |