Adjusted placement of server side graph code.

This commit is contained in:
Wyatt Johnson committed 2017-01-19 18:26:33 -07:00
1 parent fec18b50d1
commit f286263f1f
15 files changed
+60 -48

No files matched your search

+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.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -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;