move validate doc update to go through couch_eval
diff --git a/src/couch/src/couch_doc.erl b/src/couch/src/couch_doc.erl
index 124d14c..2771e14 100644
--- a/src/couch/src/couch_doc.erl
+++ b/src/couch/src/couch_doc.erl
@@ -27,7 +27,6 @@
-include_lib("couch/include/couch_db.hrl").
-
-spec to_path(#doc{}) -> path().
to_path(#doc{revs = {Start, RevIds}} = Doc) ->
[Branch] = to_branch(Doc, lists:reverse(RevIds)),
@@ -431,7 +430,7 @@
nil;
_Else ->
fun(EditDoc, DiskDoc, Ctx, SecObj) ->
- couch_query_servers:validate_doc_update(DDoc, EditDoc, DiskDoc, Ctx, SecObj)
+ couch_eval:validate_doc_update(DDoc, EditDoc, DiskDoc, Ctx, SecObj)
end
end.
diff --git a/src/couch_eval/src/couch_eval.erl b/src/couch_eval/src/couch_eval.erl
index affcf71..cdaf8ce 100644
--- a/src/couch_eval/src/couch_eval.erl
+++ b/src/couch_eval/src/couch_eval.erl
@@ -17,7 +17,8 @@
release_map_context/1,
map_docs/2,
with_context/2,
- try_compile/4
+ try_compile/4,
+ validate_doc_update/5
]).
-include_lib("couch/include/couch_db.hrl").
@@ -37,6 +38,7 @@
-type function_name() :: binary().
-type function_src() :: binary().
-type error(_Error) :: no_return().
+-type user_context() :: any().
-type context_opts() :: #{
db_name := db_name(),
@@ -58,6 +60,8 @@
-callback acquire_context() -> {ok, any()} | {error, any()}.
-callback release_context(context()) -> ok | {error, any()}.
-callback try_compile(context(), function_type(), function_name(), function_src()) -> ok.
+-callback validate_doc_update(ddoc(), doc(), doc(), user_context(), sec_obj()) ->
+ ok | {error, any()}.
-spec acquire_map_context(
db_name(),
@@ -116,6 +120,11 @@
try_compile({ApiMod, Ctx}, FuncType, FuncName, FuncSrc) ->
ApiMod:try_compile(Ctx, FuncType, FuncName, FuncSrc).
+validate_doc_update(#doc{body = {Props}} = DDoc, EditDoc, DiskDoc, Ctx, SecObj) ->
+ Language = couch_util:get_value(<<"language">>, Props, <<"javascript">>),
+ ApiMod = get_api_mod(Language),
+ ApiMod:validate_doc_update(DDoc, EditDoc, DiskDoc, Ctx, SecObj).
+
acquire_context(Language) ->
ApiMod = get_api_mod(Language),
{ok, Ctx} = ApiMod:acquire_context(),
diff --git a/src/couch_js/src/couch_js.erl b/src/couch_js/src/couch_js.erl
index 3a80a99..739aa1b 100644
--- a/src/couch_js/src/couch_js.erl
+++ b/src/couch_js/src/couch_js.erl
@@ -19,7 +19,8 @@
map_docs/2,
acquire_context/0,
release_context/1,
- try_compile/4
+ try_compile/4,
+ validate_doc_update/5
]).
-include_lib("couch/include/couch_db.hrl").
@@ -62,3 +63,6 @@
try_compile(Proc, FunctionType, FunName, FunSrc) ->
couch_query_servers:try_compile(Proc, FunctionType, FunName, FunSrc).
+
+validate_doc_update(DDoc, EditDoc, DiskDoc, Ctx, SecObj) ->
+ couch_query_servers:validate_doc_update(DDoc, EditDoc, DiskDoc, Ctx, SecObj).