123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- /**
- * 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}`)
- )
|