From 491102c02bffc67eb639e3055a94561adfc88c45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Wed, 21 Nov 2018 00:39:27 +0100 Subject: [PATCH] Move reusable part in server.js --- src/index.js | 68 +------------------------------------------------- src/server.js | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 67 deletions(-) create mode 100644 src/server.js diff --git a/src/index.js b/src/index.js index 5c3face1a..1827b5a22 100644 --- a/src/index.js +++ b/src/index.js @@ -1,70 +1,4 @@ -import { GraphQLServer } from 'graphql-yoga' -import { makeExecutableSchema } from 'apollo-server' -import { augmentSchema } from 'neo4j-graphql-js' -import { typeDefs, resolvers } from './graphql-schema' -import { v1 as neo4j } from 'neo4j-driver' -import dotenv from 'dotenv' -import mocks from './mocks' -import middleware from './middleware' -import applyDirectives from './bootstrap/directives' -import applyScalars from './bootstrap/scalars' - -import passport from 'passport' -import jwtStrategy from './jwt/strategy' -import jwt from 'jsonwebtoken' - -dotenv.config() - -let schema = makeExecutableSchema({ - typeDefs, - resolvers -}) - -const driver = neo4j.driver( - process.env.NEO4J_URI || 'bolt://localhost:7687', - neo4j.auth.basic( - process.env.NEO4J_USER || 'neo4j', - process.env.NEO4J_PASSWORD || 'neo4j' - ) -) - -const MOCK = (process.env.MOCK === 'true') -console.log('MOCK:', MOCK) - -schema = augmentSchema(schema, { - query: { - exclude: ['Statistics', 'LoggedInUser'] - }, - mutation: { - exclude: ['Statistics', 'LoggedInUser'] - } -}) -schema = applyScalars(applyDirectives(schema)) - -const server = new GraphQLServer({ - context: async (req) => { - const payload = { - driver, - user: null, - req: req.request - } - try { - const token = payload.req.headers.authorization.replace('Bearer ', '') - payload.user = await jwt.verify(token, process.env.JWT_SECRET) - } catch (err) {} - - return payload - }, - schema: schema, - tracing: true, - middlewares: middleware(schema), - mocks: MOCK ? mocks : false -}) - -passport.use('jwt', jwtStrategy()) -server.express.use(passport.initialize()) - -server.express.post('/graphql', passport.authenticate(['jwt'], { session: false })) +import server from './server' const serverConfig = { port: 4000 diff --git a/src/server.js b/src/server.js new file mode 100644 index 000000000..be890a9b2 --- /dev/null +++ b/src/server.js @@ -0,0 +1,69 @@ +import { GraphQLServer } from 'graphql-yoga' +import { makeExecutableSchema } from 'apollo-server' +import { augmentSchema } from 'neo4j-graphql-js' +import { typeDefs, resolvers } from './graphql-schema' +import { v1 as neo4j } from 'neo4j-driver' +import dotenv from 'dotenv' +import mocks from './mocks' +import middleware from './middleware' +import applyDirectives from './bootstrap/directives' +import applyScalars from './bootstrap/scalars' + +import passport from 'passport' +import jwtStrategy from './jwt/strategy' +import jwt from 'jsonwebtoken' + +dotenv.config() + +let schema = makeExecutableSchema({ + typeDefs, + resolvers +}) + +const driver = neo4j.driver( + process.env.NEO4J_URI || 'bolt://localhost:7687', + neo4j.auth.basic( + process.env.NEO4J_USER || 'neo4j', + process.env.NEO4J_PASSWORD || 'neo4j' + ) +) + +const MOCK = (process.env.MOCK === 'true') +console.log('MOCK:', MOCK) + +schema = augmentSchema(schema, { + query: { + exclude: ['Statistics', 'LoggedInUser'] + }, + mutation: { + exclude: ['Statistics', 'LoggedInUser'] + } +}) +schema = applyScalars(applyDirectives(schema)) + +const server = new GraphQLServer({ + context: async (req) => { + const payload = { + driver, + user: null, + req: req.request + } + try { + const token = payload.req.headers.authorization.replace('Bearer ', '') + payload.user = await jwt.verify(token, process.env.JWT_SECRET) + } catch (err) {} + + return payload + }, + schema: schema, + tracing: true, + middlewares: middleware(schema), + mocks: MOCK ? mocks : false +}) + +passport.use('jwt', jwtStrategy()) +server.express.use(passport.initialize()) + +server.express.post('/graphql', passport.authenticate(['jwt'], { session: false })) + +export default server