diff options
author | Eric Avdey <eiri@eiri.ca> | 2018-10-25 11:27:21 -0300 |
---|---|---|
committer | Eric Avdey <eiri@eiri.ca> | 2018-10-29 11:10:51 -0300 |
commit | 6ee3d958c8b2162182bb8c3722ac7d3c725c345a (patch) | |
tree | f77b7141250772736075c624f8c3b41a519318f7 | |
parent | ca60a5e1fe8c1bce0cff0aaadb8581e7f7b765cd (diff) | |
download | couchdb-6ee3d958c8b2162182bb8c3722ac7d3c725c345a.tar.gz |
Extend generation of missing id to a bulk operation with new_edits false
-rw-r--r-- | src/chttpd/src/chttpd_db.erl | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/src/chttpd/src/chttpd_db.erl b/src/chttpd/src/chttpd_db.erl index f95c3e794..d46b5bbf2 100644 --- a/src/chttpd/src/chttpd_db.erl +++ b/src/chttpd/src/chttpd_db.erl @@ -420,19 +420,16 @@ db_req(#httpd{method='POST',path_parts=[_,<<"_bulk_docs">>], user_ctx=Ctx}=Req, _ -> Options = [{user_ctx,Ctx}, {w,W}] end, + Docs = lists:map(fun(JsonObj) -> + Doc = couch_doc:from_json_obj_validate(JsonObj), + validate_attachment_names(Doc), + case Doc#doc.id of + <<>> -> Doc#doc{id = couch_uuids:new()}; + _ -> Doc + end + end, DocsArray), case couch_util:get_value(<<"new_edits">>, JsonProps, true) of true -> - Docs = lists:map( - fun(JsonObj) -> - Doc = couch_doc:from_json_obj_validate(JsonObj), - validate_attachment_names(Doc), - Id = case Doc#doc.id of - <<>> -> couch_uuids:new(); - Id0 -> Id0 - end, - Doc#doc{id=Id} - end, - DocsArray), Options2 = case couch_util:get_value(<<"all_or_nothing">>, JsonProps) of true -> [all_or_nothing|Options]; @@ -455,8 +452,6 @@ db_req(#httpd{method='POST',path_parts=[_,<<"_bulk_docs">>], user_ctx=Ctx}=Req, send_json(Req, 417, ErrorsJson) end; false -> - Docs = [couch_doc:from_json_obj_validate(JsonObj) || JsonObj <- DocsArray], - [validate_attachment_names(D) || D <- Docs], case fabric:update_docs(Db, Docs, [replicated_changes|Options]) of {ok, Errors} -> ErrorsJson = lists:map(fun update_doc_result_to_json/1, Errors), |