UNPKG

@ultipa-graph/ultipa-node-sdk

Version:

NodeJS SDK for ultipa-server 4.0

243 lines 10.1 kB
"use strict"; 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