mirror of
https://github.com/wassname/talk.git
synced 2026-07-18 12:40:13 +08:00
Adjusted placement of server side graph code.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user