Explorar el Código

ft: 代码调整

master
SisMaker hace 3 años
padre
commit
bfed4f4c9a
Se han modificado 3 ficheros con 289 adiciones y 180 borrados
  1. +146
    -118
      src/agApi/agAqls.erl
  2. +63
    -62
      src/agApi/agDocuments.erl
  3. +80
    -0
      src/agApi/agPregel.erl

+ 146
- 118
src/agApi/agAqls.erl Ver fichero

@ -9,11 +9,11 @@
% AQL Query Cursors:
% https://www.arangodb.com/docs/stable/http/aql-query-cursor.html
% AQL Query:
% https://www.arangodb.com/docs/stable/http/aql-query-cursor.html
% https://www.arangodb.com/docs/stable/http/aql-query.html
% AQL Query Results Cache:
% https://www.arangodb.com/docs/stable/http/aql-query-cursor.html
% https://www.arangodb.com/docs/stable/http/aql-query-cache.html
% AQL User Functions Management:
% https://www.arangodb.com/docs/stable/http/aql-query-cursor.html
% https://www.arangodb.com/docs/stable/http/aql-user-functions.html
% AQL操作
% AQL查询游标的HTTP接口
@ -33,61 +33,72 @@
% 使
% batchSize属性设置的数量id属性中 hasMore属性将设置为true
% HTTP访问游标
%
%
%
% _api/cursor终端还可以用于执行修改查询
% arrayValue具有键的文档数组中使 AQL testdocumentsPUSH()
%
% memoryLimit选项传递给服务器使 AQL
% --query.memory-limit将用于限制查询可以使用的最大内存量0
% HTTP 访
%
% POST /_api/cursor
% JSON对象
% JSON对象是必需的
% query
% count count count count
% batchSize使BATCHSIZE的值 0
% ttl使30
% cache使AQL查询结果缓存的标志false
% memoryLimit使0
% JSON
% JSON
% query :
% countcountcountcount
% batchSize : 使BATCHSIZE的值 0
% ttlbatchSizettl. 使30
% cache : 使 AQL falsetrueon或demand
% memoryLimit使0
% bindVars/
% options/
% FULLCOUNTLIMIT子句 FULLCOUNT{ ... , "extra": { "stats": { "fullCount": 123 } } }FULLCOUNT属性将包含的文档数量的结果应用于在查询的最后顶层限制之前MySQL的SQL_CALC_FOUND_ROWS暗示LIMIT优化使LIMIT子句并且在查询中实际使用LIMIT子句时fullCount属性才可能出现在结果中
% maxPlansAQL查询优化器创建的最大计划数
% maxWarningCount10
% failOnWarningtrue时使false时--query.fail-on-warning用于设置failOnWarning的默认值
% streamtruefalse时arangod实例上API进行访问ttl使使MMFiles上的写锁cachecount并且fullCount不适用于流查询false
% Optimizer
% rules-+all-all禁用所有规则
% profiletrue或1Extra Return属性的子属性配置文件中返回其他查询概要信息2Extra Return属性的子属性stats.nodes中包含每个查询计划节点的执行统计信息extra.plan中返回
% satelliteSyncWaitEnterprise Edition参数允许配置DB-Server将有多长时间使查询中涉及的Satellite集合同步60.0
% maxRuntime0.0
% maxTransactionSizeRocksDB存储引擎的尊敬
% middleCommitSizeRocksDB存储引擎的尊敬
% middleCommitCountRocksDB存储引擎的尊敬
% skipInaccessibleCollectionsAQL查询访访AQL查询访访
% options/
% fullCounttrue并且查询包含LIMIT子句stats fullCount , { ... , "extra": { "stats": { "fullCount": 123 } } }FULLCOUNT属性将包含的文档数量的结果应用于在查询的最后顶层限制之前 MySQL SQL_CALC_FOUND_ROWS暗示 LIMIT 使 LIMIT 使 LIMIT fullCount属性可能仅出现在结果中
% maxPlans AQL
% maxWarningCount 10
% failOnWarningtrue 使false --query.fail-on-warning用于设置failOnWarning的默认值
% stream : truebatchSize结果SORT COLLECT涉及必须在返回部分结果之前处理所有文档
%
% POST请求的主体中以JSON表示形式传递
% HTTP 201
% errorfalse
% codeHTTP状态码
% result
% hasMore
% countcount属性的情况下执行的
% idID
% extraJSON对象 extra.stats子属性将包含已修改的文档数和由于错误而无法修改的文档数ignoreErrors查询选项
% cached return属性将不包含任何stats子属性
%
% RocksDB
%
% 使
% cachecount并且fullCount不支持流媒体的查询
%
% stream选项为falseRocksDB
% optimizer
% rules-+all-all禁用所有规则
% profiletrue或12stats.nodes中包括每个查询计划节点的执行统计信息extra.plan
% SatelliteSyncWait DB-Server SatelliteCollections 60.0
% maxRuntime0.0
% maxTransactionSize RocksDB
% middleCommitSize RocksDB
% middleCommitCount RocksDB
% skipInaccessibleCollectionsAQL 访访 AQL 访访
%
% JSON格式不正确或请求中缺少查询规范HTTP 400
% JSON格式不正确或请求中缺少查询规范使HTTP 400
% JSON对象
% errortrue
% codeHTTP状态码
% errorNum
% POST JSON
% HTTP 201
% errorfalse
% code : HTTP
% result :
% hasMore
% count使count属性集执行查询时可用
% id : id
% extra JSON stats子属性中的查询结果的额外信息 extra.stats子属性将包含修改的文档数和由于错误而无法修改的文档数ignoreErrors查询选项
% cachedstats子属性profile子属性
% JSON HTTP 400
% JSON 使HTTP 400
% JSON
% error : true
% code : HTTP
% errorNum :
% errorMessage
% 使HTTP 400
%
% 404访HTTP 404
% 405使HTTP方法HTTP 405
% HTTP 400
% 404访使HTTP 404
% 405使 HTTP 使HTTP 405
newCursor(PoolNameOrSocket, MapData) ->
BodyStr = eVPack:encodeBin(MapData),
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/cursor">>, ?AgDefQuery, ?AgDefHeader, BodyStr).
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/cursor">>, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
%
% PUT /_api/cursor/{cursor-identifier}
@ -95,7 +106,7 @@ newCursor(PoolNameOrSocket, MapData) ->
% cursor-identifier
%
% id
%
% result
% hasMorefalse
% count
% 使hasMore返回truehasMore为falsehasMore属性的值为 false
@ -105,7 +116,7 @@ newCursor(PoolNameOrSocket, MapData) ->
% 404使HTTP 404
nextCursor(PoolNameOrSocket, CursorId) ->
Path = <<"/_api/cursor/", (agMiscUtils:toBinary(CursorId))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path).
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, Path).
%
% DELETE /_api/cursor/{cursor-identifier}
@ -127,35 +138,33 @@ delCursor(PoolNameOrSocket, CursorId) ->
% ArangoDB有一个HTTP接口AQL查询HTTP接口来检索任何有效AQL查询的执行计划
% AQL查询
% AQL查询并返回有关它的信
% AQL
% POST /_api/explain
% JSON对象
% JSON对象是必需的
% querybindVars中传递options属性中传递查询的其他选项
% JSON
% querybindVars options属性中传递查询的其他选项
% bindVars/
% options
% allPlanstruefalse
% maxNumberOfPlans
% Optimizer
% rules-+all-all禁用所有规则
% options :
% allPlanstruefalse
% maxNumberOfPlans
% optimizer
% rules-+all-all禁用所有规则
%
% AQL查询HTTP POST请求将查询字符串发送到服务器
%
% allPlans选项
% warningsstats属性以及一些优化程序统计信息allPlans设置为false 使allPlans
% JSON对象
% nodes
% estimatedCost
% collections使collections
% rules
% variables使
%
% 200使HTTP 200plan属性中返回最执行计划allPlansallPlans属性中返回一系列计划
% 400HTTP 400JSON对象中的错误详细信息HTTP 400
% 404访HTTP 404
% AQL HTTP POST
%
% allPlans选项
% warningsstats属性以及一些优化器统计信息allPlans设置为falsecacheable 使allPlans true时cacheable属性不存在
% JSON
% nodes
%
% collections : 使
% rules :
% variables使
%
% 200HTTP 200plan属性中返回最执行计划allPlans选项allPlans属性中返回一个计划数组
% 400使HTTP 400 JSON HTTP 400
% 404访使HTTP 404
explainQuery(PoolNameOrSocket, MapData) ->
BodyStr = eVPack:encodeBin(MapData),
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/explain">>, ?AgDefQuery, ?AgDefHeader, BodyStr).
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/explain">>, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
% AQL查询并返回有关它的信息
% POST /_api/query
@ -205,40 +214,66 @@ changeQueryProps(PoolNameOrSocket, MapData) ->
BodyStr = eVPack:encodeBin(MapData),
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, <<"/_api/query/properties">>, ?AgDefQuery, ?AgDefHeader, BodyStr).
% AQL查询的列表
% AQL
% GET /_api/query/current
% AQL查询JSON对象
% idID
% query
%
% alltrue使
% AQL JSON
% id : id
% database :
% user :
% query :
% bindVars使
% started
% runTime
% state
% stream使
%
% 200
% 400HTTP 400
% runTime
% state
% "initializing"
% "parsing"
% "optimizing ast"
% "loading collections"
% "instantiating plan"
% "optimizing plan"
% "executing"
% "finalizing"
% "finished"
% "killed"
% "invalid"
% stream : 使
%
% 200
% 400HTTP 400
% 403使all参数 _system HTTP 403
currentQuery(PoolNameOrSocket) ->
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/query/current">>).
currentQuery(PoolNameOrSocket, QueryPars) ->
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/query/current">>, QueryPars).
% AQL查询的列表
% AQL
% GET /_api/query/slow
% AQL查询maxSlowQueries slowQueryThreshold
% JSON对象
% idID
% query
% bindVars使
% started
% runTime
% state
% stream使
%
% 200
% 400HTTP 400
%
% alltrue使
% AQL maxSlowQueries slowQueryThreshold
% JSON
% id : id
% database :
% user :
% query :
% bindVars使
% started
% runTime :
% state :
% stream : 使
%
% 200
% 400HTTP 400
% 403使all参数 _system HTTP 403
getSlowQuery(PoolNameOrSocket) ->
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/query/slow">>).
getSlowQuery(PoolNameOrSocket, QueryPars) ->
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/query/slow">>, QueryPars).
% AQL查询列表
% DELETE /_api/query/slow
% AQL查询列表
@ -248,6 +283,8 @@ getSlowQuery(PoolNameOrSocket) ->
delSlowQuery(PoolNameOrSocket) ->
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, <<"/_api/query/slow">>).
delSlowQuery(PoolNameOrSocket, QueryPars) ->
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, <<"/_api/query/slow">>, QueryPars).
%
% AQL查询也可以在服务器上终止ArangoDB通过HTTP接口提供了终止功能IDIDkill标志
@ -265,6 +302,10 @@ killQuery(PoolNameOrSocket, QueryId) ->
Path = <<"/_api/query/", (agMiscUtils:toBinary(QueryId))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path).
killQuery(PoolNameOrSocket, QueryId, QueryPars) ->
Path = <<"/_api/query/", (agMiscUtils:toBinary(QueryId))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, QueryPars).
% AQL查询结果缓存的HTTP接口
% AQL查询结果缓存的API方法
@ -323,8 +364,7 @@ getQCacheProps(PoolNameOrSocket) ->
% 200
% 400HTTP 400
changeQCacheProps(PoolNameOrSocket, MapData) ->
BodyStr = eVPack:encodeBin(MapData),
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, <<"/_api/query-cache/properties">>, ?AgDefQuery, ?AgDefHeader, BodyStr).
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, <<"/_api/query-cache/properties">>, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
% AQL用户功能管理固定链接
% AQL用户功能的ArangoDB HTTP接口的简介AQL用户功能是一种使用用户定义的JavaScript代码扩展ArangoDB查询语言AQL
@ -353,8 +393,7 @@ changeQCacheProps(PoolNameOrSocket, MapData) ->
% errorNum
% errorMessage
newUserFun(PoolNameOrSocket, MapData) ->
BodyStr = eVPack:encodeBin(MapData),
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/aqlfunction">>, ?AgDefQuery, ?AgDefHeader, BodyStr).
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/aqlfunction">>, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
% AQL用户功能
% DELETE /_api/aqlfunction/{name}
@ -409,15 +448,4 @@ getUserFuns(PoolNameOrSocket) ->
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/aqlfunction">>).
getUserFuns(PoolNameOrSocket, QueryPars) ->
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/aqlfunction">>, QueryPars).
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, <<"/_api/aqlfunction">>, QueryPars).

