arangodb erlang数据库驱动
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

234 рядки
13 KiB

4 роки тому
4 роки тому
4 роки тому
3 роки тому
4 роки тому
3 роки тому
4 роки тому
3 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
3 роки тому
4 роки тому
3 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
4 роки тому
  1. -module(agUserMgr).
  2. -include("eArango.hrl").
  3. -compile(inline).
  4. -compile({inline_size, 128}).
  5. -compile([export_all, nowarn_export_all]).
  6. % doc_address:https://www.arangodb.com/docs/stable/http/user-management.html
  7. % 用户管理的HTTP接口
  8. % 这是用于管理用户的ArangoDB HTTP接口的简介。
  9. % 该界面提供了添加,更新和删除用户的简单方法。通过此接口管理的所有用户都将存储在系统集合 _users中。您永远不要直接操作_users集合。
  10. % 该专用接口有意不提供常规文档REST API中可用的所有功能。
  11. % 请注意,ArangoDB的复制中不包括用户操作。
  12. % 创建一个新用户。
  13. % POST /_api/user
  14. % 具有以下属性的JSON对象是必需的:
  15. % user:用户名(字符串)。这是强制性的。
  16. % passwd:用户密码(字符串)。如果未指定密码,将使用空字符串。如果传递特殊值ARANGODB_DEFAULT_ROOT_PASSWORD,则密码将设置为存储在环境变量中的值 ARANGODB_DEFAULT_ROOT_PASSWORD。这可用于将实例变量传递给ArangoDB。例如,来自Amazon的实例标识符。
  17. % active:一个可选标志,用于指定用户是否处于活动状态。如果未指定,则默认为true
  18. % extra:一个可选的JSON对象,其中包含有关用户的任意额外数据。
  19. % 创建一个新用户。您需要服务器访问级别“ 管理 ”才能执行此REST调用。
  20. % 返回码
  21. % 201:如果服务器可以添加用户,则返回
  22. % 400:如果JSON格式不正确或请求中缺少必需数据。
  23. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  24. % 403:如果您没有访问服务器访问级别,则返回。
  25. % 409:如果已经存在同名用户,则返回。
  26. newUser(PoolNameOrSocket, MapData) ->
  27. agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/user">>, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
  28. % 设置数据库访问级别。
  29. % PUT /_api/user/{user}/database/{dbname}
  30. % 路径参数
  31. % user (必填):用户名。
  32. % dbname(必填):数据库的名称。
  33. % 具有以下属性的JSON对象是必需的:
  34. % grant:使用“ rw”将数据库访问级别设置为Administrate。
  35. % 使用“ ro”将数据库访问级别设置为Access。
  36. % 使用“none”将数据库访问级别设置为“ 无访问权”。
  37. % 为用户user的数据库dbname设置数据库访问级别。您需要管理服务器访问级别才能执行此REST调用。
  38. % 返回码
  39. % 200:如果访问级别更改成功,则返回。
  40. % 400:如果JSON格式不正确或请求中缺少必需数据。
  41. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  42. % 403:如果您没有访问服务器访问级别,则返回。
  43. setUserDbAccessLevel(PoolNameOrSocket, UserName, DbName, MapData) ->
  44. Path = <<"/_api/user/", UserName/binary, "/database/", DbName/binary>>,
  45. agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
  46. % 设置收集访问级别。
  47. % PUT /_api/user/{user}/database/{dbname}/{collection}
  48. % 路径参数
  49. % user(必填):用户名。
  50. % dbname(必填):数据库的名称。
  51. % collection (必填):集合的名称。
  52. % 具有以下属性的JSON对象是必需的:
  53. % grant:使用“ rw”将收集级别访问权限设置为“ 读/写”。
  54. % 使用“ ro”将收集级别访问权限设置为“ 只读”。
  55. % 使用“none”将收集级别访问权限设置为“ 无访问权限”。
  56. %
  57. % 设置用于收集访问级别收集在数据库DBNAME 用户的用户。您需要管理服务器访问级别才能执行此REST调用。
  58. % 返回码
  59. % 200:成功修改访问权限后返回。
  60. % 400:如果JSON格式不正确或请求中缺少必需数据。
  61. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  62. % 403:如果您没有访问服务器访问级别,则返回。
  63. setUserCollAccessLevel(PoolNameOrSocket, UserName, DbName, CollName, MapData) ->
  64. Path = <<"/_api/user/", UserName/binary, "/database/", DbName/binary, "/", CollName/binary>>,
  65. agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
  66. % 清除数据库访问级别,恢复为默认访问级别
  67. % DELETE /_api/user/{user}/database/{dbname}
  68. % 路径参数
  69. % user(必填):用户名。
  70. % dbname(必填):数据库的名称。
  71. %
  72. % 清除用户user的数据库dbname的数据库访问级别。因此,将使用默认的数据库访问级别。如果没有定义的默认数据库访问级别,则默认为No access。您需要获得_system数据库的权限才能执行此REST调用。
  73. %
  74. % 返回码
  75. % 202:成功更改访问权限后返回。
  76. % 400:如果JSON格式不正确或请求中缺少必需数据。。
  77. clearUserDbAccessLevel(PoolNameOrSocket, UserName, DbName) ->
  78. Path = <<"/_api/user/", UserName/binary, "/database/", DbName/binary>>,
  79. agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path).
  80. % 清除集合访问级别,恢复为默认访问级别
  81. % DELETE /_api/user/{user}/database/{dbname}/{collection}
  82. % 路径参数
  83. % user(必填):用户名。
  84. % dbname(必填):数据库的名称。
  85. % collection(必填):集合的名称。
  86. %
  87. % 清除用户user的数据库dbname中集合集合的集合访问级别。因此,将使用默认的集合访问级别。如果没有定义的默认集合访问级别,则默认为No access。您需要具有_system数据库的权限才能执行此REST调用。
  88. % 返回码
  89. % 202:成功更改访问权限后返回。
  90. % 400:如果有错误
  91. clearUserCollAccessLevel(PoolNameOrSocket, UserName, DbName, CollName) ->
  92. Path = <<"/_api/user/", UserName/binary, "/database/", DbName/binary, "/", CollName/binary>>,
  93. agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path).
  94. % 列出用户的可访问数据库
  95. % GET /_api/user/{user}/database/
  96. % 路径参数
  97. % 用户(必填):您要查询数据库的用户名。
  98. % 查询参数
  99. % full(可选):返回所有数据库和所有集合的完整访问级别集。
  100. % 获取指定用户可用的数据库列表。您需要 管理的服务器访问级别,以执行该REST调用。
  101. % 该调用将返回一个具有指定用户按数据库访问权限的JSON对象。该结果对象将包含数据库名称作为对象键,以及相关的权限的数据库值。
  102. % 如果您指定full,则结果将包含数据库的权限以及集合的权限。
  103. % 返回码
  104. % 200:如果可以返回可用数据库列表,则返回。
  105. % 400:如果访问权限不正确等
  106. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  107. % 403:如果您没有访问服务器访问级别,则返回。
  108. getUserDbList(PoolNameOrSocket, UserName) ->
  109. Path = <<"/_api/user/", UserName/binary, "/database/">>,
  110. agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path).
  111. getUserDbList(PoolNameOrSocket, UserName, QueryPars) ->
  112. Path = <<"/_api/user/", UserName/binary, "/database/">>,
  113. agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path, QueryPars).
  114. % 获取特定的数据库访问级别
  115. % GET /_api/user/{user}/database/{dbname}
  116. % 路径参数
  117. % user(必填):您要查询数据库的用户名。
  118. % dbname(必填):要查询的数据库的名称
  119. % 获取特定数据库的数据库访问级别
  120. % 返回码
  121. % 200:如果可以返回访问级别,则返回
  122. % 400:如果访问权限不正确等
  123. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  124. % 403:如果您没有访问服务器访问级别,则返回。
  125. getUserDbAccessLevel(PoolNameOrSocket, UserName, DbName) ->
  126. Path = <<"/_api/user/", UserName/binary, "/database/", DbName/binary>>,
  127. agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path).
  128. % 获取特定集合访问级别
  129. % GET /_api/user/{user}/database/{dbname}/{collection}
  130. % 路径参数
  131. % user(必填):您要查询数据库的用户名。
  132. % dbname(必填):要查询的数据库的名称
  133. % collection(必填):集合的名称
  134. % 返回特定集合的集合访问级别
  135. % 返回码
  136. % 200:如果可以返回访问级别,则返回
  137. % 400:如果访问权限不正确等
  138. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  139. % 403:如果您没有访问服务器访问级别,则返回。
  140. getUserCollAccessLevel(PoolNameOrSocket, UserName, DbName, CollName) ->
  141. Path = <<"/_api/user/", UserName/binary, "/database/", DbName/binary, "/", CollName/binary>>,
  142. agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path).
  143. % 替换现有用户属性。
  144. % PUT /_api/user/{user}
  145. % 路径参数
  146. % user(必填):用户名
  147. % 具有以下属性的JSON对象是必需的:
  148. % passwd:用户密码(字符串)。必须指定密码,但是密码允许使用空字符串
  149. % active:一个可选标志,用于指定用户是否处于活动状态。如果未指定,则默认为true
  150. % extra:一个可选的JSON对象,其中包含有关用户的任意额外数据。
  151. % 替换现有用户的数据。现有用户的名称必须在user中指定。您需要服务器访问级别“ 管理 ”才能执行此REST调用。另外,用户可以更改他/她自己的数据。
  152. % 返回码
  153. % 200:如果用户数据可以被服务器替换,则返回。
  154. % 400:JSON格式不正确或请求中缺少必需数据
  155. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  156. % 403:如果您没有访问服务器访问级别,则返回。
  157. % 404:指定的用户不存在
  158. replaceUser(PoolNameOrSocket, UserName, MapData) ->
  159. Path = <<"/_api/user/", UserName/binary>>,
  160. agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
  161. % 修改现有用户的属性
  162. % PATCH /_api/user/{user}
  163. % 路径参数
  164. % user(必填):用户名
  165. % 具有以下属性的JSON对象是必需的:
  166. % passwd:用户密码(字符串)。必须指定密码,但是密码允许使用空字符串
  167. % active:一个可选标志,用于指定用户是否处于活动状态。如果未指定,则默认为true
  168. % extra:一个可选的JSON对象,其中包含有关用户的任意额外数据。
  169. % 部分更新现有用户的数据。现有用户的名称必须在user中指定。您需要服务器访问级别“ 管理 ”才能执行此REST调用。另外,用户可以更改他/她自己的数据。
  170. % 返回码
  171. % 200:如果用户数据可以被服务器替换,则返回。
  172. % 400:JSON格式不正确或请求中缺少必需数据。
  173. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  174. % 403:如果您没有访问服务器访问级别,则返回。
  175. % 404:指定的用户不存在
  176. updateUser(PoolNameOrSocket, UserName, MapData) ->
  177. Path = <<"/_api/user/", UserName/binary>>,
  178. agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
  179. % 永久删除用户。
  180. % DELETE /_api/user/{user}
  181. %路径参数
  182. % user(必填):用户名
  183. %删除由user标识的现有用户。您需要管理的服务器访问级别,以执行该REST调用。
  184. %返回码
  185. % 202:如果服务器删除了用户,则返回
  186. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  187. % 403:如果您没有访问服务器访问级别,则返回。
  188. % 404:指定的用户不存在
  189. delUser(PoolNameOrSocket, UserName) ->
  190. Path = <<"/_api/user/", UserName/binary>>,
  191. agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path).
  192. % 获取用户的属性。
  193. % GET /_api/user/{user}
  194. % 路径参数
  195. % user(必填):用户名
  196. % 获取有关指定用户的数据。您可以获取有关您自己的信息,或者您需要管理服务器访问级别才能执行此REST调用。
  197. % 返回码
  198. % 200:找到用户
  199. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  200. % 403:如果您没有访问服务器访问级别,则返回。
  201. % 404:指定用户名不存在。
  202. getUser(PoolNameOrSocket, UserName) ->
  203. Path = <<"/_api/user/", UserName/binary>>,
  204. agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path).
  205. % 获取用户的属性。
  206. % GET /_api/user/
  207. % 获取有关所有用户的数据。您需要管理服务器访问级别才能执行此REST调用。否则,您只会获得有关您自己的信息。
  208. % 调用成功后将返回至少具有以下属性的JSON对象:
  209. % user:用户名(字符串)。
  210. % active:一个可选标志,用于指定用户是否处于活动状态。
  211. % extra:一个可选的JSON对象,其中包含有关用户的任意额外数据。
  212. % 返回码
  213. % 200:找到的用户
  214. % 401:如果您没有对_system 数据库的访问数据库访问级别,则返回。
  215. % 403:如果您没有访问服务器访问级别,则返回。
  216. getUserList(PoolNameOrSocket) ->
  217. agVstCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/user/">>).