|
-module(agDbMgr).
|
|
-include("erlArango.hrl").
|
|
|
|
-compile(export_all).
|
|
|
|
%% 请注意,所有数据库管理操作只能通过默认数据库(_system)访问,而不能通过其他数据库访问。
|
|
|
|
%% 检索有关当前数据库的信息
|
|
%% 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) ->
|
|
NameStr = jiffy:encode(Name),
|
|
agHttpCli:callAgency(PoolName, ?Post, <<"/_api/database">>, [], [<<"{\"name\":">>, NameStr, <<"}">>], infinity).
|
|
|
|
newDb(PoolName, Name, Users) ->
|
|
|
|
BodyStr = jiffy:encode(#{<<"name">> => Name, <<"users">> => Users}),
|
|
agHttpCli:callAgency(PoolName, ?Post, <<"/_api/database">>, [], BodyStr, infinity).
|
|
|
|
%% 删除现有数据库
|
|
%% DELETE /_api/database/{database-name}
|
|
|
|
delDb(PoolName, Name) ->
|
|
Path = <<"/_api/database/", Name/binary>>,
|
|
agHttpCli:callAgency(PoolName, ?Delete, Path, [], undefined, infinity).
|