Mercurial > prosody-hg
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 |
| parents | 51f145094648 |
| children | 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 = {}; |
