Software /
code /
prosody
Comparison
plugins/mod_storage_internal.lua @ 10018:7408b9473729
mod_storage_internal: 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:12:30 +0100 |
parent | 10001:55f5588d71c6 |
child | 10024:4a0d990253a0 |
comparison
equal
deleted
inserted
replaced
10017:994cccebb597 | 10018:7408b9473729 |
---|---|
159 count = #items; | 159 count = #items; |
160 end | 160 end |
161 if query.reverse then | 161 if query.reverse then |
162 items:reverse(); | 162 items:reverse(); |
163 if query.before then | 163 if query.before then |
164 local found = false; | |
164 for j = 1, #items do | 165 for j = 1, #items do |
165 if (items[j].key or tostring(j)) == query.before then | 166 if (items[j].key or tostring(j)) == query.before then |
167 found = true; | |
166 i = j; | 168 i = j; |
167 break; | 169 break; |
168 end | 170 end |
169 end | 171 end |
172 if not found then | |
173 return nil, "item-not-found"; | |
174 end | |
170 end | 175 end |
171 elseif query.after then | 176 elseif query.after then |
177 local found = false; | |
172 for j = 1, #items do | 178 for j = 1, #items do |
173 if (items[j].key or tostring(j)) == query.after then | 179 if (items[j].key or tostring(j)) == query.after then |
180 found = true; | |
174 i = j; | 181 i = j; |
175 break; | 182 break; |
176 end | 183 end |
184 end | |
185 if not found then | |
186 return nil, "item-not-found"; | |
177 end | 187 end |
178 end | 188 end |
179 if query.limit and #items - i > query.limit then | 189 if query.limit and #items - i > query.limit then |
180 items[i+query.limit+1] = nil; | 190 items[i+query.limit+1] = nil; |
181 end | 191 end |