summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Lehnardt <jan@apache.org>2017-11-15 22:09:59 +0100
committerJan Lehnardt <jan@apache.org>2019-01-19 14:15:50 +0100
commita8460c0243e4201288c7b2b68b75d98a21427fdc (patch)
tree9411944c20e208e55780b81986f7bece066448f6
parent71f788327fa2e84d2ebf4c80c4c0e8204463ff3c (diff)
downloadcouchdb-a8460c0243e4201288c7b2b68b75d98a21427fdc.tar.gz
by-access-id: handle descending=true
-rw-r--r--src/couch_mrview/src/couch_mrview.erl19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/couch_mrview/src/couch_mrview.erl b/src/couch_mrview/src/couch_mrview.erl
index 0ce46950d..697ec786e 100644
--- a/src/couch_mrview/src/couch_mrview.erl
+++ b/src/couch_mrview/src/couch_mrview.erl
@@ -243,11 +243,12 @@ query_all_docs_access(Db, Args0, Callback, Acc) ->
UserName = UserCtx#user_ctx.name,
couch_log:info("~n~n UserName:~p~n~n", [UserName]),
% TODO: add roles
- Args = prefix_startkey_endkey(UserName, Args0),
+ Args = prefix_startkey_endkey(UserName, Args0, Args0#mrargs.direction),
query_view(Db, DDoc, VName, Args, Callback, Acc).
-prefix_startkey_endkey(UserName, #mrargs{start_key=StartKey, end_key=EndKey} = Args0) ->
- Args0#mrargs {
+prefix_startkey_endkey(UserName, Args, fwd) ->
+ #mrargs{start_key=StartKey, end_key=EndKey} = Args,
+ Args#mrargs {
start_key = case StartKey of
undefined -> [UserName];
StartKey -> [UserName, StartKey]
@@ -256,6 +257,18 @@ prefix_startkey_endkey(UserName, #mrargs{start_key=StartKey, end_key=EndKey} = A
undefined -> [UserName, {}];
EndKey -> [UserName, EndKey, {}]
end
+ };
+prefix_startkey_endkey(UserName, Args, rev) ->
+ #mrargs{start_key=StartKey, end_key=EndKey} = Args,
+ Args#mrargs {
+ end_key = case StartKey of
+ undefined -> [UserName];
+ StartKey -> [UserName, StartKey]
+ end,
+ start_key = case EndKey of
+ undefined -> [UserName, {}];
+ EndKey -> [UserName, EndKey, {}]
+ end
}.
query_all_docs_admin(Db, Args0, Callback, Acc) ->