@douglasgabr/cypher-builder
Advanced tools
Changelog
4.2.0 / 2022-10-28
refactor: add query runner object parameter to builder run function
import neo4j from 'neo4j-driver';
import { Builder } from '@douglasgabr/cypher-builder';
const driver = neo4j.driver(uri, neo4j.auth.basic(user, password));
const session = driver.session();
try {
await new Builder()
.match((m) => {
m.node('n');
})
.return('n')
.run(session);
} finally {
await session.close();
}
This is deprecated:
// potentially unsafe, since `session.run` might use `this` internally
new Builder().run(session.run);
// correct way, but too verbose
new Builder().run(session.run.bind(session));
refactor: publish ES modules and ship typescript source
Changelog
4.1.0 / 2022-10-07
feat(clauses): add call procedure and yield clauses
import { Builder } from '@douglasgabr/cypher-builder';
const builder = new Builder()
.call('dbms.procedures()')
.yield('name', 'signature');
/**
* CALL dbms.procedures()
* YIELD name, signature
*/
Changelog
4.0.0 / 2022-09-22
The only breaking change in this major release is dropping support of Node 12, since it is no longer maintained.
Changelog
3.7.0 / 2022-09-22
usingIndex
usingIndexSeek
usingScan
usingJoinOn
callInTransactions
(previously USING PERIODIC COMMIT
)Changelog
3.6.0 / 2022-08-31
feat(clauses): add CALL clause
import { Builder } from '@douglasgabr/cypher-builder';
const builder = new Builder()
.match((m) => {
m.node('a', 'User', { id: '1' });
})
.call((b) => {
b.with('a')
.match((m) => {
m.node('a').relationship().node('b', 'User', { id: '2' });
})
.return('b');
})
.return('a', 'b');
/**
* MATCH (a:User{ id: $a_id })
* CALL {
* WITH a
* MATCH (a)--(b:User{ id: $b_id })
* RETURN b
* }
* RETURN a, b
*/
Changelog
3.5.0 / 2022-07-29
feat(patterns): ✨ add path name variable to MATCH
import { Builder } from '@douglasgabr/cypher-builder';
new Builder().match('p', (m) => m.node('a').relationship().node('b'));
// MATCH p = (a)--(b)
Changelog
3.4.1 / 2022-04-05
fix(pagination): use neo4j driver int
constructor for limit and skip
import { Builder } from '@douglasgabr/cypher-builder';
import { int } from 'neo4j-driver';
new Builder().limit(1).skip(2);
// parameters will be
const parameters = { limit: int(1), skip: int(2) };
Changelog
3.4.0 / 2022-01-16
refactor(clauses): enable use of literal util in set clause
import { Builder, literal } from '@douglasgabr/cypher-builder';
new Builder().set((s) => {
// deprecated
s.setLiteral('foo', 'bar');
// new
s.set('foo', literal('bar'));
});
Changelog
3.3.0 / 2022-01-07
feat(builder): ✨ add addParameter
to builder
import { Builder } from '@douglasgabr/cypher-builder';
const builder = new Builder();
// returns builder for method chaining
builder.addParameter('value', 'name');
// { value: 'name' }
// if parameter name is not provided, it will be generated
const generatedParameterName = builder.addParameter('value');
// { [generatedParameterName]: 'value' }