Skip to content

Instantly share code, notes, and snippets.

@johnymontana
Created April 30, 2019 02:21
Show Gist options
  • Save johnymontana/ff1caf3a7add371628f20fbd87182b3f to your computer and use it in GitHub Desktop.
Save johnymontana/ff1caf3a7add371628f20fbd87182b3f to your computer and use it in GitHub Desktop.
import { makeAugmentedSchema, inferSchema } from 'neo4j-graphql-js';
import { ApolloServer } from 'apollo-server';
import { v1 as neo4j } from 'neo4j-driver';
// Create Neo4j driver instance
const driver = neo4j.driver(
process.env.NEO4J_URI || 'bolt://localhost:7687',
neo4j.auth.basic(
process.env.NEO4J_USER || 'neo4j',
process.env.NEO4J_PASSWORD || 'letmein'
)
);
// Connect to existing Neo4j instance, infer GraphQL typedefs
// generate CRUD GraphQL API using makeAugmentedSchema
const inferAugmentedSchema = driver => {
return inferSchema(driver).then(result => {
return makeAugmentedSchema({
typeDefs: result.typeDefs
});
});
};
// Spin up GraphQL server using auto-generated GraphQL schema object
const createServer = schema =>
new ApolloServer({
schema
context: { driver }
}
});
inferAugmentedSchema(driver)
.then(createServer)
.then(server => server.listen(3000, '0.0.0.0'))
.then(({ url }) => {
console.log(`GraphQL API ready at ${url}`);
})
.catch(err => console.error(err));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment