/** * Configure dotenv: * https://www.npmjs.com/package/dotenv * * Configure file updates with multer: * https://github.com/expressjs/multer * * Configure CORS for use with localhost. */ require('dotenv').config() const { GraphQLServer } = require('graphql-yoga') const fileUpload = require('express-fileupload') const jwt = require('jsonwebtoken') const cookieParser = require('cookie-parser') const { resolvers } = require('./src/resolvers') const { db } = require('./src/db') const server = new GraphQLServer({ typeDefs: './schema.graphql', resolvers, context: req => ({ ...req, db, debug: true }) }) server.express.use(cookieParser()) server.express.use((req, res, next) => { const { token } = req.cookies if (token) { const { userId } = jwt.verify(token, process.env.APP_SECRET) req.userId = userId } next() }) server.express.use(async (req, res, next) => { if (!req.userId) return next() const user = await db.query.user( { where: { id: req.userId } }, '{id, email, name}' ) req.user = user next() }) server.express.use(fileUpload()) server.express.post('/upload', (req, res) => { console.log(req.files) }) server.start( { cors: { credentials: true, origin: process.env.FRONTEND_URL } }, server => console.log(`Server is running on http://localhost:${server.port}`) )