@ultipa-graph/ultipa-node-sdk
Version:
NodeJS SDK for ultipa-server 4.0
243 lines • 10.1 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseExtra = void 0;
const connection_base_1 = require("./connection.base");
const types_1 = require("../../types");
const utils_1 = require("../../utils");
const ultipa_pb_1 = require("../../proto/ultipa_pb");
const { CommandList, SchemaStringWithDefault } = utils_1.UQLMAKER;
class BaseExtra extends connection_base_1.ConnectionBase {
/**
* 查看节点状态
*/
stats(requestConfig) {
var _a;
return __awaiter(this, void 0, void 0, function* () {
let command = CommandList.stats;
let uqlMaker = new utils_1.UQLMAKER(command, requestConfig);
let res = yield this.uqlSingle(uqlMaker);
let tableKV = (_a = res.uqlReply.singleDataTables()) === null || _a === void 0 ? void 0 : _a.toKV();
return Object.assign(Object.assign({}, res.responseWithoutData), { data: (tableKV === null || tableKV === void 0 ? void 0 : tableKV.length) > 0 ? tableKV[0] : {} });
});
}
/**
* 查看正在运行的uql
*/
top(requestConfig) {
return __awaiter(this, void 0, void 0, function* () {
let command = CommandList.top;
let uqlMaker = new utils_1.UQLMAKER(command, requestConfig);
return connection_base_1.ConnectionBase.UqlListSimple(this, uqlMaker);
});
}
/**
* 终止运行时 UQL
*/
kill(processId, all, requestConfig) {
return __awaiter(this, void 0, void 0, function* () {
let req = {
id: processId,
all
};
let command = CommandList.kill;
let params = [];
if (req.all) {
params = ["*"];
}
else if (req.id) {
params = [req.id];
}
let uqlMaker = new utils_1.UQLMAKER(command, requestConfig, params);
return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker);
});
}
/**
* 下载文件,一般为算法生成的文件
*
* @example
* ```js
* let res = await client.download({
path: "file_path",
}, {
stream: {
onData: (data) => {
// deal data
},
onEnd: () => {
// end
}
}
})
* ```
*/
download(params, cb, commonReq) {
return __awaiter(this, void 0, void 0, function* () {
let req = new ultipa_pb_1.DownloadFileRequestV2();
req.setFileName(params.fileName);
req.setTaskId(params.taskId + "");
let clientInfo = yield this.getClientInfo({
graphSetName: commonReq === null || commonReq === void 0 ? void 0 : commonReq.graphSetName,
clusterId: commonReq === null || commonReq === void 0 ? void 0 : commonReq.clusterId,
useMaster: commonReq === null || commonReq === void 0 ? void 0 : commonReq.useMaster,
timeZone: commonReq === null || commonReq === void 0 ? void 0 : commonReq.timeZone,
timeZoneOffset: commonReq === null || commonReq === void 0 ? void 0 : commonReq.timeZoneOffset,
});
let stream = clientInfo.client.controlsClient.downloadFileV2(req, clientInfo.metadata);
utils_1.streamHelper.commonDeal(stream, commonReq === null || commonReq === void 0 ? void 0 : commonReq.stream, (chunkData) => {
let status = utils_1.FormatType.status(chunkData.getStatus());
if (status.code != types_1.ULTIPA.Code.SUCCESS) {
let err = new Error(status.message);
err.code = status.code;
throw err;
}
let data = Buffer.from(chunkData.getChunk());
cb(data);
return {
data,
size: data.length,
totalSize: chunkData.getTotalSize()
};
});
return stream;
});
}
/**
* 下载算法文件
* @param params
* @param commonReq
*/
downloadAlgoResultFile(fileName, taskId, cb, requestConfig) {
return __awaiter(this, void 0, void 0, function* () {
let params = {
fileName,
taskId
};
return this.download(params, cb, requestConfig);
});
}
/**
* 导出点或边的数据
*
* @example
* ```js
* let conn = ...
* let res = await client.export({
dbType: ULTIPA.DBType.DBEDGE,
limit: 100,
selectPropertiesName: ["hash"],
schemaName: 'transactions'
}, async(n,e) => {}, {
stream: {
onData: (data) => {
// deal data
},
onEnd: () => {
// end
},
onError: (err) => {
reject(err)
}
}
})
* ```
*/
export(request, cb, requestConfig) {
return __awaiter(this, void 0, void 0, function* () {
let req = new ultipa_pb_1.ExportRequest();
let isTypeNode = types_1.ULTIPA.DBType.DBNODE == request.dbType;
req.setDbType(isTypeNode ? ultipa_pb_1.DBType.DBNODE : ultipa_pb_1.DBType.DBEDGE);
req.setLimit(request.limit);
req.setSelectPropertiesList(request.selectPropertiesName);
req.setSchema(request.schemaName);
let clientInfo = yield this.getClientInfo({
graphSetName: requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.graphSetName,
clusterId: requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.clusterId,
useMaster: requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.useMaster,
timeZone: requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.timeZone,
timeZoneOffset: requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.timeZoneOffset,
});
let nodes = [], edges = [];
let stream = clientInfo.client.controlsClient.export(req, clientInfo.metadata);
utils_1.streamHelper.commonDeal(stream, requestConfig === null || requestConfig === void 0 ? void 0 : requestConfig.stream, (chunkData) => {
let status = utils_1.FormatType.status(chunkData.getStatus());
if (status.code != types_1.ULTIPA.Code.SUCCESS) {
let err = new Error(status.message);
err.code = status.code;
throw err;
}
if (isTypeNode) {
console.log("nodes");
let n = chunkData.getNodeTable();
nodes = utils_1.FormatType.nodeTable(n, this.getTimeZoneType(requestConfig));
cb(nodes, edges);
return nodes;
}
else {
console.log("edges");
let e = chunkData.getEdgeTable();
edges = utils_1.FormatType.edgeTable(e, this.getTimeZoneType(requestConfig));
cb(nodes, edges);
return edges;
}
});
return stream;
});
}
/**
* 清空所有数据
*
* @example
* ```js
* let conn = ...
* // 清除所有数据
* let res = await client.truncate({name: "graph_set_name"})
* // 清除点数据
* let res = await client.truncate({name: "graph_set_name", schema:'node_name', dbType: ULTIPA.DBType.DBNODE})
* // 清除边数据
* let res = await client.truncate({name: "graph_set_name", schema:'edge_name', dbType: ULTIPA.DBType.DBEDGE})
* ```
*/
truncate(request, requestConfig) {
return __awaiter(this, void 0, void 0, function* () {
let command = CommandList.truncate;
let uqlMaker = new utils_1.UQLMAKER(command, requestConfig, request.graphName);
let scope = "*";
if (request.schema) {
scope = SchemaStringWithDefault(request.schema);
}
if (request.dbType === types_1.ULTIPA.DBType.DBNODE) {
uqlMaker.addParam("nodes", scope);
}
else if (request.dbType === types_1.ULTIPA.DBType.DBEDGE) {
uqlMaker.addParam("edges", scope);
}
else {
if (request.schema) {
throw new Error("To truncate schema, DbType is required in the parameters.");
}
}
return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker);
});
}
/**
* 碎片整理
*/
compact(graphName, requestConfig) {
return __awaiter(this, void 0, void 0, function* () {
let command = CommandList.compact;
let uqlMaker = new utils_1.UQLMAKER(command, requestConfig, graphName);
return connection_base_1.ConnectionBase.UqlUpdateSimple(this, uqlMaker);
});
}
}
exports.BaseExtra = BaseExtra;
//# sourceMappingURL=base.extra.js.map