Skip to content

Commit

Permalink
Refactor as per adam-cowley#16
Browse files Browse the repository at this point in the history
  • Loading branch information
nad-au committed Oct 9, 2022
1 parent b995509 commit 01e9893
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 77 deletions.
28 changes: 18 additions & 10 deletions lib/neo4j.service.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Injectable, Inject, OnApplicationShutdown } from '@nestjs/common';
import neo4j, { Driver, Result, int, Transaction } from 'neo4j-driver';
import neo4j, { Driver, int, Transaction, QueryResult } from 'neo4j-driver';
import TransactionImpl from 'neo4j-driver-core/lib/transaction';
import { Neo4jConfig } from './interfaces/neo4j-config.interface';
import { NEO4J_OPTIONS, NEO4J_DRIVER } from './neo4j.constants';
Expand Down Expand Up @@ -50,40 +50,48 @@ export class Neo4jService implements OnApplicationShutdown {
});
}

transaction<Result>(
uow: (c: Transaction) => Promise<Result>,
transaction<QueryResult>(
uow: (c: Transaction) => Promise<QueryResult>,
database?: string,
onError?: (e: Error) => Promise<void>,
throwOnError = true,
): Promise<Result> {
): Promise<QueryResult> {
const session = this.getWriteSession(database);
return transaction(session, uow, onError, throwOnError);
}

read(
async read(
cypher: string,
params?: Record<string, any>,
databaseOrTransaction?: string | Transaction,
): Result {
): Promise<QueryResult> {
if (databaseOrTransaction instanceof TransactionImpl) {
return (<Transaction>databaseOrTransaction).run(cypher, params);
}

const session = this.getReadSession(<string>databaseOrTransaction);
return session.run(cypher, params);
const res = await session.executeRead((tx) => tx.run(cypher, params));

await session.close();

return res;
}

write(
async write(
cypher: string,
params?: Record<string, any>,
databaseOrTransaction?: string | Transaction,
): Result {
): Promise<QueryResult> {
if (databaseOrTransaction instanceof TransactionImpl) {
return (<Transaction>databaseOrTransaction).run(cypher, params);
}

const session = this.getWriteSession(<string>databaseOrTransaction);
return session.run(cypher, params);
const res = await session.executeWrite((tx) => tx.run(cypher, params));

await session.close();

return res;
}

onApplicationShutdown() {
Expand Down
97 changes: 31 additions & 66 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"homepage": "https://github.com/adam-cowley/nest-neo4j#readme",
"dependencies": {
"class-transformer": "^0.5.1",
"neo4j-driver": "^4.4.7",
"neo4j-driver": "^5.0.1",
"reflect-metadata": "^0.1.13"
},
"peerDependencies": {
Expand Down

0 comments on commit 01e9893

Please sign in to comment.