cypher-builder
Fluent CQL Builder for Neo4j
Installation
npm install @douglasgabr/cypher-builder
or
yarn add @douglasgabr/cypher-builder
Usage
Type inference (required for typescript projects)
First, you must create a *.d.ts
file in your project, in order to type the possible nodes, relationships and their properties.
// neo4j-types.d.ts
import '@douglasgabr/cypher-builder';
declare module '@douglasgabr/cypher-builder' {
export interface CypherBuilderNodes {
User: {
id: string;
};
}
export interface CypherBuilderRelationships {
KNOWS: {
level: 'friendship' | 'colleague';
};
}
}
That will enable your IDE (tested only in VSCode) to suggest values for your node labels, relationship types and its properties.
Node Label suggestion:
Node Properties suggestion:
Relationship Type suggestion:
Example
import { Builder } from '@douglasgabr/cypher-builder';
const queryBuilder = new Builder()
.match((match) => {
match
.node('person', 'Person', { name: 'Alice' })
.relationship('either', 'KNOWS')
.node('friend', 'Person'),
})
.where((where) => where.and('friend.age', '>=', 18))
.return('person', 'friend');
const { query, parameters } = queryBuilder.buildQueryObject();
query:
MATCH (person:Person{ name: $person_name })-[:KNOWS]-(friend:Person)
WHERE friend.age >= $friend_age
RETURN person, friend
parameters:
{
person_name: 'Alice',
friend_age: 18
}