+ 63
- 62
src/agApi/agDocuments.erl Ver fichero

@ -101,12 +101,12 @@
% 404
% 412 If-Match412_rev属性中包含找到的文档的当前修订_id和_key
getDoc(PoolNameOrSocket, CollName, Key) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path).
getDoc(PoolNameOrSocket, CollName, Key, Headers) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path, ?AgDefQuery, Headers, ?AgDefBody).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path, ?AgDefQuery, Headers, ?AgDefBody).
%
% HEAD /_api/document/{collection}/{key}
@ -123,12 +123,12 @@ getDoc(PoolNameOrSocket, CollName, Key, Headers) ->
% 404
% 412 If-Match412Etag标头中包含找到的文档的当前版本
getHead(PoolNameOrSocket, CollName, Key) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgHead, Path).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgHead, Path).
getHead(PoolNameOrSocket, CollName, Key, Headers) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgHead, Path, ?AgDefQuery, Headers, ?AgDefBody).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgHead, Path, ?AgDefQuery, Headers, ?AgDefBody).
%
% POST /_api/document/{collection}
@ -167,12 +167,12 @@ getHead(PoolNameOrSocket, CollName, Key, Headers) ->
% 404collection指定的collection未知
% 409409
newDoc(PoolNameOrSocket, CollName, MapData) ->
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
newDoc(PoolNameOrSocket, CollName, MapData, QueryPars) ->
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapData)).
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapData)).
%
% PUT /_api/document/{collection}/{key}
@ -208,16 +208,16 @@ newDoc(PoolNameOrSocket, CollName, MapData, QueryPars) ->
% 404
% 412_rev _id和_key
replaceDoc(PoolNameOrSocket, CollName, Key, MapData) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
replaceDoc(PoolNameOrSocket, CollName, Key, MapData, QueryPars) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapData)).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapData)).
replaceDoc(PoolNameOrSocket, CollName, Key, MapData, QueryPars, Headers) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, QueryPars, Headers, eVPack:encodeBin(MapData)).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, QueryPars, Headers, eVPack:encodeBin(MapData)).
%
% PATCH /_api/document/{collection}/{key}
@ -256,16 +256,16 @@ replaceDoc(PoolNameOrSocket, CollName, Key, MapData, QueryPars, Headers) ->
% 404
% 412_rev _id和_key
updateDoc(PoolNameOrSocket, CollName, Key, MapData) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
updateDoc(PoolNameOrSocket, CollName, Key, MapData, QueryPars) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapData)).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapData)).
updateDoc(PoolNameOrSocket, CollName, Key, MapData, QueryPars, Headers) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, QueryPars, Headers, eVPack:encodeBin(MapData)).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, QueryPars, Headers, eVPack:encodeBin(MapData)).
%
% DELETE /_api/document/{collection}/{key}
@ -287,16 +287,16 @@ updateDoc(PoolNameOrSocket, CollName, Key, MapData, QueryPars, Headers) ->
% 404
% 412-match_rev属性中包含找到的文档的当前修订_id和_key
delDoc(PoolNameOrSocket, CollName, Key) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path).
delDoc(PoolNameOrSocket, CollName, Key, QueryPars) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, QueryPars).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, QueryPars).
delDoc(PoolNameOrSocket, CollName, Key, QueryPars, Headers) ->
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, QueryPars, Headers, ?AgDefBody).
Path = <<"/_api/document/", CollName/binary, "/", (agMiscUtils:toBinary(Key))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, QueryPars, Headers, ?AgDefBody).
%
% ArangoDB支持批量处理文档 使API变体可使客户端分摊整批文档中的单个请求的开销ArangoDB
@ -320,20 +320,21 @@ delDoc(PoolNameOrSocket, CollName, Key, QueryPars, Headers) ->
% 404
% _rev条件不满足 使
getDocs(PoolNameOrSocket, CollName, KeyOrMapDataList) ->
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, #{<<"onlyget">> => <<"true">>}, ?AgDefHeader, eVPack:encodeBin(KeyOrMapDataList)).
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, #{<<"onlyget">> => <<"true">>}, ?AgDefHeader, eVPack:encodeBin(KeyOrMapDataList)).
getDocs(PoolNameOrSocket, CollName, KeyOrMapDataList, QueryPars) ->
LastQueryPars = case QueryPars of
#{<<"onlyget">> := <<"true">>} ->
QueryPars;
#{onlyget := <<"true">>} ->
QueryPars;
_ ->
QueryPars#{<<"onlyget">> => <<"true">>}
end,
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, LastQueryPars, ?AgDefHeader, eVPack:encodeBin(KeyOrMapDataList)).
LastQueryPars =
case QueryPars of
#{<<"onlyget">> := <<"true">>} ->
QueryPars;
#{onlyget := <<"true">>} ->
QueryPars;
_ ->
QueryPars#{<<"onlyget">> => <<"true">>}
end,
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, LastQueryPars, ?AgDefHeader, eVPack:encodeBin(KeyOrMapDataList)).
%
% POST /_api/document/{collection}#multiple
@ -372,12 +373,12 @@ getDocs(PoolNameOrSocket, CollName, KeyOrMapDataList, QueryPars) ->
% 400 JSON
% 404collection指定的collection未知时返回
newDocs(PoolNameOrSocket, CollName, MapDataList) ->
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapDataList)).
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapDataList)).
newDocs(PoolNameOrSocket, CollName, MapDataList, QueryPars) ->
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapDataList)).
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapDataList)).
%
% PUT /_api/document/{collection}
@ -405,12 +406,12 @@ newDocs(PoolNameOrSocket, CollName, MapDataList, QueryPars) ->
% 400JSON表示形式
% 404
replaceDocs(PoolNameOrSocket, CollName, MapDataList) ->
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapDataList)).
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapDataList)).
replaceDocs(PoolNameOrSocket, CollName, MapDataList, QueryPars) ->
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapDataList)).
Path = <<"/_api/document/", CollName/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgPut, Path, QueryPars, ?AgDefHeader, eVPack:encodeBin(MapDataList)).
%
% PATCH /_api/document/{collection}
@ -441,14 +442,14 @@ replaceDocs(PoolNameOrSocket, CollName, MapDataList, QueryPars) ->
% 400JSON表示形式
% 404
updateDocs(PoolNameOrSocket, CollName, MapDataList) ->
Path = <<"/_api/document/", CollName/binary>>,
BodyStr = eVPack:encodeBin(MapDataList),
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, ?AgDefQuery, ?AgDefHeader, BodyStr).
Path = <<"/_api/document/", CollName/binary>>,
BodyStr = eVPack:encodeBin(MapDataList),
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, ?AgDefQuery, ?AgDefHeader, BodyStr).
updateDocs(PoolNameOrSocket, CollName, MapDataList, QueryPars) ->
Path = <<"/_api/document/", CollName/binary>>,
BodyStr = eVPack:encodeBin(MapDataList),
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, QueryPars, ?AgDefHeader, BodyStr).
Path = <<"/_api/document/", CollName/binary>>,
BodyStr = eVPack:encodeBin(MapDataList),
agVstCli:callAgency(PoolNameOrSocket, ?AgPatch, Path, QueryPars, ?AgDefHeader, BodyStr).
%
% DELETE /_api/document/{collection}
@ -470,11 +471,11 @@ updateDocs(PoolNameOrSocket, CollName, MapDataList, QueryPars) ->
% 202waitForSync为false
% 404
delDocs(PoolNameOrSocket, CollName, KeyOrMapDataList) ->
Path = <<"/_api/document/", CollName/binary>>,
BodyStr = eVPack:encodeBin(KeyOrMapDataList),
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, ?AgDefQuery, ?AgDefHeader, BodyStr).
Path = <<"/_api/document/", CollName/binary>>,
BodyStr = eVPack:encodeBin(KeyOrMapDataList),
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, ?AgDefQuery, ?AgDefHeader, BodyStr).
delDocs(PoolNameOrSocket, CollName, KeyOrMapDataList, QueryPars) ->
Path = <<"/_api/document/", CollName/binary>>,
BodyStr = eVPack:encodeBin(KeyOrMapDataList),
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, QueryPars, ?AgDefHeader, BodyStr).
Path = <<"/_api/document/", CollName/binary>>,
BodyStr = eVPack:encodeBin(KeyOrMapDataList),
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path, QueryPars, ?AgDefHeader, BodyStr).

