diff options
Diffstat (limited to 'src/dreyfus/src/dreyfus_util.erl')
-rw-r--r-- | src/dreyfus/src/dreyfus_util.erl | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/dreyfus/src/dreyfus_util.erl b/src/dreyfus/src/dreyfus_util.erl index 0a83e87bd..05ecdb621 100644 --- a/src/dreyfus/src/dreyfus_util.erl +++ b/src/dreyfus/src/dreyfus_util.erl @@ -19,7 +19,7 @@ -include_lib("mem3/include/mem3.hrl"). -include_lib("couch/include/couch_db.hrl"). --export([get_shards/2, sort/2, upgrade/1, export/1, time/2]). +-export([get_shards/2, get_ring_opts/2, sort/2, upgrade/1, export/1, time/2]). -export([in_black_list/1, in_black_list/3, maybe_deny_index/3]). -export([get_design_docid/1]). -export([ @@ -59,6 +59,15 @@ use_ushards(#index_query_args{stable=true}) -> use_ushards(#index_query_args{}) -> false. + +get_ring_opts(#index_query_args{partition = nil}, _Shards) -> + []; +get_ring_opts(#index_query_args{}, Shards) -> + Shards1 = lists:map(fun(#shard{} = S) -> + S#shard{ref = undefined} + end, Shards), + [{any, Shards1}]. + -spec sort(Order :: relevance | [any()], [#sortable{}]) -> [#sortable{}]. sort(Sort, List0) -> {List1, Stash} = stash_items(List0), @@ -418,4 +427,15 @@ stash_test() -> Unstashed = hd(unstash_items(Stashed, Stash)), ?assertEqual(Unstashed#sortable.item, bar). + +ring_opts_test() -> + Shards = [#shard{name = foo, ref = make_ref()}], + + QArgs1 = #index_query_args{partition = nil}, + ?assertEqual([], get_ring_opts(QArgs1, Shards)), + + QArgs2 = #index_query_args{partition = <<"x">>}, + ?assertMatch([{any, [#shard{name = foo, ref = undefined}]}], + get_ring_opts(QArgs2, Shards)). + -endif. |