Software / code / prosody
Comparison
plugins/mod_storage_internal.lua @ 8022:05e201468f27
mod_storage_internal: Add support for removing archived items
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Fri, 31 Mar 2017 17:48:50 +0200 |
| parent | 8021:83f18982bcfd |
| child | 8023:5a9d491cc714 |
comparison
equal
deleted
inserted
replaced
| 8021:83f18982bcfd | 8022:05e201468f27 |
|---|---|
| 118 item = st.deserialize(item); | 118 item = st.deserialize(item); |
| 119 return key, item, when, with; | 119 return key, item, when, with; |
| 120 end, count; | 120 end, count; |
| 121 end | 121 end |
| 122 | 122 |
| 123 function archive:delete(username, query) | |
| 124 if not query or next(query) == nil then | |
| 125 return datamanager.list_store(username, host, self.store, nil); | |
| 126 end | |
| 127 for k in pairs(query) do | |
| 128 if k ~= "end" then return nil, "unsupported-query-field"; end | |
| 129 end | |
| 130 local items, err = datamanager.list_load(username, host, self.store); | |
| 131 if not items then return items, err; end | |
| 132 items = array(items); | |
| 133 items:filter(function (item) | |
| 134 return item.when > query["end"]; | |
| 135 end); | |
| 136 local count = #items; | |
| 137 local ok, err = datamanager.list_store(username, host, self.store, items); | |
| 138 if not ok then return ok, err; end | |
| 139 return count; | |
| 140 end | |
| 141 | |
| 123 module:provides("storage", driver); | 142 module:provides("storage", driver); |