Mercurial > prosody-hg
comparison plugins/mod_storage_memory.lua @ 10019:c30c81176752
mod_storage_memory: Return error if 'before' or 'after' are not found (partial fix for #1325)
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Tue, 05 Mar 2019 00:16:41 +0100 |
| parents | 7c4631d7b6fb |
| children | f6959fe81a1d |
comparison
equal
deleted
inserted
replaced
| 10018:7408b9473729 | 10019:c30c81176752 |
|---|---|
| 125 count = #items; | 125 count = #items; |
| 126 end | 126 end |
| 127 if query.reverse then | 127 if query.reverse then |
| 128 items:reverse(); | 128 items:reverse(); |
| 129 if query.before then | 129 if query.before then |
| 130 local found = false; | |
| 130 for j = 1, #items do | 131 for j = 1, #items do |
| 131 if (items[j].key or tostring(j)) == query.before then | 132 if (items[j].key or tostring(j)) == query.before then |
| 133 found = true; | |
| 132 i = j; | 134 i = j; |
| 133 break; | 135 break; |
| 134 end | 136 end |
| 135 end | 137 end |
| 138 if not found then | |
| 139 return nil, "item-not-found"; | |
| 140 end | |
| 136 end | 141 end |
| 137 elseif query.after then | 142 elseif query.after then |
| 143 local found = false; | |
| 138 for j = 1, #items do | 144 for j = 1, #items do |
| 139 if (items[j].key or tostring(j)) == query.after then | 145 if (items[j].key or tostring(j)) == query.after then |
| 146 found = true; | |
| 140 i = j; | 147 i = j; |
| 141 break; | 148 break; |
| 142 end | 149 end |
| 150 end | |
| 151 if not found then | |
| 152 return nil, "item-not-found"; | |
| 143 end | 153 end |
| 144 end | 154 end |
| 145 if query.limit and #items - i > query.limit then | 155 if query.limit and #items - i > query.limit then |
| 146 items[i+query.limit+1] = nil; | 156 items[i+query.limit+1] = nil; |
| 147 end | 157 end |
