Created
December 21, 2018 05:26
-
-
Save johnymontana/06edb3fc386060e0719e0a7ef9d6353f 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 { typeDefs } from "./graphql-schema"; | |
import { ApolloServer } from "apollo-server"; | |
import { v1 as neo4j } from "neo4j-driver"; | |
import { makeAugmentedSchema } from "neo4j-graphql-js"; | |
import dotenv from "dotenv"; | |
// set environment variables from ../.env | |
dotenv.config(); | |
/* | |
* Create an executable GraphQL schema object from GraphQL type definitions | |
* including autogenerated queries and mutations. | |
* Optionally a config object can be included to specify which types to include | |
* in generated queries and/or mutations. Read more in the docs: | |
* https://grandstack.io/docs/neo4j-graphql-js-api.html#makeaugmentedschemaoptions-graphqlschema | |
*/ | |
const schema = makeAugmentedSchema({ | |
typeDefs | |
}); | |
/* | |
* Create a Neo4j driver instance to connect to the database | |
* using credentials specified as environment variables | |
* with fallback to defaults | |
*/ | |
const driver = neo4j.driver( | |
process.env.NEO4J_URI || "bolt://localhost:7687", | |
neo4j.auth.basic( | |
process.env.NEO4J_USER || "neo4j", | |
process.env.NEO4J_PASSWORD || "neo4j" | |
) | |
); | |
/* | |
* Create a new ApolloServer instance, serving the GraphQL schema | |
* created using makeAugmentedSchema above and injecting the Neo4j driver | |
* instance into the context object so it is available in the | |
* generated resolvers to connect to the database. | |
*/ | |
const server = new ApolloServer({ | |
context: { driver }, | |
schema: schema | |
}); | |
server.listen(process.env.GRAPHQL_LISTEN_PORT, "0.0.0.0").then(({ url }) => { | |
console.log(`GraphQL API ready at ${url}`); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment