From 4a696cc69cc967e5ff2c30f1d5d449f154e46ad2 Mon Sep 17 00:00:00 2001 From: AICells <1713699517@qq.com> Date: Mon, 30 Dec 2019 23:57:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/erlArango.hrl | 6 +++++- src/arangoApi/agCollections.erl | 4 ++++ src/arangoApi/agDbMgr.erl | 35 +++++++++++++++++++++++++++++---- src/httpCli/test.erl | 3 +++ 4 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 src/arangoApi/agCollections.erl diff --git a/include/erlArango.hrl b/include/erlArango.hrl index ee465bd..f8cd02c 100644 --- a/include/erlArango.hrl +++ b/include/erlArango.hrl @@ -1,2 +1,6 @@ %% agency 管理进程的名称 --define(agAgencyPoolMgr, agAgencyPoolMgr). \ No newline at end of file +-define(agAgencyPoolMgr, agAgencyPoolMgr). + +-define(Get, <<"GET">>). +-define(Post, <<"POST">>). +-define(Delete, <<"DELETE">>). \ No newline at end of file diff --git a/src/arangoApi/agCollections.erl b/src/arangoApi/agCollections.erl new file mode 100644 index 0000000..fbbe1c1 --- /dev/null +++ b/src/arangoApi/agCollections.erl @@ -0,0 +1,4 @@ +-module(agCollections). + +%% API +-export([]). diff --git a/src/arangoApi/agDbMgr.erl b/src/arangoApi/agDbMgr.erl index 5f7e72a..9466f6b 100644 --- a/src/arangoApi/agDbMgr.erl +++ b/src/arangoApi/agDbMgr.erl @@ -1,11 +1,38 @@ -module(agDbMgr). +-include("erlArango.hrl"). --export([]). +-compile(export_all). %% 请注意,所有数据库管理操作只能通过默认数据库(_system)访问,而不能通过其他数据库访问。 %% 检索有关当前数据库的信息 -% GET /_api/database/current -dbCurrent(PoolName) -> - ok. \ No newline at end of file +%% GET /_api/database/current +curDbInfo(PoolName) -> + agHttpCli:callAgency(PoolName, ?Get, <<"/_api/database/current">>, [], undefined, infinity). + +%% 检索当前用户可以访问的所有数据库的列表 +%% GET /_api/database/user +userVisitDbs(PoolName) -> + agHttpCli:callAgency(PoolName, ?Get, <<"/_api/database/user">>, [], undefined, infinity). + +%% 创建一个新的数据库 注意:仅可以在_system数据库中创建新数据库。 +%% POST /_api/database +% 具有以下属性的JSON对象是必需的: +% name:必须包含一个有效的数据库名称。 +% users:必须是最初为新数据库创建的用户对象数组。对于已经存在的用户,不会更改用户信息。如果未指定用户或不包含任何用户,则将使用空字符串密码创建默认用户 root。这确保了新数据库在创建后将可访问。每个用户对象可以包含以下属性: +% username:要创建的用户的登录名 +% passwd:用户密码(字符串)。如果未指定,则默认为空字符串。 +% active:一个标志,指示是否应该激活用户帐户。默认值为true。如果设置为false,则用户将无法登录数据库。 +% extra:带有额外用户信息的JSON对象。Extra中包含的数据 将为用户存储,但ArangoDB不会进一步解释 +newDb(PoolName, Name, Users) -> + NameStr = jsx:encode(#{name => Name}), + UsersStr = jsx:encode(#{users => Users}), + agHttpCli:callAgency(PoolName, ?Post, <<"/_api/database">>, [], [NameStr, UsersStr], infinity). + +%% 删除现有数据库 +%% DELETE /_api/database/{database-name} + +delDb(PoolName, Name) -> + Path = <<"/_api/database/", Name/binary>>, + agHttpCli:callAgency(PoolName, ?Delete, Path, [], undefined, infinity). diff --git a/src/httpCli/test.erl b/src/httpCli/test.erl index 1f922f3..48566a4 100644 --- a/src/httpCli/test.erl +++ b/src/httpCli/test.erl @@ -3,6 +3,9 @@ -compile([export_all, nowarn_export_all]). +start() -> + application:start(erlArango), + agHttpCli:startPool(tt, [{poolSize, 100}], []). tt(C, N) -> application:start(erlArango),