@ultipa-graph/ultipa-driver
Version:
NodeJS SDK for ultipa-server 5.2
94 lines • 3.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.UltipaDriver = exports.ConnectionFinal = void 0;
const connection_1 = require("./extra/connection");
const connection_pool_1 = require("./connection.pool");
const fs_1 = __importDefault(require("fs"));
/**
* Extra api
*/
class ConnectionFinal extends connection_1.Connection {
testConnectResult;
setGraph(graphName) {
this.defaultConfig.defaultGraph = graphName;
}
}
exports.ConnectionFinal = ConnectionFinal;
class UltipaDriver extends ConnectionFinal {
connectionPool;
constructor(config) {
let crt;
if (config.crt && config.crt.length !== 0) {
crt = fs_1.default.readFileSync(config.crt);
}
super(config.hosts[0], config.username, config.password, crt, config);
this.connectionPool = new connection_pool_1.ConnectionPool(config.hosts, config.username, config.password, crt, config);
}
setGraph(graphName) {
this.defaultConfig.defaultGraph = graphName;
this.connectionPool.setGraph(graphName);
}
}
exports.UltipaDriver = UltipaDriver;
// export class UltipaDriver extends ConnectionFinal {
// private _instance: ConnectionFinal = null;
// private _initPromise: Promise<ConnectionFinal> = null;
// constructor(config: UltipaConfig) {
// let crt: Buffer;
// if (config.crt && config.crt.length !== 0) {
// crt = fs.readFileSync(config.crt)
// }
// super(config.hosts[0], config.username, config.password,
// crt,
// config);
// function withTimeout(promise: Promise<ConnectionFinal>, ms: number): Promise<ConnectionFinal> {
// const timeoutPromise = new Promise<ConnectionFinal>((_, reject) => {
// const timeoutId = setTimeout(() => {
// clearTimeout(timeoutId);
// reject(new Error('Connection timeout'));
// }, ms);
// });
// return Promise.race([promise, timeoutPromise]);
// }
// return new Proxy(this, {
// get: (target: UltipaDriver, prop: string) => {
// if (typeof target[prop] === 'function') {
// return target[prop].bind(target);
// }
// if (prop in target) {
// return target[prop];
// }
// return async (...args: any[]) => {
// if (!target._initPromise) {
// target._initPromise = (async () => {
// const pool = new ConnectionPool(
// config.hosts,
// config.username,
// config.password,
// crt,
// config
// );
// target._instance = await withTimeout(
// pool.getActive(),
// config?.timeout * 1000 || Number.MAX_SAFE_INTEGER
// );
// return target._instance;
// })();
// }
// try {
// await target._initPromise;
// return target._instance[prop](...args);
// } catch (error) {
// target._initPromise = null;
// target._instance = null;
// throw error;
// }
// };
// }
// });
// }
// }
//# sourceMappingURL=connection.final.js.map