eiri commented on a change in pull request #1744: Fix total_rows value for 
queries on `_design_docs` handler
URL: https://github.com/apache/couchdb/pull/1744#discussion_r234855111
 
 

 ##########
 File path: src/fabric/src/fabric_view_all_docs.erl
 ##########
 @@ -85,10 +85,13 @@ go(DbName, Options, QueryArgs, Callback, Acc0) ->
     Resp = case couch_util:get_value(namespace, Extra, <<"_all_docs">>) of
         <<"_local">> ->
             {ok, null};
-        _ ->
+        NS ->
 
 Review comment:
   Well, this is essentially just changing two-level `case` into one-level 
`case` and I agree this is indeed adds clarity, but as a trade off we are 
adding another level of abstraction with sending function as an argument (and 
those are usually annoying to debug) plus that awkward moment where we are 
sending `get_doc_count` function into `get_doc_counts` function, which I 
imagine would require some untangling on a casual code reading.
   
   How about abstracting things on `fabric:get_doc_count` level with something 
like this?
   
   ```diff
   diff --git a/src/fabric/src/fabric.erl b/src/fabric/src/fabric.erl
   index 36ed67154..868a72c46 100644
   --- a/src/fabric/src/fabric.erl
   +++ b/src/fabric/src/fabric.erl
   @@ -91,7 +91,13 @@ get_db_info(DbName) ->
        {error, atom()} |
        {error, atom(), any()}.
    get_doc_count(DbName) ->
   -    fabric_db_doc_count:go(dbname(DbName)).
   +    get_doc_count(DbName, <<"_all_docs">>).
   +
   +get_doc_count(DbName, <<"_all_docs">>) ->
   +    fabric_db_doc_count:go(dbname(DbName));
   +get_doc_count(DbName, <<"_design">>) ->
   +    fabric_design_doc_count:go(dbname(DbName)).
   +
    
    %% @equiv create_db(DbName, [])
    create_db(DbName) ->
   diff --git a/src/fabric/src/fabric_view_all_docs.erl 
b/src/fabric/src/fabric_view_all_docs.erl
   index ac16dac52..6a8b1546b 100644
   --- a/src/fabric/src/fabric_view_all_docs.erl
   +++ b/src/fabric/src/fabric_view_all_docs.erl
   @@ -85,10 +85,10 @@ go(DbName, Options, QueryArgs, Callback, Acc0) ->
        Resp = case couch_util:get_value(namespace, Extra, <<"_all_docs">>) of
            <<"_local">> ->
                {ok, null};
   -        _ ->
   +        Namespace ->
                Timeout = fabric_util:all_docs_timeout(),
                {_, Ref0} = spawn_monitor(fun() ->
   -                exit(fabric:get_doc_count(DbName))
   +                exit(fabric:get_doc_count(DbName, Namespace))
                end),
                receive {'DOWN', Ref0, _, _, Result} ->
                    Result
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to