-module(agDbMgr). -include("erlArango.hrl"). -compile(inline). -compile({inline_size, 128}). -compile([export_all, nowarn_export_all]). %% doc_address:https://www.arangodb.com/docs/stable/http/database-database-management.html % 数据库信息永久链接 % 检索有关当前数据库的信息(别名/_ap/database/properties) % GET /_api/database/current % 检索有关当前数据库的信息 % 响应是具有以下属性的JSON对象: % name:当前数据库的名称 % id:当前数据库的ID % path:当前数据库的文件系统路径 % isSystem:当前数据库是否为_system数据库 % sharding:此数据库中创建的集合的默认分片方法 % ReplicationFactor:此数据库中集合的默认复制因子 % writeConcern:此数据库中集合的默认写关注点 % 返回码 % 200:如果成功检索到信息,则返回。 % 400:如果请求无效,则返回。 % 404:如果找不到数据库,则返回。 curDbInfo(PoolNameOrSocket) -> agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/database/current">>, [], undefined). % 检索当前用户可以访问的所有数据库的列表 % GET /_api/database/user % 检索当前用户可以访问的所有数据库的列表,而无需指定其他用户名或密码。 % 返回码 % 200:如果数据库列表编译成功,则返回。 % 400:如果请求无效,则返回。 visitDbs(PoolNameOrSocket) -> agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/database/user">>, [], undefined). % 检索所有现有数据库的列表 % GET /_api/database % 检索所有现有数据库的列表 % 注意:只能从_system数据库中检索数据库列表。 % 注意:您现在应该使用GET用户API来获取可用数据库的列表。 % 返回码 % 200:如果数据库列表编译成功,则返回。 % 400:如果请求无效,则返回。 % 403:如果请求未在_system数据库中执行,则返回。 allDbs(PoolNameOrSocket) -> agHttpCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/database">>, [], undefined). % 创建一个新的数据库 % POST /_api/database % 具有以下属性的JSON对象是必需的: % name:必须包含一个有效的数据库名称。 % options:可选对象,可以包含以下属性: % sharding:用于此数据库中新集合的分片方法。有效值为:“”,“ flexible”或“ single”。前两个是等效的。(仅集群) % ReplicationFactor:在此数据库中创建的新集合的默认复制因子。特殊值包括“ satellite”和将其禁用复制的“ satellite”(将集合复制到每个数据库服务器)和“ 1”。(仅集群) % writeConcern:在此数据库中创建的新集合的默认写关注。它确定在不同的DBServer上同步每个分片需要多少个副本。如果集群中的副本数量很少,那么分片将拒绝写入。但是,具有足够最新副本的分片写入将同时成功。writeConcern的值 不能大于ReplicationFactor。(仅集群) % users:必须是最初为新数据库创建的用户对象数组。对于已经存在的用户,不会更改用户信息。如果未指定users或不包含任何用户,则将使用空字符串密码创建默认用户 root。这确保了新数据库在创建后将可访问。每个用户对象可以包含以下属性: % username:要创建的用户的登录名 % passwd:用户密码(字符串)。如果未指定,则默认为空字符串。 % active:一个标志,指示是否应该激活用户帐户。默认值为true。如果设置为false,则用户将无法登录数据库。 % extra:带有额外用户信息的JSON对象。Extra中包含的数据 将为用户存储,但ArangoDB不会进一步解释。 % 创建一个新的数据库 % 响应是一个JSON对象,其属性结果设置为true。 % 注意:仅可以在_system数据库中创建新数据库。 % 返回码 % 201:如果数据库创建成功,则返回。 % 400:如果请求参数无效或具有指定名称的数据库已存在,则返回。 % 403:如果请求未在_system数据库中执行,则返回。 % 409:如果具有指定名称的数据库已经存在,则返回。 newDb(PoolNameOrSocket, MapData) -> BodyStr = jiffy:encode(MapData), agHttpCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/database">>, [], BodyStr, true). % 删除现有数据库 % DELETE /_api/database/{database-name} % 路径参数 % database-name(必填):数据库的名称 % 删除数据库以及其中存储的所有数据。 % 注意:只能从_system数据库中删除数据库。该_SYSTEM数据库本身不能被丢弃。 % 返回码 % 200:如果成功删除数据库,则返回。 % 400:如果请求格式错误,则返回。 % 403:如果请求未在_system数据库中执行,则返回。 % 404:如果找不到数据库,则返回。 delDb(PoolNameOrSocket, Name) -> Path = <<"/_api/database/", Name/binary>>, agHttpCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, [], undefined, true).