@ultipa-graph/ultipa-node-sdk
Version:
NodeJS SDK for ultipa-server 4.0
704 lines • 27.7 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ULTIPA = void 0;
const utils_1 = require("../utils");
const ULTIPA_RPC = __importStar(require("../proto/ultipa_pb"));
let { PropertyType: RRC_PropertyType, ErrorCode, DBType: RPC_DBType, TASK_STATUS, FollowerRole: RCP_FollowerRole, ResultType: RPC_ResultType, InsertType: RPC_InsertType, PlanNode: RPC_PlanNode } = ULTIPA_RPC;
const _1 = require(".");
var ULTIPA;
(function (ULTIPA) {
/**
* Raft集群的类型
*/
let ClientType;
(function (ClientType) {
ClientType[ClientType["Default"] = 0] = "Default";
ClientType[ClientType["Algo"] = 1] = "Algo";
ClientType[ClientType["Update"] = 2] = "Update";
ClientType[ClientType["Leader"] = 3] = "Leader";
})(ClientType = ULTIPA.ClientType || (ULTIPA.ClientType = {}));
/**
* 连接的配置
*/
class UltipaConfig {
}
ULTIPA.UltipaConfig = UltipaConfig;
/**
* 属性类型
*/
let PropertyType;
(function (PropertyType) {
PropertyType[PropertyType["PROPERTY_UNSET"] = RRC_PropertyType.UNSET] = "PROPERTY_UNSET";
PropertyType[PropertyType["PROPERTY_INT32"] = RRC_PropertyType.INT32] = "PROPERTY_INT32";
PropertyType[PropertyType["PROPERTY_STRING"] = RRC_PropertyType.STRING] = "PROPERTY_STRING";
PropertyType[PropertyType["PROPERTY_FLOAT"] = RRC_PropertyType.FLOAT] = "PROPERTY_FLOAT";
PropertyType[PropertyType["PROPERTY_DOUBLE"] = RRC_PropertyType.DOUBLE] = "PROPERTY_DOUBLE";
PropertyType[PropertyType["PROPERTY_UINT32"] = RRC_PropertyType.UINT32] = "PROPERTY_UINT32";
PropertyType[PropertyType["PROPERTY_INT64"] = RRC_PropertyType.INT64] = "PROPERTY_INT64";
PropertyType[PropertyType["PROPERTY_UINT64"] = RRC_PropertyType.UINT64] = "PROPERTY_UINT64";
PropertyType[PropertyType["PROPERTY_DATETIME"] = RRC_PropertyType.DATETIME] = "PROPERTY_DATETIME";
PropertyType[PropertyType["PROPERTY_TIMESTAMP"] = RRC_PropertyType.TIMESTAMP] = "PROPERTY_TIMESTAMP";
PropertyType[PropertyType["PROPERTY_TEXT"] = RRC_PropertyType.TEXT] = "PROPERTY_TEXT";
PropertyType[PropertyType["PROPERTY_BLOB"] = RRC_PropertyType.BLOB] = "PROPERTY_BLOB";
PropertyType[PropertyType["PROPERTY_POINT"] = RRC_PropertyType.POINT] = "PROPERTY_POINT";
PropertyType[PropertyType["PROPERTY_DECIMAL"] = RRC_PropertyType.DECIMAL] = "PROPERTY_DECIMAL";
PropertyType[PropertyType["PROPERTY_LIST"] = RRC_PropertyType.LIST] = "PROPERTY_LIST";
PropertyType[PropertyType["PROPERTY_SET"] = RRC_PropertyType.SET] = "PROPERTY_SET";
PropertyType[PropertyType["PROPERTY_MAP"] = RRC_PropertyType.MAP] = "PROPERTY_MAP";
PropertyType[PropertyType["PROPERTY_NULL"] = RRC_PropertyType.NULL_] = "PROPERTY_NULL";
PropertyType[PropertyType["unset"] = RRC_PropertyType.UNSET] = "unset";
PropertyType[PropertyType["int32"] = RRC_PropertyType.INT32] = "int32";
PropertyType[PropertyType["string"] = RRC_PropertyType.STRING] = "string";
PropertyType[PropertyType["float"] = RRC_PropertyType.FLOAT] = "float";
PropertyType[PropertyType["double"] = RRC_PropertyType.DOUBLE] = "double";
PropertyType[PropertyType["uint32"] = RRC_PropertyType.UINT32] = "uint32";
PropertyType[PropertyType["int64"] = RRC_PropertyType.INT64] = "int64";
PropertyType[PropertyType["uint64"] = RRC_PropertyType.UINT64] = "uint64";
PropertyType[PropertyType["datetime"] = RRC_PropertyType.DATETIME] = "datetime";
PropertyType[PropertyType["timestamp"] = RRC_PropertyType.TIMESTAMP] = "timestamp";
PropertyType[PropertyType["text"] = RRC_PropertyType.TEXT] = "text";
PropertyType[PropertyType["blob"] = RRC_PropertyType.BLOB] = "blob";
PropertyType[PropertyType["point"] = RRC_PropertyType.POINT] = "point";
PropertyType[PropertyType["decimal"] = RRC_PropertyType.DECIMAL] = "decimal";
PropertyType[PropertyType["list"] = RRC_PropertyType.LIST] = "list";
PropertyType[PropertyType["set"] = RRC_PropertyType.SET] = "set";
PropertyType[PropertyType["map"] = RRC_PropertyType.MAP] = "map";
PropertyType[PropertyType["null"] = RRC_PropertyType.NULL_] = "null";
})(PropertyType = ULTIPA.PropertyType || (ULTIPA.PropertyType = {}));
/**
* 返回状态码
*/
let Code;
(function (Code) {
Code[Code["SUCCESS"] = ErrorCode.SUCCESS] = "SUCCESS";
Code[Code["FAILED"] = ErrorCode.FAILED] = "FAILED";
Code[Code["PARAM_ERROR"] = ErrorCode.PARAM_ERROR] = "PARAM_ERROR";
Code[Code["BASE_DB_ERROR"] = ErrorCode.BASE_DB_ERROR] = "BASE_DB_ERROR";
Code[Code["ENGINE_ERROR"] = ErrorCode.ENGINE_ERROR] = "ENGINE_ERROR";
Code[Code["SYSTEM_ERROR"] = ErrorCode.SYSTEM_ERROR] = "SYSTEM_ERROR";
Code[Code["RAFT_REDIRECT"] = ErrorCode.RAFT_REDIRECT] = "RAFT_REDIRECT";
Code[Code["RAFT_LEADER_NOT_YET_ELECTED"] = ErrorCode.RAFT_LEADER_NOT_YET_ELECTED] = "RAFT_LEADER_NOT_YET_ELECTED";
Code[Code["RAFT_LOG_ERROR"] = ErrorCode.RAFT_LOG_ERROR] = "RAFT_LOG_ERROR";
Code[Code["UQL_ERROR"] = ErrorCode.UQL_ERROR] = "UQL_ERROR";
Code[Code["NOT_RAFT_MODE"] = ErrorCode.NOT_RAFT_MODE] = "NOT_RAFT_MODE";
Code[Code["RAFT_NO_AVAILABLE_FOLLOWERS"] = ErrorCode.RAFT_NO_AVAILABLE_FOLLOWERS] = "RAFT_NO_AVAILABLE_FOLLOWERS";
Code[Code["RAFT_NO_AVAILABLE_ALGO_SERVERS"] = ErrorCode.RAFT_NO_AVAILABLE_ALGO_SERVERS] = "RAFT_NO_AVAILABLE_ALGO_SERVERS";
Code[Code["PERMISSION_DENIED"] = ErrorCode.PERMISSION_DENIED] = "PERMISSION_DENIED";
Code[Code["UNKNOWN_ERROR"] = 1000] = "UNKNOWN_ERROR";
})(Code = ULTIPA.Code || (ULTIPA.Code = {}));
let ResultType;
(function (ResultType) {
ResultType[ResultType["RESULT_TYPE_UNSET"] = RPC_ResultType.RESULT_TYPE_UNSET] = "RESULT_TYPE_UNSET";
ResultType[ResultType["RESULT_TYPE_PATH"] = RPC_ResultType.RESULT_TYPE_PATH] = "RESULT_TYPE_PATH";
ResultType[ResultType["RESULT_TYPE_NODE"] = RPC_ResultType.RESULT_TYPE_NODE] = "RESULT_TYPE_NODE";
ResultType[ResultType["RESULT_TYPE_EDGE"] = RPC_ResultType.RESULT_TYPE_EDGE] = "RESULT_TYPE_EDGE";
ResultType[ResultType["RESULT_TYPE_ATTR"] = RPC_ResultType.RESULT_TYPE_ATTR] = "RESULT_TYPE_ATTR";
ResultType[ResultType["RESULT_TYPE_TABLE"] = RPC_ResultType.RESULT_TYPE_TABLE] = "RESULT_TYPE_TABLE";
ResultType[ResultType["RESULT_TYPE_GRAPH"] = RPC_ResultType.RESULT_TYPE_GRAPH] = "RESULT_TYPE_GRAPH";
})(ResultType = ULTIPA.ResultType || (ULTIPA.ResultType = {}));
let AuthenticateType;
(function (AuthenticateType) {
AuthenticateType[AuthenticateType["PERMISSION_TYPE_UQL"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_UQL] = "PERMISSION_TYPE_UQL";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_INSERTNODES"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_INSERTNODES] = "PERMISSION_TYPE_INSERTNODES";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_INSERTEDGES"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_INSERTEDGES] = "PERMISSION_TYPE_INSERTEDGES";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_EXPORT"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_EXPORT] = "PERMISSION_TYPE_EXPORT";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_DOWNLOADFILE"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_DOWNLOADFILE] = "PERMISSION_TYPE_DOWNLOADFILE";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_INSTALLALGO"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_INSTALLALGO] = "PERMISSION_TYPE_INSTALLALGO";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_UNINSTALLALGO"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_UNINSTALLALGO] = "PERMISSION_TYPE_UNINSTALLALGO";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_UPLOADER"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_UPLOADER] = "PERMISSION_TYPE_UPLOADER";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_CREATEGRAPHBYUPLOADER"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_CREATEGRAPHBYUPLOADER] = "PERMISSION_TYPE_CREATEGRAPHBYUPLOADER";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_INSTALLEXTA"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_INSTALLEXTA] = "PERMISSION_TYPE_INSTALLEXTA";
AuthenticateType[AuthenticateType["PERMISSION_TYPE_UNINSTALLEXTA"] = ULTIPA_RPC.AuthenticateType.PERMISSION_TYPE_UNINSTALLEXTA] = "PERMISSION_TYPE_UNINSTALLEXTA";
})(AuthenticateType = ULTIPA.AuthenticateType || (ULTIPA.AuthenticateType = {}));
let InsertType;
(function (InsertType) {
InsertType[InsertType["INSERT_TYPE_NORMAL"] = RPC_InsertType.NORMAL] = "INSERT_TYPE_NORMAL";
InsertType[InsertType["INSERT_TYPE_OVERWRITE"] = RPC_InsertType.OVERWRITE] = "INSERT_TYPE_OVERWRITE";
InsertType[InsertType["INSERT_TYPE_UPSERT"] = RPC_InsertType.UPSERT] = "INSERT_TYPE_UPSERT";
})(InsertType = ULTIPA.InsertType || (ULTIPA.InsertType = {}));
/**
* 数据库类型
*/
let DBType;
(function (DBType) {
/**
* 点
*/
DBType[DBType["DBNODE"] = RPC_DBType.DBNODE] = "DBNODE";
/**
* 边
*/
DBType[DBType["DBEDGE"] = RPC_DBType.DBEDGE] = "DBEDGE";
})(DBType = ULTIPA.DBType || (ULTIPA.DBType = {}));
/**
* Raft从节点的规则
*/
let RaftFollowerRole;
(function (RaftFollowerRole) {
RaftFollowerRole[RaftFollowerRole["ROLE_UNSET"] = RCP_FollowerRole.ROLE_UNSET] = "ROLE_UNSET";
RaftFollowerRole[RaftFollowerRole["ROLE_READABLE"] = RCP_FollowerRole.ROLE_READABLE] = "ROLE_READABLE";
RaftFollowerRole[RaftFollowerRole["ROLE_ALGO_EXECUTABLE"] = RCP_FollowerRole.ROLE_ALGO_EXECUTABLE] = "ROLE_ALGO_EXECUTABLE";
})(RaftFollowerRole = ULTIPA.RaftFollowerRole || (ULTIPA.RaftFollowerRole = {}));
/**
* 算法任务的状态
*/
let Task_Status;
(function (Task_Status) {
Task_Status[Task_Status["pending"] = TASK_STATUS.TASK_PENDING] = "pending";
Task_Status[Task_Status["computing"] = TASK_STATUS.TASK_COMPUTING] = "computing";
Task_Status[Task_Status["writing"] = TASK_STATUS.TASK_WRITING] = "writing";
Task_Status[Task_Status["done"] = TASK_STATUS.TASK_DONE] = "done";
Task_Status[Task_Status["failed"] = TASK_STATUS.TASK_FAILED] = "failed";
Task_Status[Task_Status["stopped"] = TASK_STATUS.TASK_STOPPED] = "stopped";
})(Task_Status = ULTIPA.Task_Status || (ULTIPA.Task_Status = {}));
// export type ArrayAlias = {
// alias: string,
// elements: any[][],
// }
// export type ArrayAliases = ArrayAlias[]
/**
* 点的结构
*/
class Node {
getID() {
return this.id;
}
getUUID() {
return this.uuid;
}
getSchema() {
return this.schema;
}
getValues() {
return this.values;
}
get(prop_name) {
var _a;
return (_a = this.values) === null || _a === void 0 ? void 0 : _a[prop_name];
}
set(prop_name, value) {
if (!this.values) {
this.values = {};
}
if (this.values) {
this.values[prop_name] = value;
}
}
}
ULTIPA.Node = Node;
function NewNodeRow(jsonObj) {
let v = new Node();
Object.assign(v, jsonObj);
return v;
}
function NewNodeTable(jsonArray) {
let v = [];
jsonArray === null || jsonArray === void 0 ? void 0 : jsonArray.forEach(o => {
v.push(NewNodeRow(o));
});
return v;
}
function NewNodeAlias(jsonObj) {
let v = {};
Object.assign(v, jsonObj);
v.nodes = NewNodeTable(v.nodes);
return v;
}
/**
* 边的结构
*/
class Edge {
getUUID() {
return this.uuid;
}
getSchema() {
return this.schema;
}
getFrom() {
return this.from;
}
getFromUUID() {
return this.from_uuid;
}
getTo() {
return this.to;
}
getToUUID() {
return this.to_uuid;
}
getValues() {
return this.values;
}
get(prop_name) {
var _a;
return (_a = this.values) === null || _a === void 0 ? void 0 : _a[prop_name];
}
set(prop_name, value) {
if (!this.values) {
this.values = {};
}
if (this.values) {
this.values[prop_name] = value;
}
}
}
ULTIPA.Edge = Edge;
function NewEdgeRow(jsonObj) {
let v = new Edge();
Object.assign(v, jsonObj);
return v;
}
function NewEdgeTable(jsonArray) {
let v = [];
jsonArray === null || jsonArray === void 0 ? void 0 : jsonArray.forEach(o => {
v.push(NewEdgeRow(o));
});
return v;
}
function NewEdgeAlias(jsonObj) {
let v = {};
Object.assign(v, jsonObj);
v.edges = NewEdgeTable(v.edges);
return v;
}
function NewGraphAlias(jsonObj) {
let v = {};
Object.assign(v, jsonObj);
v.graph = NewGraph(v.graph);
return v;
}
function NewGraph(jsonObj) {
let v = new Graph();
Object.assign(v, jsonObj);
if (v.nodes) {
v.nodes = NewNodeTable(v.nodes);
}
if (v.edges) {
v.edges = NewEdgeTable(v.edges);
}
return v;
}
class Graph {
getNodes() {
return this.nodes;
}
getEdges() {
return this.edges;
}
}
ULTIPA.Graph = Graph;
/**
* 路径的结构
*/
class Path extends Graph {
getLength() {
return this.length;
}
}
ULTIPA.Path = Path;
function NewPaths(jsonArray) {
let v = [];
jsonArray === null || jsonArray === void 0 ? void 0 : jsonArray.forEach(obj => {
v.push(NewPath(obj));
});
return v;
}
function NewPath(jsonObj) {
let v = new Path();
Object.assign(v, jsonObj);
if (v.nodes) {
v.nodes = NewNodeTable(v.nodes);
}
if (v.edges) {
v.edges = NewEdgeTable(v.edges);
}
return v;
}
function NewPathAlias(jsonObj) {
let v = {};
Object.assign(v, jsonObj);
if (v.paths) {
v.paths = NewPaths(v.paths);
}
return v;
}
/**
* 表格的结构
*/
class Table {
toKV() {
return utils_1.FormatResponse.tableToArray(this);
}
getHeaders() {
return this.headers;
}
getRows() {
return this.rows;
}
}
ULTIPA.Table = Table;
;
function NewTable(jsonObj) {
let v = new Table();
Object.assign(v, jsonObj);
return v;
}
function NewUQLReplyBase(jsonObj) {
let v = {};
Object.assign(v, jsonObj);
if (v.paths) {
v.paths = v.paths.map(obj => {
return NewPathAlias(obj);
});
}
if (v.nodes) {
v.nodes = v.nodes.map(obj => {
return NewNodeAlias(obj);
});
}
if (v.edges) {
v.edges = v.edges.map(obj => {
return NewEdgeAlias(obj);
});
}
if (v.tables) {
v.tables = v.tables.map(obj => {
return NewTable(obj);
});
}
if (v.graphs) {
v.graphs = v.graphs.map(obj => {
return NewGraphAlias(obj);
});
}
return v;
}
function getExplainPlansTreeTopNode(plans) {
let top = null;
let nodes = [];
plans === null || plans === void 0 ? void 0 : plans.plan_nodes.forEach((node, i) => {
node = Object.assign({}, node);
if (i == 0) {
top = node;
}
let lastNode = nodes[nodes.length - 1];
if (node.children_num > 0) {
node.children = [];
nodes.push(node);
}
if (lastNode) {
lastNode.children.push(node);
if (lastNode.children.length == lastNode.children_num) {
nodes = nodes.filter(n => n != lastNode);
}
}
});
return top;
}
ULTIPA.getExplainPlansTreeTopNode = getExplainPlansTreeTopNode;
class UQLReply {
constructor(uqlReplyBase) {
this.datas = [];
this.aliasMap = {};
if (uqlReplyBase) {
uqlReplyBase.paths.forEach(o => {
this.aliasMap[o.alias] = new DataItem(o.alias, o.paths, ResultType.RESULT_TYPE_PATH);
});
uqlReplyBase.nodes.forEach(o => {
this.aliasMap[o.alias] = new DataItem(o.alias, o.nodes, ResultType.RESULT_TYPE_NODE);
});
uqlReplyBase.edges.forEach(o => {
this.aliasMap[o.alias] = new DataItem(o.alias, o.edges, ResultType.RESULT_TYPE_EDGE);
});
uqlReplyBase.attrs.forEach(o => {
this.aliasMap[o.alias] = new DataItem(o.alias, o, ResultType.RESULT_TYPE_ATTR);
});
uqlReplyBase.tables.forEach(o => {
this.aliasMap[o.alias] = new DataItem(o.alias, o, ResultType.RESULT_TYPE_TABLE);
});
uqlReplyBase.graphs.forEach(o => {
this.aliasMap[o.alias] = new DataItem(o.alias, o.graph, RPC_ResultType.RESULT_TYPE_GRAPH);
});
uqlReplyBase.results.forEach(o => {
if (!this.aliasMap[o.alias]) {
this.aliasMap[o.alias] = new DataItem(o.alias, this.defaultValueFromType(o.result_type, o.alias), o.result_type);
}
this.datas.push(this.aliasMap[o.alias]);
});
this.statistics = uqlReplyBase.statistics;
this.explainPlansTreeTopNode = getExplainPlansTreeTopNode(uqlReplyBase.explainPlans);
}
}
defaultValueFromType(type, alias) {
switch (type) {
case ResultType.RESULT_TYPE_NODE:
case ResultType.RESULT_TYPE_EDGE:
case ResultType.RESULT_TYPE_PATH:
return [];
case ResultType.RESULT_TYPE_GRAPH:
let g = new Graph();
g.nodes = [];
g.edges = [];
return g;
case ResultType.RESULT_TYPE_ATTR:
let r = {
alias: alias,
attr: null,
};
return r;
case ResultType.RESULT_TYPE_TABLE:
let t = new ULTIPA.Table();
t.alias = alias;
t.headers = [];
t.rows = [];
return t;
default:
break;
}
}
___aliasMapFromDatas() {
this.aliasMap = {};
this.datas.forEach(o => {
this.aliasMap[o.alias] = o;
});
}
isEmpty() {
return this.datas.length == 0;
}
singleDataNodes() {
var _a;
return ((_a = this.datas[0]) === null || _a === void 0 ? void 0 : _a.asNodes()) || this.defaultValueFromType(ResultType.RESULT_TYPE_NODE, "unknown");
}
singleDataEdges() {
var _a;
return ((_a = this.datas[0]) === null || _a === void 0 ? void 0 : _a.asEdges()) || this.defaultValueFromType(ResultType.RESULT_TYPE_EDGE, "unknown");
}
singleDataPaths() {
var _a;
return ((_a = this.datas[0]) === null || _a === void 0 ? void 0 : _a.asPaths()) || this.defaultValueFromType(ResultType.RESULT_TYPE_PATH, "unknown");
}
getTables() {
let tables = this.datas.filter(o => {
return o.type == ResultType.RESULT_TYPE_TABLE;
}).map(o => o.data);
return tables;
}
singleDataTables() {
var _a;
return ((_a = this.datas[0]) === null || _a === void 0 ? void 0 : _a.asTable()) || this.defaultValueFromType(ResultType.RESULT_TYPE_TABLE, "unknown");
}
singleDataGraph() {
var _a;
return ((_a = this.datas[0]) === null || _a === void 0 ? void 0 : _a.asGraph()) || this.defaultValueFromType(ResultType.RESULT_TYPE_GRAPH, "unknown");
}
singleDataAttrs() {
var _a;
return ((_a = this.datas[0]) === null || _a === void 0 ? void 0 : _a.asAttrs()) || this.defaultValueFromType(ResultType.RESULT_TYPE_ATTR, "unknown");
}
;
get(index) {
return this.datas[index];
}
alias(alias) {
let rs = this.aliasMap[alias];
if (!rs) {
throw new Error(`Not Found Alias [${alias}]`);
}
return rs;
}
toJSON() {
return {
statistics: this.statistics,
explainPlansTreeTopNode: this.explainPlansTreeTopNode,
datas: this.datas,
};
}
}
ULTIPA.UQLReply = UQLReply;
function NewUQLReply(jsonObj) {
let v = new UQLReply(null);
Object.assign(v, jsonObj);
if (v.datas) {
v.datas = v.datas.map(obj => NewDataItem(obj));
}
v.___aliasMapFromDatas();
return v;
}
class DataItem {
constructor(alias, data, type) {
this.data = data;
this.alias = alias;
this.type = type;
this.type_desc = ResultType[type];
}
_asTypeError(t) {
if (this.type != t) {
throw new Error(`DataItem ${this.alias} is not type ${ResultType[t]}, but ${this.type_desc}`);
}
}
asEdges() {
this._asTypeError(ResultType.RESULT_TYPE_EDGE);
return this.data;
}
asPaths() {
this._asTypeError(ResultType.RESULT_TYPE_PATH);
return this.data;
}
asNodes() {
this._asTypeError(ResultType.RESULT_TYPE_NODE);
return this.data;
}
asTable() {
this._asTypeError(ResultType.RESULT_TYPE_TABLE);
return this.data;
}
asGraph() {
this._asTypeError(ResultType.RESULT_TYPE_GRAPH);
return this.data;
}
asAttrs() {
this._asTypeError(ResultType.RESULT_TYPE_ATTR);
return this.data;
}
asNodeList() {
return this.asAttrs();
}
asEdgeList() {
return this.asAttrs();
}
asPathList() {
return this.asAttrs();
}
asGraphInfos() {
return this.asTableWithT();
}
asProperties() {
return this.asTableWithT();
}
asSchemas() {
return this.asTableWithT();
}
asAlgos() {
var _a;
let algos = [];
(_a = this.asTableWithT()) === null || _a === void 0 ? void 0 : _a.forEach(data => {
algos.push(_1.type_util.algoFormat(data));
});
return algos;
}
asExtas() {
return this.asTableWithT();
}
asTasks() {
var _a;
let tasks = [];
(_a = this.asTableWithT()) === null || _a === void 0 ? void 0 : _a.forEach(data => {
tasks.push(_1.type_util.taskFormat(data));
});
return tasks;
}
asAny() {
return this.data;
}
asTableWithT() {
var _a;
return (_a = this.asTable()) === null || _a === void 0 ? void 0 : _a.toKV();
}
toJSONString() {
return JSON.stringify(this);
}
}
ULTIPA.DataItem = DataItem;
function NewDataItem(jsonObj) {
let v = new DataItem(jsonObj.alias, jsonObj.data, jsonObj.type);
switch (v.type) {
case ResultType.RESULT_TYPE_EDGE:
v.data = NewEdgeTable(v.data);
break;
case ResultType.RESULT_TYPE_NODE:
v.data = NewNodeTable(v.data);
break;
case ResultType.RESULT_TYPE_PATH:
v.data = NewPaths(v.data);
break;
case ResultType.RESULT_TYPE_TABLE:
v.data = NewTable(v.data);
break;
case ResultType.RESULT_TYPE_GRAPH:
v.data = NewGraph(v.data);
break;
default:
break;
}
return v;
}
/**
* 所有请求的统一返回结构体
*/
class Response {
}
ULTIPA.Response = Response;
/**
* uql请求的返回结构体
*/
class UQLResponse extends Response {
}
ULTIPA.UQLResponse = UQLResponse;
function NewUQLResponse(jsonObj) {
let v = new UQLResponse();
Object.assign(v, jsonObj);
if (v.data) {
v.data = NewUQLReply(v.data);
}
return v;
}
ULTIPA.NewUQLResponse = NewUQLResponse;
class UQLBaseResponse extends Response {
}
ULTIPA.UQLBaseResponse = UQLBaseResponse;
function NewUQLBaseResponse(jsonObj) {
let v = new UQLBaseResponse();
Object.assign(v, jsonObj);
if (v.data) {
v.data = NewUQLReplyBase(v.data);
}
return v;
}
ULTIPA.NewUQLBaseResponse = NewUQLBaseResponse;
function formatBaseResponse(base) {
let res = Object.assign({}, base);
res.data = new UQLReply(res.data);
return res;
}
ULTIPA.formatBaseResponse = formatBaseResponse;
class UQLSingleResponse {
}
ULTIPA.UQLSingleResponse = UQLSingleResponse;
class TruncateType {
}
ULTIPA.TruncateType = TruncateType;
})(ULTIPA = exports.ULTIPA || (exports.ULTIPA = {}));
//# sourceMappingURL=types.js.map