@ultipa-graph/ultipa-driver
Version:
NodeJS SDK for Ultipa GQL
127 lines • 12.3 kB
JavaScript
;
/**
* Graph service handles graph management operations.
*/
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 () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.GraphService = void 0;
const grpc = __importStar(require("@grpc/grpc-js"));
const types_1 = require("../types");
const services_1 = require("../services");
const converters_1 = require("./converters");
const errors_1 = require("../errors");
/**
* Graph service for managing graphs.
*/
class GraphService {
ctx;
constructor(ctx) {
this.ctx = ctx;
}
/**
* Create a new graph.
*/
async createGraph(name, graphType = types_1.GraphType.OPEN, description = '') {
const request = {
name,
graph_type: (0, converters_1.graphTypeToProto)(graphType),
description,
};
const metadata = this.ctx.getSessionMetadata();
await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'CreateGraph', request, metadata);
}
/**
* Delete a graph.
*/
async dropGraph(name, ifExists = false) {
const request = {
name,
if_exists: ifExists,
};
const metadata = this.ctx.getSessionMetadata();
await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'DropGraph', request, metadata);
}
/**
* Set the current graph for the session.
*/
async useGraph(name) {
const session = this.ctx.sessions.getSession();
const request = {
name,
session_id: session?.id?.toString() || '0',
};
const metadata = this.ctx.getSessionMetadata();
await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'UseGraph', request, metadata);
this.ctx.sessions.setDefaultGraph(name);
}
/**
* Return all available graphs.
*/
async listGraphs() {
const metadata = this.ctx.getSessionMetadata();
const response = await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'ListGraphs', {}, metadata);
return (response.graphs || []).map((g) => (0, converters_1.convertGraphInfo)(g));
}
/**
* Return information about a specific graph.
*/
async getGraphInfo(name) {
const metadata = this.ctx.getSessionMetadata();
try {
const response = await (0, services_1.promisifyCall)(this.ctx.clients.graphService, 'GetGraphInfo', { name }, metadata);
if (!response.info) {
throw new errors_1.GraphNotFoundError(name);
}
const info = response.info;
return {
name: info.name || name,
graphType: info.graph_type,
nodeCount: parseInt(info.node_count || '0', 10),
edgeCount: parseInt(info.edge_count || '0', 10),
description: info.description || '',
};
}
catch (err) {
if (err instanceof errors_1.GraphNotFoundError)
throw err;
if (err?.code === grpc.status.NOT_FOUND) {
throw new errors_1.GraphNotFoundError(name);
}
throw err;
}
}
}
exports.GraphService = GraphService;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJ2aWNlcy9ncmFwaC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsb0RBQXNDO0FBRXRDLG9DQUFnRDtBQUNoRCwwQ0FBNEM7QUFDNUMsNkNBQWtFO0FBQ2xFLHNDQUErQztBQUUvQzs7R0FFRztBQUNILE1BQWEsWUFBWTtJQUNIO0lBQXBCLFlBQW9CLEdBQW1CO1FBQW5CLFFBQUcsR0FBSCxHQUFHLENBQWdCO0lBQUcsQ0FBQztJQUUzQzs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQ2YsSUFBWSxFQUNaLFlBQXVCLGlCQUFTLENBQUMsSUFBSSxFQUNyQyxjQUFzQixFQUFFO1FBRXhCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSTtZQUNKLFVBQVUsRUFBRSxJQUFBLDZCQUFnQixFQUFDLFNBQVMsQ0FBQztZQUN2QyxXQUFXO1NBQ1osQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUEsd0JBQWEsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUFDLElBQVksRUFBRSxXQUFvQixLQUFLO1FBQ3JELE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSTtZQUNKLFNBQVMsRUFBRSxRQUFRO1NBQ3BCLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxJQUFBLHdCQUFhLEVBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sT0FBTyxHQUFHO1lBQ2QsSUFBSTtZQUNKLFVBQVUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUc7U0FDM0MsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUEsd0JBQWEsRUFBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFVBQVU7UUFDZCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLHdCQUFhLEVBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFDN0IsWUFBWSxFQUNaLEVBQUUsRUFDRixRQUFRLENBQ1QsQ0FBQztRQUVGLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBQSw2QkFBZ0IsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBWTtRQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLHdCQUFhLEVBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFlBQVksRUFDN0IsY0FBYyxFQUNkLEVBQUUsSUFBSSxFQUFFLEVBQ1IsUUFBUSxDQUNULENBQUM7WUFFRixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuQixNQUFNLElBQUksMkJBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDM0IsT0FBTztnQkFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJO2dCQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzFCLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDO2dCQUMvQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDL0MsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRTthQUNwQyxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sR0FBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxHQUFHLFlBQVksMkJBQWtCO2dCQUFFLE1BQU0sR0FBRyxDQUFDO1lBQ2pELElBQUksR0FBRyxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN4QyxNQUFNLElBQUksMkJBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDckMsQ0FBQztZQUNELE1BQU0sR0FBRyxDQUFDO1FBQ1osQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpHRCxvQ0FpR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdyYXBoIHNlcnZpY2UgaGFuZGxlcyBncmFwaCBtYW5hZ2VtZW50IG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0ICogYXMgZ3JwYyBmcm9tICdAZ3JwYy9ncnBjLWpzJztcbmltcG9ydCB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSAnLi9zZXJ2aWNlLWNvbnRleHQnO1xuaW1wb3J0IHsgR3JhcGhJbmZvLCBHcmFwaFR5cGUgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZ3JhcGhUeXBlVG9Qcm90bywgY29udmVydEdyYXBoSW5mbyB9IGZyb20gJy4vY29udmVydGVycyc7XG5pbXBvcnQgeyBHcmFwaE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnO1xuXG4vKipcbiAqIEdyYXBoIHNlcnZpY2UgZm9yIG1hbmFnaW5nIGdyYXBocy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY3R4OiBTZXJ2aWNlQ29udGV4dCkge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgY3JlYXRlR3JhcGgoXG4gICAgbmFtZTogc3RyaW5nLFxuICAgIGdyYXBoVHlwZTogR3JhcGhUeXBlID0gR3JhcGhUeXBlLk9QRU4sXG4gICAgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBuYW1lLFxuICAgICAgZ3JhcGhfdHlwZTogZ3JhcGhUeXBlVG9Qcm90byhncmFwaFR5cGUpLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgfTtcblxuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG4gICAgYXdhaXQgcHJvbWlzaWZ5Q2FsbCh0aGlzLmN0eC5jbGllbnRzLmdyYXBoU2VydmljZSwgJ0NyZWF0ZUdyYXBoJywgcmVxdWVzdCwgbWV0YWRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZHJvcEdyYXBoKG5hbWU6IHN0cmluZywgaWZFeGlzdHM6IGJvb2xlYW4gPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBuYW1lLFxuICAgICAgaWZfZXhpc3RzOiBpZkV4aXN0cyxcbiAgICB9O1xuXG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBhd2FpdCBwcm9taXNpZnlDYWxsKHRoaXMuY3R4LmNsaWVudHMuZ3JhcGhTZXJ2aWNlLCAnRHJvcEdyYXBoJywgcmVxdWVzdCwgbWV0YWRhdGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VycmVudCBncmFwaCBmb3IgdGhlIHNlc3Npb24uXG4gICAqL1xuICBhc3luYyB1c2VHcmFwaChuYW1lOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMuZ2V0U2Vzc2lvbigpO1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBuYW1lLFxuICAgICAgc2Vzc2lvbl9pZDogc2Vzc2lvbj8uaWQ/LnRvU3RyaW5nKCkgfHwgJzAnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXRhZGF0YSA9IHRoaXMuY3R4LmdldFNlc3Npb25NZXRhZGF0YSgpO1xuICAgIGF3YWl0IHByb21pc2lmeUNhbGwodGhpcy5jdHguY2xpZW50cy5ncmFwaFNlcnZpY2UsICdVc2VHcmFwaCcsIHJlcXVlc3QsIG1ldGFkYXRhKTtcbiAgICB0aGlzLmN0eC5zZXNzaW9ucy5zZXREZWZhdWx0R3JhcGgobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCBhdmFpbGFibGUgZ3JhcGhzLlxuICAgKi9cbiAgYXN5bmMgbGlzdEdyYXBocygpOiBQcm9taXNlPEdyYXBoSW5mb1tdPiB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuZ3JhcGhTZXJ2aWNlLFxuICAgICAgJ0xpc3RHcmFwaHMnLFxuICAgICAge30sXG4gICAgICBtZXRhZGF0YVxuICAgICk7XG5cbiAgICByZXR1cm4gKHJlc3BvbnNlLmdyYXBocyB8fCBbXSkubWFwKChnOiBhbnkpID0+IGNvbnZlcnRHcmFwaEluZm8oZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCBhIHNwZWNpZmljIGdyYXBoLlxuICAgKi9cbiAgYXN5bmMgZ2V0R3JhcGhJbmZvKG5hbWU6IHN0cmluZyk6IFByb21pc2U8R3JhcGhJbmZvPiB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICAgIHRoaXMuY3R4LmNsaWVudHMuZ3JhcGhTZXJ2aWNlLFxuICAgICAgICAnR2V0R3JhcGhJbmZvJyxcbiAgICAgICAgeyBuYW1lIH0sXG4gICAgICAgIG1ldGFkYXRhXG4gICAgICApO1xuXG4gICAgICBpZiAoIXJlc3BvbnNlLmluZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoTm90Rm91bmRFcnJvcihuYW1lKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW5mbyA9IHJlc3BvbnNlLmluZm87XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBpbmZvLm5hbWUgfHwgbmFtZSxcbiAgICAgICAgZ3JhcGhUeXBlOiBpbmZvLmdyYXBoX3R5cGUsXG4gICAgICAgIG5vZGVDb3VudDogcGFyc2VJbnQoaW5mby5ub2RlX2NvdW50IHx8ICcwJywgMTApLFxuICAgICAgICBlZGdlQ291bnQ6IHBhcnNlSW50KGluZm8uZWRnZV9jb3VudCB8fCAnMCcsIDEwKSxcbiAgICAgICAgZGVzY3JpcHRpb246IGluZm8uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgR3JhcGhOb3RGb3VuZEVycm9yKSB0aHJvdyBlcnI7XG4gICAgICBpZiAoZXJyPy5jb2RlID09PSBncnBjLnN0YXR1cy5OT1RfRk9VTkQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEdyYXBoTm90Rm91bmRFcnJvcihuYW1lKTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cbn1cbiJdfQ==