diff --git a/packages/backend/src/app.ts b/packages/backend/src/app.ts index 20587705..38d58236 100644 --- a/packages/backend/src/app.ts +++ b/packages/backend/src/app.ts @@ -3,12 +3,10 @@ import createError from 'http-errors'; import express, { Request, Response, NextFunction } from 'express'; import cors from 'cors'; import corsOptions from './config/cors-options'; -import { graphqlHTTP } from 'express-graphql'; +import graphQLInstance from './helpers/graphql-instance'; import logger from './helpers/logger'; import morgan from './helpers/morgan'; - -import rootResolver from './graphql/root-resolver' -import graphQLSchema from './graphql/graphql-schema' +import errorHandler from './helpers/error-handler' const app = express(); const port = appConfig.port; @@ -16,32 +14,15 @@ const port = appConfig.port; app.use(morgan); app.use(express.json()); app.use(express.urlencoded({ extended: false })); - app.use(cors(corsOptions)) - -app.use( - '/graphql', - graphqlHTTP({ - schema: graphQLSchema, - rootValue: rootResolver, - graphiql: true, - }), -); +app.use('/graphql', graphQLInstance); // catch 404 and forward to error handler app.use(function(req: Request, res: Response, next: NextFunction) { next(createError(404)); }); -// error handler -app.use(function(err: any, req: Request, res: Response, _next: NextFunction) { - if(err.message === 'Not Found') { - res.status(404).end() - } else { - logger.error(err.message) - res.status(500).end() - } -}); +app.use(errorHandler); app.listen(port, () => { logger.info(`Server is listening on ${port}`) diff --git a/packages/backend/src/helpers/error-handler.ts b/packages/backend/src/helpers/error-handler.ts new file mode 100644 index 00000000..11ae7e92 --- /dev/null +++ b/packages/backend/src/helpers/error-handler.ts @@ -0,0 +1,13 @@ +import { Request, Response, NextFunction } from 'express'; +import logger from './logger'; + +const errorHandler = (err: any, req: Request, res: Response, _next: NextFunction) => { + if(err.message === 'Not Found') { + res.status(404).end() + } else { + logger.error(err.message) + res.status(500).end() + } +} + +export default errorHandler; diff --git a/packages/backend/src/helpers/graphql-instance.ts b/packages/backend/src/helpers/graphql-instance.ts new file mode 100644 index 00000000..3d38a41f --- /dev/null +++ b/packages/backend/src/helpers/graphql-instance.ts @@ -0,0 +1,11 @@ +import { graphqlHTTP } from 'express-graphql'; +import rootResolver from '../graphql/root-resolver' +import graphQLSchema from '../graphql/graphql-schema' + +const graphQLInstance = graphqlHTTP({ + schema: graphQLSchema, + rootValue: rootResolver, + graphiql: true, +}) + +export default graphQLInstance;