You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by da...@apache.org on 2019/07/23 20:13:15 UTC
[couchdb] 06/25: Don't add a fabric2_view module
This is an automated email from the ASF dual-hosted git repository.
davisp pushed a commit to branch prototype/views
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit d0cfb019ee44d2015511fadd6e12698536cb4221
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Tue Jul 16 15:12:27 2019 -0500
Don't add a fabric2_view module
There was barely any logic contained there that's easily included in the
couch_views module. Its mostly historical that fabric includes all of
the view logic anyway. Now that we have multiple indexers it's more
hygenic to move all the code to a single application.
For the chttpd level I'm going to leave the logic in chttpd_view.erl for
the time being. When we go to clean up code in terms of deleting unused
code and moving used code out of mostly deleted applications.
---
src/couch_views/src/couch_views.erl | 101 +++++++++++++++++++++++++++---------
src/fabric/src/fabric2_view.erl | 81 -----------------------------
2 files changed, 76 insertions(+), 106 deletions(-)
diff --git a/src/couch_views/src/couch_views.erl b/src/couch_views/src/couch_views.erl
index 69d6765..c059204 100644
--- a/src/couch_views/src/couch_views.erl
+++ b/src/couch_views/src/couch_views.erl
@@ -13,41 +13,48 @@
-module(couch_views).
-export([
- map_query/6
+ query/6
]).
--include("couch_views.hrl").
+-include("couch_mrview/include/couch_mrview.hrl").
-map_query(Db, DDoc, ViewName, Callback, Acc0, Args0) ->
- Args = process_args(Args0),
- #{name := DbName} = Db,
- {ok, Mrst} = couch_views_util:ddoc_to_mrst(DbName, DDoc),
- maybe_build_index(Db, Mrst, Args),
- Resp = couch_views_reader:read(Db, DDoc, ViewName, Callback, Acc0, Args),
-
- UpdateAfter = maps:get(update, Args) == lazy,
- if UpdateAfter == false -> ok; true ->
- maybe_add_couch_job(Db, Mrst)
+query(Db, DDoc, ViewName, Callback, Acc0, QueryArgs0) ->
+ case fabric2_db:is_users_db(Db) of
+ true ->
+ fabric2_users_db:after_doc_read(DDoc, Db);
+ false ->
+ ok
end,
- Resp.
+ DbName = fabric2_db:name(Db),
+ {ok, Mrst} = couch_views_util:ddoc_to_mrst(DbName, DDoc),
-process_args(#{} = Args) ->
- Args1 = remove_ununsed_values(Args),
- Defaults = #{
- direction => fwd,
- inclusive_end => true,
- update => true,
- skip => 0,
- limit => ?MAX_VIEW_LIMIT
- },
+ #mrst{
+ views = Views,
+ language = Lang
+ } = Mrst,
+
+ QueryArgs1 = couch_mrview_util:set_view_type(QueryArgs0, View, Views),
+ QueryArgs2 = couch_mrview_util:validate_args(QueryArgs1),
+ VInfo = couch_mrview_util:extract_view(Lang, QueryArgs2, View, Views),
+ case is_reduce_view(QueryArgs2) of
+ true -> throw({not_implemented});
+ false -> ok
+ end,
- maps:merge(Defaults, Args1).
+ Args = mrargs_to_map(QueryArgs2),
+ maybe_build_view(Db, MrSt, Args),
-remove_ununsed_values(Args) ->
- maps:filter(fun (_, V) -> V /= undefined end, Args).
+ try
+ couch_views_reader:read(Db, Mrst, ViewName, Callback, Acc0, Args)
+ after
+ UpdateAfter = maps:get(update, Args) == lazy,
+ if UpdateAfter == false -> ok; true ->
+ maybe_add_couch_job(Db, Mrst)
+ end
+ end.
maybe_build_index(_Db, _Mrst, #{update := false}) ->
@@ -118,3 +125,47 @@ wait_for_index_ready(Subscription, Db, Mrst, Seq) ->
{error, Error} ->
throw({error, Error})
end.
+
+
+is_reduce_view(#mrargs{view_type = ViewType}) ->
+ ViewType =:= red;
+is_reduce_view({Reduce, _, _}) ->
+ Reduce =:= red.
+
+
+mrargs_to_map(#mrargs{} = Args) ->
+ process_args(#{
+ start_key => Args#mrargs.start_key,
+ start_key_docid => Args#mrargs.start_key_docid,
+ end_key => Args#mrargs.end_key,
+ end_key_docid => Args#mrargs.end_key_docid,
+ keys => Args#mrargs.keys,
+ direction => Args#mrargs.direction,
+ limit => Args#mrargs.limit,
+ skip => Args#mrargs.skip,
+ update => Args#mrargs.update,
+ multi_get => Args#mrargs.multi_get,
+ inclusive_end => Args#mrargs.inclusive_end,
+ include_docs => Args#mrargs.include_docs,
+ doc_options => Args#mrargs.doc_options,
+ update_seq => Args#mrargs.update_seq,
+ conflicts => Args#mrargs.conflicts,
+ sorted => Args#mrargs.sorted
+ }).
+
+
+process_args(#{} = Args) ->
+ Args1 = remove_ununsed_values(Args),
+ Defaults = #{
+ direction => fwd,
+ inclusive_end => true,
+ update => true,
+ skip => 0,
+ limit => ?MAX_VIEW_LIMIT
+ },
+
+ maps:merge(Defaults, Args1).
+
+
+remove_ununsed_values(Args) ->
+ maps:filter(fun (_, V) -> V /= undefined end, Args).
diff --git a/src/fabric/src/fabric2_view.erl b/src/fabric/src/fabric2_view.erl
deleted file mode 100644
index 01c9ab0..0000000
--- a/src/fabric/src/fabric2_view.erl
+++ /dev/null
@@ -1,81 +0,0 @@
-% Licensed under the Apache License, Version 2.0 (the "License"); you may not
-% use this file except in compliance with the License. You may obtain a copy of
-% the License at
-%
-% http://www.apache.org/licenses/LICENSE-2.0
-%
-% Unless required by applicable law or agreed to in writing, software
-% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-% License for the specific language governing permissions and limitations under
-% the License.
-
--module(fabric2_view).
-
--export([
- query/7
-]).
-
--include_lib("couch_mrview/include/couch_mrview.hrl").
-
-%% @doc execute a given view.
-%% There are many additional query args that can be passed to a view,
-%% see <a href="http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options">
-%% query args</a> for details.
-% -spec query(db(), [{atom(), any()}] | [],
-% #doc{} | binary(), iodata(), callback(), any(), #mrargs{}) -> any().
-query(Db, Options, DDoc, ViewName, Callback, Acc0, QueryArgs0) ->
- DbName = fabric2_db:name(Db),
-%% View = name(ViewName),
- case fabric_util:is_users_db(DbName) of
- true ->
- FakeDb = fabric_util:open_cluster_db(DbName, Options),
- couch_users_db:after_doc_read(DDoc, FakeDb);
- false ->
- ok
- end,
-%% {ok, #mrst{views=Views, language=Lang}} =
-%% couch_views_util:ddoc_to_mrst(DbName, DDoc),
-%% QueryArgs1 = couch_mrview_util:set_view_type(QueryArgs0, View, Views),
-%% QueryArgs1 = fabric_util:validate_args(Db, DDoc, QueryArgs0),
- QueryArgs1 = couch_mrview_util:validate_args(Db, DDoc, QueryArgs0),
-%% VInfo = couch_mrview_util:extract_view(Lang, QueryArgs1, View, Views),
- case is_reduce_view(QueryArgs1) of
- true ->
- throw({not_implemented});
- false ->
- MapQueryArgs = mrargs_to_map((QueryArgs1)),
- couch_views:map_query(Db, DDoc, ViewName, Callback,
- Acc0, MapQueryArgs)
- end.
-
-
-is_reduce_view(_) ->
- false.
-
-
-name(Thing) ->
- couch_util:to_binary(Thing).
-
-
-mrargs_to_map(#mrargs{} = Args) ->
- #{
- start_key => Args#mrargs.start_key,
- start_key_docid => Args#mrargs.start_key_docid,
- end_key => Args#mrargs.end_key,
- end_key_docid => Args#mrargs.end_key_docid,
- keys => Args#mrargs.keys,
- direction => Args#mrargs.direction,
- limit => Args#mrargs.limit,
- skip => Args#mrargs.skip,
- update => Args#mrargs.update,
- multi_get => Args#mrargs.multi_get,
- inclusive_end => Args#mrargs.inclusive_end,
- include_docs => Args#mrargs.include_docs,
- doc_options => Args#mrargs.doc_options,
- update_seq => Args#mrargs.update_seq,
- conflicts => Args#mrargs.conflicts,
- sorted => Args#mrargs.sorted
- }.
-
-