-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathapp.js
72 lines (63 loc) · 1.87 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { print } from 'graphql';
import express, { json, Router } from 'express';
import { createServer } from 'http';
import cors from 'cors';
import mongoose from 'mongoose';
import morgan from 'morgan';
import { ApolloServer } from 'apollo-server-express';
import { resolvers, typeDefs } from './graphql';
import { auth, loginUser, errorHandler } from './utils/helpers';
import logger from './logger';
import dotenv from 'dotenv';
dotenv.config()
global.logger = logger;
const app = express();
app.use(json());
app.use(cors());
const router = Router();
router.get('/', (req, res) =>
res.status(200).json({ message: 'Welcome to Graphql' })
);
const loginRoute = router.post('/', async (req, res) => {
try {
const { username, password } = req.body;
const token = await loginUser(username, password);
if (token) {
res.status(200).json({ msg: 'welcome', token });
}
} catch (error) {
res.status(401).json({ msg: error.message });
}
});
app.use('/login', loginRoute);
// app.use('/', auth);
const server = new ApolloServer({
typeDefs,
resolvers,
formatError: (err) => {
const error = errorHandler(err);
return error;
}
});
server.applyMiddleware({ app });
const httpServer = createServer(app);
server.installSubscriptionHandlers(httpServer);
app.use(morgan('combined', { stream: logger.stream }));
const uri = process.env.DB_URL;
const options = { useNewUrlParser: true, useUnifiedTopology: true };
mongoose
.connect(uri, options)
.then(() => logger.info('🚀🚀🚀 Db connected'))
.catch((error) => {
throw error;
});
httpServer.listen({ port: process.env.PORT || 3000 }, () => {
logger.info(
`🚀 Server ready at http://localhost:${process.env.PORT || 3000}${server.graphqlPath}`
);
logger.info(
`🚀🚀 Subscriptions ready at ws://localhost:${process.env.PORT || 3000}${
server.subscriptionsPath
}`
);
});