Created
April 30, 2019 02:21
-
-
Save johnymontana/ff1caf3a7add371628f20fbd87182b3f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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