You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2018/12/07 22:52:28 UTC
[couchdb] 01/02: Add `couch_db:get_design_doc/2`
This is an automated email from the ASF dual-hosted git repository.
vatamane pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 709477d58ae7143eb44d1e14653994dd0aa6f576
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Wed Dec 5 13:42:47 2018 -0600
Add `couch_db:get_design_doc/2`
This adds an API call for looking up a single design doc regardless of
whether the database is clustered or not.
---
src/couch/src/couch_db.erl | 14 ++++++++++++++
src/couch/src/couch_util.erl | 5 +++++
2 files changed, 19 insertions(+)
diff --git a/src/couch/src/couch_db.erl b/src/couch/src/couch_db.erl
index 0d435c2..2304ba1 100644
--- a/src/couch/src/couch_db.erl
+++ b/src/couch/src/couch_db.erl
@@ -77,6 +77,7 @@
get_full_doc_info/2,
get_full_doc_infos/2,
get_missing_revs/2,
+ get_design_doc/2,
get_design_docs/1,
get_design_doc_count/1,
get_purge_infos/2,
@@ -608,6 +609,19 @@ get_db_info(Db) ->
],
{ok, InfoList}.
+get_design_doc(#db{name = <<"shards/", _/binary>> = ShardDbName}, DDocId0) ->
+ DDocId = couch_util:normalize_ddoc_id(DDocId0),
+ DbName = mem3:dbname(ShardDbName),
+ {_, Ref} = spawn_monitor(fun() ->
+ exit(fabric:open_doc(DbName, DDocId, []))
+ end),
+ receive {'DOWN', Ref, _, _, Response} ->
+ Response
+ end;
+get_design_doc(#db{} = Db, DDocId0) ->
+ DDocId = couch_util:normalize_ddoc_id(DDocId0),
+ couch_db:open_doc_int(Db, DDocId, [ejson_body]).
+
get_design_docs(#db{name = <<"shards/", _/binary>> = ShardDbName}) ->
DbName = mem3:dbname(ShardDbName),
{_, Ref} = spawn_monitor(fun() -> exit(fabric:design_docs(DbName)) end),
diff --git a/src/couch/src/couch_util.erl b/src/couch/src/couch_util.erl
index 3efec84..ddd24aa 100644
--- a/src/couch/src/couch_util.erl
+++ b/src/couch/src/couch_util.erl
@@ -27,6 +27,7 @@
-export([reorder_results/2]).
-export([url_strip_password/1]).
-export([encode_doc_id/1]).
+-export([normalize_ddoc_id/1]).
-export([with_db/2]).
-export([rfc1123_date/0, rfc1123_date/1]).
-export([integer_to_boolean/1, boolean_to_integer/1]).
@@ -543,6 +544,10 @@ encode_doc_id(<<"_local/", Rest/binary>>) ->
encode_doc_id(Id) ->
url_encode(Id).
+normalize_ddoc_id(<<"_design/", _/binary>> = DDocId) ->
+ DDocId;
+normalize_ddoc_id(DDocId) when is_binary(DDocId) ->
+ <<"_design/", DDocId/binary>>.
with_db(DbName, Fun) when is_binary(DbName) ->
case couch_db:open_int(DbName, [?ADMIN_CTX]) of