+ 80
- 0
src/agApi/agPregel.erl Ver fichero

@ -0,0 +1,80 @@
-module(agPregel).
-include("eArango.hrl").
-compile(inline).
-compile({inline_size, 128}).
-compile([export_all, nowarn_export_all]).
%% doc_address:https://www.arangodb.com/docs/stable/http/pregel.html
% JSON
% algorithm
% "pagerank" -
% "sssp" -
% "connectedcomponents" -
% "wcc" -
% "scc" -
% "hits" -
% "effectivecloseness" -
% "linerank" - LineRank
% "labelpropagation" -
% "slpa" - -
% graphName : this vertexCollectionsand edgeCollections都是必需的 Pregel 使
% vertexCollections Pregel 使
% edgeCollections Pregel 使
% params
%
% store Pregel
% parallelism Pregel 线parallelism使
% useMemoryMaps使使
% shardKeyAttribute"vertex"
% SmartGraphPregel -
%
% 200 Pregel HTTP 200id以查询状态或取消执行
% 400 Pregel Pregel HTTP 400
% 403访 Pregel HTTP 403
% 404graphNamevertexCollectionsedgeCollections HTTP 404
run(PoolNameOrSocket, MapData) ->
agVstCli:callAgency(PoolNameOrSocket, ?AgPost, <<"/_api/control_pregel">>, ?AgDefQuery, ?AgDefHeader, eVPack:encodeBin(MapData)).
% Pregel
% GET /_api/control_pregel/{id}
%
% idPregel
%
% HTTP 200 ID HTTP 200
% state :
% "running":
% "storing": store true
% "done": 3.7.1 pregel日志主题的info
% "canceled"
% "fatal error":
% "in error"使访 DB-Server "canceled"
% "recovering"(使)running如果恢复成功将切换回
% gss
% totalRuntime
% startupTime 0
% 0
% storageTime : 0
% Pregel
% vertexCount
% edgeCount
% 404Pregel作业或执行编号无效HTTP 404
status(PoolNameOrSocket, PregelId) ->
Path = <<"/_api/control_pregel/", (agMiscUtils:toBinary(PregelId))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgGet, Path).
% Pregel
% DELETE /_api/control_pregel/{id}
%
% idPregel
% 使
% "storing""done"3.7.1 线
%
% 200 ID HTTP 200
% 404Pregel作业或执行编号无效HTTP 404
cancel(PoolNameOrSocket, PregelId) ->
Path = <<"/_api/control_pregel/", (agMiscUtils:toBinary(PregelId))/binary>>,
agVstCli:callAgency(PoolNameOrSocket, ?AgDelete, Path).

Cargando…
Cancelar
Guardar