iilyak commented on a change in pull request #3568:
URL: https://github.com/apache/couchdb/pull/3568#discussion_r633804780



##########
File path: src/chttpd/src/chttpd_db.erl
##########
@@ -805,474 +898,572 @@ paginate_all_docs_view(Req, Db, Args0, OP) ->
     UpdateSeq = fabric2_db:get_update_seq(Db),
     EtagTerm = {Parts, UpdateSeq, Args3},
     Response = couch_views_http:paginated(
-        Req, EtagTerm, Args3, KeyFun,
+        Req,
+        EtagTerm,
+        Args3,
+        KeyFun,
         fun(Args) ->
             all_docs_paginated_cb(Db, Args)
-        end),
+        end
+    ),
     chttpd:send_json(Req, Response).
 
-
 all_docs_paginated_cb(Db, Args) ->
-    #vacc{meta=MetaMap, buffer=Items} = case Args#mrargs.keys of
-        undefined ->
-            send_all_docs(Db, Args, #vacc{paginated=true});
-        Keys when is_list(Keys) ->
-            send_all_docs_keys(Db, Args, #vacc{paginated=true})
-    end,
+    #vacc{meta = MetaMap, buffer = Items} =
+        case Args#mrargs.keys of
+            undefined ->
+                send_all_docs(Db, Args, #vacc{paginated = true});
+            Keys when is_list(Keys) ->
+                send_all_docs_keys(Db, Args, #vacc{paginated = true})
+        end,
     {MetaMap, Items}.
 
-
 send_all_docs(Db, #mrargs{keys = undefined} = Args, VAcc0) ->
     Opts0 = fabric2_util:all_docs_view_opts(Args),
     NS = couch_util:get_value(namespace, Opts0),
-    FoldFun = case NS of
-        <<"_all_docs">> -> fold_docs;
-        <<"_design">> -> fold_design_docs;
-        <<"_local">> -> fold_local_docs
-    end,
-    Opts = case couch_views_util:is_paginated(Args) of
-        false ->
-            Opts0 ++ [{restart_tx, true}];
-        true ->
-            Opts0
-    end,
+    FoldFun =
+        case NS of
+            <<"_all_docs">> -> fold_docs;
+            <<"_design">> -> fold_design_docs;
+            <<"_local">> -> fold_local_docs
+        end,
+    Opts =
+        case couch_views_util:is_paginated(Args) of
+            false ->
+                Opts0 ++ [{restart_tx, true}];
+            true ->
+                Opts0
+        end,
     ViewCb = fun view_cb/2,
     Acc = {iter, Db, Args, VAcc0},
     {ok, {iter, _, _, VAcc1}} = fabric2_db:FoldFun(Db, ViewCb, Acc, Opts),
     VAcc1.
 
-
 send_all_docs_keys(Db, #mrargs{} = Args, VAcc0) ->
     Keys = apply_args_to_keylist(Args, Args#mrargs.keys),
     NS = couch_util:get_value(namespace, Args#mrargs.extra),
     TotalRows = fabric2_db:get_doc_count(Db, NS),
-    Meta = case Args#mrargs.update_seq of
-        true ->
-            UpdateSeq = fabric2_db:get_update_seq(Db),
-            [{update_seq, UpdateSeq}];
-        false ->
-            []
-    end ++ [{total, TotalRows}, {offset, null}],
+    Meta =
+        case Args#mrargs.update_seq of
+            true ->
+                UpdateSeq = fabric2_db:get_update_seq(Db),
+                [{update_seq, UpdateSeq}];
+            false ->
+                []
+        end ++ [{total, TotalRows}, {offset, null}],
     {ok, VAcc1} = view_cb({meta, Meta}, VAcc0),
-    DocOpts = case Args#mrargs.conflicts of
-        true -> [conflicts | Args#mrargs.doc_options];
-        _ -> Args#mrargs.doc_options
-    end,
+    DocOpts =
+        case Args#mrargs.conflicts of
+            true -> [conflicts | Args#mrargs.doc_options];
+            _ -> Args#mrargs.doc_options
+        end,
     IncludeDocs = Args#mrargs.include_docs,
     OpenOpts = [deleted | DocOpts],
 
     CB = fun(DocId, Doc, Acc) ->
-        Row0 = case Doc of
-            {not_found, missing} ->
-                #view_row{key = DocId};
-            {ok, #doc{deleted = true, revs = Revs}} ->
-                {RevPos, [RevId | _]} = Revs,
-                Value = {[
-                    {rev, couch_doc:rev_to_str({RevPos, RevId})},
-                    {deleted, true}
-                ]},
-                DocValue = if not IncludeDocs -> undefined; true ->
-                    null
-                end,
-                #view_row{
-                    key = DocId,
-                    id = DocId,
-                    value = Value,
-                    doc = DocValue
-                };
-            {ok, #doc{revs = Revs} = Doc0} ->
-                {RevPos, [RevId | _]} = Revs,
-                Value = {[
-                    {rev, couch_doc:rev_to_str({RevPos, RevId})}
-                ]},
-                DocValue = if not IncludeDocs -> undefined; true ->
-                    couch_doc:to_json_obj(Doc0, DocOpts)
-                end,
-                #view_row{
-                    key = DocId,
-                    id = DocId,
-                    value = Value,
-                    doc = DocValue
-                }
-        end,
+        Row0 =
+            case Doc of
+                {not_found, missing} ->
+                    #view_row{key = DocId};
+                {ok, #doc{deleted = true, revs = Revs}} ->
+                    {RevPos, [RevId | _]} = Revs,
+                    Value =
+                        {[
+                            {rev, couch_doc:rev_to_str({RevPos, RevId})},
+                            {deleted, true}
+                        ]},
+                    DocValue =
+                        if
+                            not IncludeDocs -> undefined;
+                            true -> null
+                        end,
+                    #view_row{
+                        key = DocId,
+                        id = DocId,
+                        value = Value,
+                        doc = DocValue
+                    };
+                {ok, #doc{revs = Revs} = Doc0} ->
+                    {RevPos, [RevId | _]} = Revs,
+                    Value =
+                        {[
+                            {rev, couch_doc:rev_to_str({RevPos, RevId})}
+                        ]},
+                    DocValue =
+                        if
+                            not IncludeDocs -> undefined;
+                            true -> couch_doc:to_json_obj(Doc0, DocOpts)
+                        end,
+                    #view_row{
+                        key = DocId,
+                        id = DocId,
+                        value = Value,
+                        doc = DocValue
+                    }
+            end,
         Row1 = couch_views_http:transform_row(Row0),
         view_cb(Row1, Acc)
     end,
     {ok, VAcc2} = fabric2_db:fold_docs(Db, Keys, CB, VAcc1, OpenOpts),
     VAcc2.
 
-
 apply_args_to_keylist(Args, Keys0) ->
-    Keys1 = case Args#mrargs.direction of
-        fwd -> Keys0;
-        _ -> lists:reverse(Keys0)
-    end,
-    Keys2 = case Args#mrargs.skip < length(Keys1) of
-        true -> lists:nthtail(Args#mrargs.skip, Keys1);
-        false -> []
-    end,
+    Keys1 =
+        case Args#mrargs.direction of
+            fwd -> Keys0;
+            _ -> lists:reverse(Keys0)
+        end,
+    Keys2 =
+        case Args#mrargs.skip < length(Keys1) of
+            true -> lists:nthtail(Args#mrargs.skip, Keys1);
+            false -> []
+        end,
     case Args#mrargs.limit < length(Keys2) of
         true -> lists:sublist(Keys2, Args#mrargs.limit);
         false -> Keys2
     end.
 
-
 view_cb({row, Row}, {iter, Db, Args, VAcc}) ->
-    NewRow = case lists:keymember(doc, 1, Row) of
-        true ->
-            chttpd_stats:incr_reads(),
-            Row;
-        false when Args#mrargs.include_docs ->
-            {id, DocId} = lists:keyfind(id, 1, Row),
-            chttpd_stats:incr_reads(),
-            DocOpts = case Args#mrargs.conflicts of
-                true -> [conflicts | Args#mrargs.doc_options];
-                _ -> Args#mrargs.doc_options
-            end,
-            OpenOpts = [deleted | DocOpts],
-            DocMember = case fabric2_db:open_doc(Db, DocId, OpenOpts) of
-                {not_found, missing} ->
-                    [];
-                {ok, #doc{deleted = true}} ->
-                    [{doc, null}];
-                {ok, #doc{} = Doc} ->
-                    [{doc, couch_doc:to_json_obj(Doc, DocOpts)}]
-            end,
-            Row ++ DocMember;
-        _ ->
-            Row
-    end,
+    NewRow =
+        case lists:keymember(doc, 1, Row) of
+            true ->
+                chttpd_stats:incr_reads(),
+                Row;
+            false when Args#mrargs.include_docs ->
+                {id, DocId} = lists:keyfind(id, 1, Row),
+                chttpd_stats:incr_reads(),
+                DocOpts =
+                    case Args#mrargs.conflicts of
+                        true -> [conflicts | Args#mrargs.doc_options];
+                        _ -> Args#mrargs.doc_options
+                    end,
+                OpenOpts = [deleted | DocOpts],
+                DocMember =
+                    case fabric2_db:open_doc(Db, DocId, OpenOpts) of
+                        {not_found, missing} ->
+                            [];
+                        {ok, #doc{deleted = true}} ->
+                            [{doc, null}];
+                        {ok, #doc{} = Doc} ->
+                            [{doc, couch_doc:to_json_obj(Doc, DocOpts)}]
+                    end,
+                Row ++ DocMember;
+            _ ->
+                Row
+        end,
     chttpd_stats:incr_rows(),
     {Go, NewVAcc} = couch_views_http:view_cb({row, NewRow}, VAcc),
     {Go, {iter, Db, Args, NewVAcc}};
-
 view_cb(Msg, {iter, Db, Args, VAcc}) ->
     {Go, NewVAcc} = couch_views_http:view_cb(Msg, VAcc),
     {Go, {iter, Db, Args, NewVAcc}};
-
 view_cb(Msg, Acc) ->
     couch_views_http:view_cb(Msg, Acc).
 
-db_doc_req(#httpd{method='DELETE'}=Req, Db, DocId) ->
+db_doc_req(#httpd{method = 'DELETE'} = Req, Db, DocId) ->
     % check for the existence of the doc to handle the 404 case.
     couch_doc_open(Db, DocId, nil, []),
     case chttpd:qs_value(Req, "rev") of
-    undefined ->
-        Body = {[{<<"_deleted">>,true}]};
-    Rev ->
-        Body = {[{<<"_rev">>, ?l2b(Rev)},{<<"_deleted">>,true}]}
+        undefined ->
+            Body = {[{<<"_deleted">>, true}]};
+        Rev ->
+            Body = {[{<<"_rev">>, ?l2b(Rev)}, {<<"_deleted">>, true}]}
     end,
     Doc = couch_doc_from_req(Req, Db, DocId, Body),
     send_updated_doc(Req, Db, DocId, Doc);
-
-db_doc_req(#httpd{method='GET', mochi_req=MochiReq}=Req, Db, DocId) ->
+db_doc_req(#httpd{method = 'GET', mochi_req = MochiReq} = Req, Db, DocId) ->
     #doc_query_args{
         rev = Rev,
         open_revs = Revs,
         options = Options,
         atts_since = AttsSince
     } = parse_doc_query(Req),
     case Revs of
-    [] ->
-        Options2 =
-        if AttsSince /= nil ->
-            [{atts_since, AttsSince}, attachments | Options];
-        true -> Options
-        end,
-        Doc = couch_doc_open(Db, DocId, Rev, Options2),
-        send_doc(Req, Doc, Options2);
-    _ ->
-        case fabric2_db:open_doc_revs(Db, DocId, Revs, Options) of
-            {ok, []} when Revs == all ->
-                chttpd:send_error(Req, {not_found, missing});
-            {ok, Results} ->
-                chttpd_stats:incr_reads(length(Results)),
-                case MochiReq:accepts_content_type("multipart/mixed") of
-                false ->
-                    {ok, Resp} = start_json_response(Req, 200),
-                    send_chunk(Resp, "["),
-                    % We loop through the docs. The first time through the 
separator
-                    % is whitespace, then a comma on subsequent iterations.
-                    lists:foldl(
-                        fun(Result, AccSeparator) ->
-                            case Result of
-                            {ok, Doc} ->
-                                JsonDoc = couch_doc:to_json_obj(Doc, Options),
-                                Json = ?JSON_ENCODE({[{ok, JsonDoc}]}),
-                                send_chunk(Resp, AccSeparator ++ Json);
-                            {{not_found, missing}, RevId} ->
-                                RevStr = couch_doc:rev_to_str(RevId),
-                                Json = ?JSON_ENCODE({[{<<"missing">>, 
RevStr}]}),
-                                send_chunk(Resp, AccSeparator ++ Json)
-                            end,
-                            "," % AccSeparator now has a comma
-                        end,
-                        "", Results),
-                    send_chunk(Resp, "]"),
-                    end_json_response(Resp);
-                true ->
-                    send_docs_multipart(Req, Results, Options)
-                end;
-            {error, Error} ->
-                chttpd:send_error(Req, Error)
-        end
+        [] ->
+            Options2 =
+                if
+                    AttsSince /= nil ->
+                        [{atts_since, AttsSince}, attachments | Options];
+                    true ->
+                        Options
+                end,
+            Doc = couch_doc_open(Db, DocId, Rev, Options2),
+            send_doc(Req, Doc, Options2);
+        _ ->
+            case fabric2_db:open_doc_revs(Db, DocId, Revs, Options) of
+                {ok, []} when Revs == all ->
+                    chttpd:send_error(Req, {not_found, missing});
+                {ok, Results} ->
+                    chttpd_stats:incr_reads(length(Results)),
+                    case MochiReq:accepts_content_type("multipart/mixed") of
+                        false ->
+                            {ok, Resp} = start_json_response(Req, 200),
+                            send_chunk(Resp, "["),
+                            % We loop through the docs. The first time through 
the separator
+                            % is whitespace, then a comma on subsequent 
iterations.
+                            lists:foldl(
+                                fun(Result, AccSeparator) ->
+                                    case Result of
+                                        {ok, Doc} ->
+                                            JsonDoc = 
couch_doc:to_json_obj(Doc, Options),
+                                            Json = ?JSON_ENCODE({[{ok, 
JsonDoc}]}),
+                                            send_chunk(Resp, AccSeparator ++ 
Json);
+                                        {{not_found, missing}, RevId} ->
+                                            RevStr = 
couch_doc:rev_to_str(RevId),
+                                            Json = 
?JSON_ENCODE({[{<<"missing">>, RevStr}]}),
+                                            send_chunk(Resp, AccSeparator ++ 
Json)
+                                    end,
+                                    % AccSeparator now has a comma
+                                    ","
+                                end,
+                                "",
+                                Results
+                            ),
+                            send_chunk(Resp, "]"),
+                            end_json_response(Resp);
+                        true ->
+                            send_docs_multipart(Req, Results, Options)
+                    end;
+                {error, Error} ->
+                    chttpd:send_error(Req, Error)
+            end
     end;
-
-db_doc_req(#httpd{method='POST'}=Req, Db, DocId) ->
+db_doc_req(#httpd{method = 'POST'} = Req, Db, DocId) ->
     couch_httpd:validate_referer(Req),
     fabric2_db:validate_docid(DocId),
     chttpd:validate_ctype(Req, "multipart/form-data"),
 
     Form = couch_httpd:parse_form(Req),
     case proplists:is_defined("_doc", Form) of
-    true ->
-        Json = ?JSON_DECODE(couch_util:get_value("_doc", Form)),
-        Doc = couch_doc_from_req(Req, Db, DocId, Json);
-    false ->
-        Rev = couch_doc:parse_rev(list_to_binary(couch_util:get_value("_rev", 
Form))),
-        Doc = case fabric2_db:open_doc_revs(Db, DocId, [Rev], []) of
-            {ok, [{ok, Doc0}]} ->
-                chttpd_stats:incr_reads(),
-                Doc0;
-            {error, Error} ->
-                throw(Error)
-        end
+        true ->
+            Json = ?JSON_DECODE(couch_util:get_value("_doc", Form)),
+            Doc = couch_doc_from_req(Req, Db, DocId, Json);
+        false ->
+            Rev = 
couch_doc:parse_rev(list_to_binary(couch_util:get_value("_rev", Form))),
+            Doc =
+                case fabric2_db:open_doc_revs(Db, DocId, [Rev], []) of
+                    {ok, [{ok, Doc0}]} ->
+                        chttpd_stats:incr_reads(),
+                        Doc0;
+                    {error, Error} ->
+                        throw(Error)
+                end
     end,
     UpdatedAtts = [
         couch_att:new([
             {name, validate_attachment_name(Name)},
             {type, list_to_binary(ContentType)},
             {data, Content}
-        ]) ||
-        {Name, {ContentType, _}, Content} <-
-        proplists:get_all_values("_attachments", Form)
+        ])
+     || {Name, {ContentType, _}, Content} <-

Review comment:
       0. I prefer `<-` on new line. 
   
   ```
   [
           couch_att:new([
                   {name, validate_attachment_name(Name)},
                   {type, list_to_binary(ContentType)},
                   {data, Content}
           ])
           || {Name, {ContentType, _}, Content}
           <- proplists:get_all_values("_attachments", Form)
   ]
   ```
   




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to