Adjusted placement of server side graph code.

This commit is contained in:
Wyatt Johnson
2017-01-19 18:26:33 -07:00
parent fec18b50d1
commit f286263f1f
15 changed files with 60 additions and 48 deletions
+18 -1
View File
@@ -10,6 +10,8 @@ const RedisStore = require('connect-redis')(session);
const redis = require('./services/redis');
const csrf = require('csurf');
const errors = require('./errors');
const graph = require('./graph');
const apollo = require('graphql-server-express');
const app = express();
@@ -77,7 +79,22 @@ app.use(session(session_opts));
app.use(passport.initialize());
app.use(passport.session());
app.use('/api/v1/graph', require('./routes/api/graph'));
//==============================================================================
// GraphQL Router
//==============================================================================
// GraphQL endpoint.
app.use('/api/v1/graph/ql', apollo.graphqlExpress(graph.createGraphOptions));
// Only include the graphiql tool if we aren't in production mode.
if (app.get('env') !== 'production') {
// Interactive graphiql interface.
app.use('/api/v1/graph/iql', apollo.graphiqlExpress({
endpointURL: '/api/v1/graph/ql'
}));
}
//==============================================================================
// CSRF MIDDLEWARE
+24
View File
@@ -0,0 +1,24 @@
const loaders = require('./loaders');
const mutators = require('./mutators');
const schema = require('./schema');
module.exports = {
createGraphOptions: (req) => {
let context = {};
// Load the current logged in user to `user`, otherwise this'll be null.
context.user = req.user;
// Create the loaders.
context.loaders = loaders(context);
// Create the mutators.
context.mutators = mutators(context);
return {
schema,
context
};
}
};
@@ -1,14 +1,14 @@
const DataLoader = require('dataloader');
const _ = require('lodash');
const url = require('url');
const errors = require('../../../errors');
const scraper = require('../../../services/scraper');
const errors = require('../errors');
const scraper = require('../services/scraper');
const Comment = require('../../../models/comment');
const User = require('../../../models/user');
const Action = require('../../../models/action');
const Asset = require('../../../models/asset');
const Settings = require('../../../models/setting');
const Comment = require('../models/comment');
const User = require('../models/user');
const Action = require('../models/action');
const Asset = require('../models/asset');
const Settings = require('../models/setting');
/**
* SingletonResolver is a cached loader for a single result.
@@ -1,11 +1,11 @@
const errors = require('../../../errors');
const errors = require('../errors');
const Action = require('../../../models/action');
const Asset = require('../../../models/asset');
const Comment = require('../../../models/comment');
const User = require('../../../models/user');
const Action = require('../models/action');
const Asset = require('../models/asset');
const Comment = require('../models/comment');
const User = require('../models/user');
const Wordlist = require('../../../services/wordlist');
const Wordlist = require('../services/wordlist');
/**
* Creates a new comment.
@@ -1,3 +1,7 @@
// TODO: Adjust `RootQuery.asset(id: ID, url: URL)` to instead be
// `RootQuery.asset(id: ID, url: URL!)` because we'll always need the url, if
// this change is done now everything will likely break on the front end.
const typeDefs = [`
type UserSettings {
bio: String
@@ -76,7 +80,7 @@ scalar URL
type RootQuery {
settings: Settings
assets: [Asset]
asset(id: ID, url: URL!): Asset
asset(id: ID, url: URL): Asset
me: User
}
-33
View File
@@ -1,33 +0,0 @@
const express = require('express');
const apollo = require('graphql-server-express');
const loaders = require('./loaders');
const mutators = require('./mutators');
const schema = require('./schema');
const router = express.Router();
// GraphQL endpoint.
router.use('/ql', apollo.graphqlExpress((req) => {
let context = {};
// Load the current logged in user to `user`, otherwise this'll be null.
context.user = req.user;
// Create the loaders.
context.loaders = loaders(context);
// Create the mutators.
context.mutators = mutators(context);
return {
schema,
context
};
}));
// Interactive graphiql interface.
router.use('/iql', apollo.graphiqlExpress({endpointURL: '/api/v1/graph/ql'}));
module.exports = router;