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/12 15:19:54 UTC

[couchdb] branch prototype/fdb-layer updated: Implement `POST /_dbs_info`

This is an automated email from the ASF dual-hosted git repository.

davisp pushed a commit to branch prototype/fdb-layer
in repository https://gitbox.apache.org/repos/asf/couchdb.git


The following commit(s) were added to refs/heads/prototype/fdb-layer by this push:
     new c040623  Implement `POST /_dbs_info`
c040623 is described below

commit c0406234d9618feaf351e2f80e1403a889213903
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Fri Jul 12 10:19:30 2019 -0500

    Implement `POST /_dbs_info`
---
 src/chttpd/src/chttpd_misc.erl | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/chttpd/src/chttpd_misc.erl b/src/chttpd/src/chttpd_misc.erl
index e5f0002..11d2c5b 100644
--- a/src/chttpd/src/chttpd_misc.erl
+++ b/src/chttpd/src/chttpd_misc.erl
@@ -157,7 +157,7 @@ all_dbs_callback({error, Reason}, #vacc{resp=Resp0}=Acc) ->
     {ok, Resp1} = chttpd:send_delayed_error(Resp0, Reason),
     {ok, Acc#vacc{resp=Resp1}}.
 
-handle_dbs_info_req(#httpd{method='POST'}=Req) ->
+handle_dbs_info_req(#httpd{method='POST', user_ctx=UserCtx}=Req) ->
     chttpd:validate_ctype(Req, "application/json"),
     Props = chttpd:json_body_obj(Req),
     Keys = couch_mrview_util:get_view_keys(Props),
@@ -174,13 +174,14 @@ handle_dbs_info_req(#httpd{method='POST'}=Req) ->
     {ok, Resp} = chttpd:start_json_response(Req, 200),
     send_chunk(Resp, "["),
     lists:foldl(fun(DbName, AccSeparator) ->
-        case catch fabric:get_db_info(DbName) of
-            {ok, Result} ->
-                Json = ?JSON_ENCODE({[{key, DbName}, {info, {Result}}]}),
-                send_chunk(Resp, AccSeparator ++ Json);
-            _ ->
-                Json = ?JSON_ENCODE({[{key, DbName}, {error, not_found}]}),
-                send_chunk(Resp, AccSeparator ++ Json)
+        try
+            {ok, Db} = fabric2_db:open(DbName, [{user_ctx, UserCtx}]),
+            {ok, Info} = fabric2_db:get_db_info(Db),
+            Json = ?JSON_ENCODE({[{key, DbName}, {info, {Info}}]}),
+            send_chunk(Resp, AccSeparator ++ Json)
+        catch error:database_does_not_exist ->
+            ErrJson = ?JSON_ENCODE({[{key, DbName}, {error, not_found}]}),
+            send_chunk(Resp, AccSeparator ++ ErrJson)
         end,
         "," % AccSeparator now has a comma
     end, "", Keys),