diff options
-rw-r--r-- | src/fabric.erl | 11 | ||||
-rw-r--r-- | src/fabric_group_info.erl | 7 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/fabric.erl b/src/fabric.erl index afa87082..badc1379 100644 --- a/src/fabric.erl +++ b/src/fabric.erl @@ -96,7 +96,7 @@ query_view(DbName, Design, ViewName, QueryArgs, Callback, Acc0) -> Mod:go(Db, Design, View, QueryArgs, Callback, Acc0). get_view_group_info(DbName, DesignId) -> - fabric_group_info:go(dbname(DbName), name(DesignId)). + fabric_group_info:go(dbname(DbName), design_doc(DesignId)). design_docs(DbName) -> QueryArgs = #view_query_args{start_key = <<"_design/">>, include_docs=true}, @@ -147,6 +147,15 @@ doc({_} = Doc) -> doc(Doc) -> erlang:error({illegal_doc_format, Doc}). +design_doc(#doc{} = DDoc) -> + DDoc; +design_doc(DocId) when is_list(DocId) -> + design_doc(list_to_binary(DocId)); +design_doc(<<"_design/", _/binary>> = DocId) -> + DocId; +design_doc(GroupName) -> + <<"_design/", GroupName/binary>>. + idrevs({Id, Revs}) when is_list(Revs) -> {docid(Id), [rev(R) || R <- Revs]}. diff --git a/src/fabric_group_info.erl b/src/fabric_group_info.erl index 42c29838..d2b76674 100644 --- a/src/fabric_group_info.erl +++ b/src/fabric_group_info.erl @@ -4,8 +4,11 @@ -include("fabric.hrl"). -go(DbName, GroupId) -> - {ok, DDoc} = fabric:open_doc(DbName, <<"_design/", GroupId/binary>>, []), +go(DbName, GroupId) when is_binary(GroupId) -> + {ok, DDoc} = fabric:open_doc(DbName, GroupId, []), + go(DbName, DDoc); + +go(DbName, #doc{} = DDoc) -> Group = couch_view_group:design_doc_to_view_group(#db{name=DbName}, DDoc), Shards = partitions:all_parts(DbName), Workers = fabric_util:submit_jobs(Shards, group_info, [Group]), |