Software /
code /
prosody
Comparison
plugins/mod_storage_memory.lua @ 9997:7c4631d7b6fb
mod_storage_internal,memory: Only return total count if requested
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 05 May 2019 08:12:16 +0200 |
parent | 9906:d0b58bdd6c86 |
child | 10019:c30c81176752 |
comparison
equal
deleted
inserted
replaced
9996:9bb1bed3e8e3 | 9997:7c4631d7b6fb |
---|---|
88 end | 88 end |
89 | 89 |
90 function archive_store:find(username, query) | 90 function archive_store:find(username, query) |
91 local items = self.store[username or NULL]; | 91 local items = self.store[username or NULL]; |
92 if not items then | 92 if not items then |
93 return function () end, 0; | 93 if query then |
94 end | 94 if query.total then |
95 local count = #items; | 95 return function () end, 0; |
96 end | |
97 end | |
98 return function () end; | |
99 end | |
100 local count = nil; | |
96 local i = 0; | 101 local i = 0; |
97 if query then | 102 if query then |
98 items = array():append(items); | 103 items = array():append(items); |
99 if query.key then | 104 if query.key then |
100 items:filter(function (item) | 105 items:filter(function (item) |
114 if query["end"] then | 119 if query["end"] then |
115 items:filter(function (item) | 120 items:filter(function (item) |
116 return item.when <= query["end"]; | 121 return item.when <= query["end"]; |
117 end); | 122 end); |
118 end | 123 end |
119 count = #items; | 124 if query.total then |
125 count = #items; | |
126 end | |
120 if query.reverse then | 127 if query.reverse then |
121 items:reverse(); | 128 items:reverse(); |
122 if query.before then | 129 if query.before then |
123 for j = 1, count do | 130 for j = 1, #items do |
124 if (items[j].key or tostring(j)) == query.before then | 131 if (items[j].key or tostring(j)) == query.before then |
125 i = j; | 132 i = j; |
126 break; | 133 break; |
127 end | 134 end |
128 end | 135 end |
129 end | 136 end |
130 elseif query.after then | 137 elseif query.after then |
131 for j = 1, count do | 138 for j = 1, #items do |
132 if (items[j].key or tostring(j)) == query.after then | 139 if (items[j].key or tostring(j)) == query.after then |
133 i = j; | 140 i = j; |
134 break; | 141 break; |
135 end | 142 end |
136 end | 143 end |