# HG changeset patch # User Kim Alvefur # Date 1423344166 -3600 # Node ID 1fbec16996f53cb05d547009fafbc76ee9bfbe7b # Parent 3912a53fd4db4ee2f6faff32604e1e286137143e mod_storage_gdbm: Add support for 'limit' query parameter diff -r 3912a53fd4db -r 1fbec16996f5 mod_storage_gdbm/mod_storage_gdbm.lua --- a/mod_storage_gdbm/mod_storage_gdbm.lua Sat Feb 07 22:22:15 2015 +0100 +++ b/mod_storage_gdbm/mod_storage_gdbm.lua Sat Feb 07 22:22:46 2015 +0100 @@ -80,20 +80,23 @@ local r = query.reverse; local d = r and -1 or 1; local s = meta[ifelse(r, query.before, query.after)]; + local limit = query.limit; if s then s = s + d; else s = ifelse(r, #meta, 1) end local e = ifelse(r, 1, #meta); + local c = 0; return function () + if limit and c >= limit then return end local item, value; for i = s, e, d do item = meta[i]; if (not query.with or item.with == query.with) and (not query.start or item.when >= query.start) and (not query["end"] or item.when >= query["end"]) then - s = i + d; + s = i + d; c = c + 1; value = self:get(item.key); return item.key, (deserialize[item.type] or id)(value), item.when, item.with; end