UNPKG

use-neo4j

Version:

<div style="text-align:center"> <h1>React Hooks For Neo4j</h1>

79 lines (78 loc) 3.82 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useLazyWriteCypher = exports.useLazyReadCypher = exports.useWriteCypher = exports.useReadCypher = exports.useCypher = void 0; var react_1 = require("react"); var neo4j_driver_1 = __importDefault(require("neo4j-driver")); var neo4j_context_1 = require("./neo4j.context"); exports.useCypher = function (defaultAccessMode, cypher, params, database) { var _a = useLazyCypher(defaultAccessMode, cypher, database), run = _a[0], queryState = _a[1]; react_1.useEffect(function () { run(params, database); }, []); return __assign({ run: run }, queryState); }; var createSession = function (driver, database, defaultAccessMode) { if (database !== undefined && database !== '') { return driver.session({ database: database, defaultAccessMode: defaultAccessMode }); } return driver.session({ defaultAccessMode: defaultAccessMode }); }; exports.useReadCypher = function (cypher, params, database) { return exports.useCypher(neo4j_driver_1.default.session.READ, cypher, params, database); }; exports.useWriteCypher = function (cypher, params, database) { return exports.useCypher(neo4j_driver_1.default.session.WRITE, cypher, params, database); }; exports.useLazyReadCypher = function (cypher, database) { return useLazyCypher(neo4j_driver_1.default.session.READ, cypher, database); }; exports.useLazyWriteCypher = function (cypher, database) { return useLazyCypher(neo4j_driver_1.default.session.WRITE, cypher, database); }; var useLazyCypher = function (defaultAccessMode, cypher, defaultDatabase) { var _a = react_1.useContext(neo4j_context_1.Neo4jContext), driver = _a.driver, database = _a.database; if (!driver) throw new Error('`driver` not defined in Neo4jContext. Have you added it into your app as <Neo4jProvider driver={{driver}}> ?'); var _b = react_1.useState({ loading: false, database: database, cypher: cypher }), queryState = _b[0], setQueryState = _b[1]; var run = function (params, anotherDatabase) { var session = createSession(driver, anotherDatabase || defaultDatabase || database, defaultAccessMode); setQueryState({ session: session, loading: true, database: anotherDatabase || defaultDatabase || database, cypher: cypher }); return session.run(cypher, params) .then(function (result) { setQueryState({ session: session, cypher: cypher, params: params, database: anotherDatabase || defaultDatabase || database, loading: false, result: result, records: result.records, first: result.records[0], }); session.close(); return result; }) .catch(function (error) { setQueryState({ session: session, cypher: cypher, params: params, database: anotherDatabase || defaultDatabase || database, loading: false, error: error, }); session.close(); }); }; return [ run, __assign({ cypher: cypher, database: database }, queryState) ]; };