# HG changeset patch # User Kim Alvefur # Date 1507503737 -7200 # Node ID 1759491b53db2874df60d970493fa194e0f5c853 # Parent 5281c479955abc3887894aefe68d548860a884d5 mod_storage_internal: Add more extensive query support to archive:delete method diff -r 5281c479955a -r 1759491b53db plugins/mod_storage_internal.lua --- a/plugins/mod_storage_internal.lua Mon Oct 09 01:01:28 2017 +0200 +++ b/plugins/mod_storage_internal.lua Mon Oct 09 01:02:17 2017 +0200 @@ -160,9 +160,6 @@ if not query or next(query) == nil then return datamanager.list_store(username, host, self.store, nil); end - for k in pairs(query) do - if k ~= "end" then return nil, "unsupported-query-field"; end - end local items, err = datamanager.list_load(username, host, self.store); if not items then if err then @@ -173,9 +170,28 @@ end items = array(items); local count_before = #items; - items:filter(function (item) - return item.when > query["end"]; - end); + if query then + if query.key then + items:filter(function (item) + return item.key ~= query.key; + end); + end + if query.with then + items:filter(function (item) + return item.with ~= query.with; + end); + end + if query.start then + items:filter(function (item) + return item.when < query.start; + end); + end + if query["end"] then + items:filter(function (item) + return item.when > query["end"]; + end); + end + end local count = count_before - #items; local ok, err = datamanager.list_store(username, host, self.store, items); if not ok then return ok, err; end