/**
* @file Cree le serveur express avec tous les middleware qui vont bien
*/
import express from 'express';
import bodyParser from 'body-parser';
import favicon from 'serve-favicon';
import morgan from 'morgan';
import path from 'path';
import cors from 'cors';
import schema from './graphql/schema';
import { graphqlExpress, graphiqlExpress } from 'graphql-server-express';
import flash from 'connect-flash';
const server = express();
// on sait pas a quoi ca sert mais il parait que c'est utile
server.use(bodyParser.json());
server.use(bodyParser.urlencoded({
extended: true
}));
// setting up view engine for pug
let viewpath = path.resolve('./','src','views');
console.log(viewpath);
server.set('views', viewpath);
server.set('view engine', 'pug');
// favicon: capital sigma symbol
server.use(favicon(path.resolve('./','assets','favicon.ico')));
// Morgan is middleware for logging requests
server.use(morgan('dev'));
// Charge le middleware express pour GraphQL
server.use('/graphql', bodyParser.json(), cors(),
graphqlExpress(req => {
let uid;
try {
uid = req.session.id;
} catch (err) {
uid = "1";
}
return {
schema : schema,
context : {user : {id : uid}}
};
}));
// GraphiQL est une console interactive pour faire des requêtes au schéma GraphQL
server.use('/graphiql', graphiqlExpress({endpointURL: '/graphql'}));
// connect-flash is middleware for flashing messages
server.use(flash());
export default server;