Skip to content

Commit 06486db

Browse files
authored
Merge pull request #10 from aayush-05/cleanupCode
Cleanup Code
2 parents 04abac5 + cd0530f commit 06486db

File tree

18 files changed

+1229
-275
lines changed

18 files changed

+1229
-275
lines changed

.env

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
MONGO_USER = "codeuino-user"
2-
MONGO_PASSWORD = "thisisthewrongpassword"
1+
DATABASE_URL="mongodb://<username>:<password>@cluster0-shard-00-00.t4hho.mongodb.net:27017,cluster0-shard-00-01.t4hho.mongodb.net:27017,cluster0-shard-00-02.t4hho.mongodb.net:27017/<dbname>?ssl=true&replicaSet=atlas-a80apd-shard-0&authSource=admin&retryWrites=true&w=majority"
32
JWT_SECRET = "somesupersecretkey"
43
PORT=8000

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
node_modules
1+
node_modules/
2+
package-lock.json

app.js

Lines changed: 50 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,68 @@
1-
var createError = require("http-errors");
2-
var express = require("express");
3-
var path = require("path");
4-
var bodyParser = require("body-parser");
5-
var cookieParser = require("cookie-parser");
6-
var logger = require("morgan");
7-
var http = require('http');
8-
var graphqlHTTP = require("express-graphql");
9-
var indexRouter = require("./routes/index");
10-
var usersRouter = require("./routes/users");
11-
var graphQlSchema = require("./graphql/schema/index");
12-
var graphQlResolvers = require("./graphql/resolvers/index");
13-
var isAuth = require("./middleware/is-auth");
14-
var Topic = require("./models/topic")
15-
var User = require('./models/user');
16-
const { topics } = require("./graphql/resolvers/index");
1+
const createError = require("http-errors");
2+
const express = require("express");
3+
const path = require("path");
4+
const isAuth = require("./middleware/is-auth");
5+
const bodyParser = require("body-parser");
6+
const cookieParser = require("cookie-parser");
7+
const morgan = require("morgan");
8+
const cors = require("cors");
9+
const http = require("http");
10+
const graphqlHTTP = require("express-graphql");
11+
const graphQlSchema = require("./graphql/schema/index");
12+
const graphQlResolvers = require("./graphql/resolvers/index");
13+
const Topic = require("./models/topic");
14+
const User = require("./models/user");
15+
const Message = require("./models/message");
1716
require("./config/mongoose");
18-
var app = express();
1917

20-
var server = http.createServer(app);
21-
var io = require("socket.io")(server);
18+
const app = express();
19+
const server = http.createServer(app);
20+
const io = require("socket.io")(server);
2221

23-
24-
app.use((req, res, next) => {
25-
res.setHeader("Access-Control-Allow-Origin", "*");
26-
res.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS");
27-
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
28-
if (req.method === "OPTIONS") {
29-
res.sendStatus(200);
30-
}
31-
next();
32-
});
33-
34-
app.set("views", path.join(__dirname, "views"));
35-
app.set("view engine", "pug");
36-
37-
app.use(logger("dev"));
22+
app.use(cors());
23+
app.use(morgan("dev"));
3824
app.use(express.json());
3925
app.use(express.urlencoded({ extended: false }));
4026
app.use(cookieParser());
4127
app.use(bodyParser.json());
4228
app.use(express.static(path.join(__dirname, "public")));
43-
4429
app.use(isAuth);
45-
app.use("/", indexRouter);
46-
app.use("/users", usersRouter);
4730

4831
io.sockets.on("connection", function (socket, client) {
49-
console.log("client connected!")
50-
socket.on('room', function(room){
32+
console.log("client connected!");
33+
socket.on("room", function (room) {
5134
socket.join(room);
52-
console.log(`Someone joined the room: ${room}`)
53-
})
35+
console.log(`Someone joined the room: ${room}`);
36+
});
5437
socket.on("newMessage", async (data) => {
5538
try {
56-
console.log(data);
57-
Topic.findById(data.topicId, async function(err,Topic){
58-
if(err){
59-
throw new Error (err);
39+
console.log(Topic);
40+
await Topic.findById(data.topicId, async function (err, Topic) {
41+
if (err) {
42+
throw new Error(err);
43+
}
44+
let user = await User.findById(data.userId, function (err, user) {
45+
if (err) {
46+
throw new Error(err);
6047
}
61-
let user = await User.findById(data.userId, function(err,user){
62-
if (err){
63-
throw new Error(err)
64-
}
65-
return user.username;
66-
})
67-
console.log(user.username);
68-
let newChat = {
69-
username: user.username,
70-
replyTo: data.replyTo,
71-
description: data.description,
72-
userId: user._id,
73-
}
74-
Topic.chats.push(newChat)
75-
await Topic.save();
76-
io.to(data.topicId).emit('newChat', Topic.chats.pop())
77-
})
78-
79-
} catch{
80-
console.log('Error')
48+
return user.username;
49+
});
50+
let message = new Message({
51+
userId: user._id,
52+
replyTo: data.replyTo,
53+
description: data.description,
54+
likes: data.likes,
55+
});
56+
await message.save();
57+
console.log(Topic);
58+
Topic.chats.push(message);
59+
await Topic.save();
60+
io.to(data.topicId).emit("message", Topic.chats.pop());
61+
});
62+
} catch {
63+
console.log(err);
8164
}
82-
})
65+
});
8366
});
8467

8568
app.use(
@@ -103,4 +86,4 @@ app.use(function (err, req, res, next) {
10386
res.render("error");
10487
});
10588

106-
module.exports = {app:app, server:server};
89+
module.exports = { app: app, server: server };

bin/www

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,27 @@
33
* Module dependencies.
44
*/
55

6-
var app = require('../app').app;
7-
var debug = require('debug')('community-forum-backend:server');
6+
var app = require("../app").app;
7+
var debug = require("debug")("spansberry-backend:server");
88

99
/**
1010
* Get port from environment and store in Express.
1111
*/
1212

13-
var port = normalizePort(process.env.PORT || '8000');
14-
app.set('port', port);
13+
var port = normalizePort(process.env.PORT || "8000");
14+
app.set("port", port);
1515

1616
/**
1717
* Create HTTP server.
1818
*/
19-
var server = require('../app').server
19+
var server = require("../app").server;
2020
/**
2121
* Listen on provided port, on all network interfaces.
2222
*/
2323

2424
server.listen(port);
25-
server.on('error', onError);
26-
server.on('listening', onListening);
25+
server.on("error", onError);
26+
server.on("listening", onListening);
2727

2828
/**
2929
* Normalize a port into a number, string, or false.
@@ -50,22 +50,20 @@ function normalizePort(val) {
5050
*/
5151

5252
function onError(error) {
53-
if (error.syscall !== 'listen') {
53+
if (error.syscall !== "listen") {
5454
throw error;
5555
}
5656

57-
var bind = typeof port === 'string'
58-
? 'Pipe ' + port
59-
: 'Port ' + port;
57+
var bind = typeof port === "string" ? "Pipe " + port : "Port " + port;
6058

6159
// handle specific listen errors with friendly messages
6260
switch (error.code) {
63-
case 'EACCES':
64-
console.error(bind + ' requires elevated privileges');
61+
case "EACCES":
62+
console.error(bind + " requires elevated privileges");
6563
process.exit(1);
6664
break;
67-
case 'EADDRINUSE':
68-
console.error(bind + ' is already in use');
65+
case "EADDRINUSE":
66+
console.error(bind + " is already in use");
6967
process.exit(1);
7068
break;
7169
default:
@@ -79,10 +77,8 @@ function onError(error) {
7977

8078
function onListening() {
8179
var addr = server.address();
82-
var bind = typeof addr === 'string'
83-
? 'pipe ' + addr
84-
: 'port ' + addr.port;
85-
debug('Listening on ' + bind);
80+
var bind = typeof addr === "string" ? "pipe " + addr : "port " + addr.port;
81+
debug("Listening on " + bind);
8682
}
8783

88-
module.exports = server;
84+
module.exports = server;

config/mongoose.js

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
1-
const mongoose = require('mongoose');
2-
require('dotenv').config();
1+
const mongoose = require("mongoose");
2+
require("dotenv").config();
33

4-
mongoose.connect(`mongodb://${process.env.MONGO_USER}:${process.env.MONGO_PASSWORD}@anonymous-project-shard-00-00-e0dq9.mongodb.net:27017,anonymous-project-shard-00-01-e0dq9.mongodb.net:27017,anonymous-project-shard-00-02-e0dq9.mongodb.net:27017/<test_codeuino>?ssl=true&replicaSet=Anonymous-Project-shard-0&authSource=admin&retryWrites=true&w=majority`, {
5-
useNewUrlParser: true,
6-
useCreateIndex: true,
7-
useUnifiedTopology: true,
8-
useFindAndModify: false
9-
})
4+
mongoose
5+
.connect(process.env.DATABASE_URL, {
6+
useNewUrlParser: true,
7+
useCreateIndex: true,
8+
useUnifiedTopology: true,
9+
useFindAndModify: false,
10+
})
1011
.then(() => {
11-
console.log('mongodb connection successful')
12+
console.log("mongodb connection successful");
1213
})
1314
.catch((err) => {
14-
console.log('mongodb connection error', err)
15-
})
15+
console.log("mongodb connection error", err);
16+
});

graphql/resolvers/auth.js

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,58 @@
11
const bcrypt = require("bcryptjs");
22
const jwt = require("jsonwebtoken");
3-
require('dotenv').config();
3+
require("dotenv").config();
44
const User = require("../../models/user");
55

66
module.exports = {
77
createUser: async (args) => {
88
try {
99
const existingUser = await User.findOne({ email: args.userInput.email });
1010
if (existingUser) {
11-
throw new Error("User exist already.");
11+
throw Error("User is already registered");
1212
}
1313
const user = new User({
1414
email: args.userInput.email,
1515
password: args.userInput.password,
1616
username: args.userInput.username,
1717
});
18-
const result = await user.save();
19-
return { ...result._doc, password: null };
18+
const saveUser = await user.save();
19+
return { ...saveUser._doc };
2020
} catch (err) {
21+
console.log(err);
2122
throw err;
2223
}
2324
},
2425
login: async (args) => {
25-
const user = await User.findOne({ email: args.email });
26-
if (!user) {
27-
throw new Error("User not found");
28-
}
29-
const isequal = await bcrypt.compare(args.password, user.password);
30-
if (!isequal) {
31-
throw new Error("Password is Incorrect");
32-
}
33-
const token = jwt.sign(
34-
{
35-
userId: user.id,
36-
email: user.email,
37-
username: user.username
38-
},
39-
`${process.env.JWT_TOKEN}`,
40-
{
41-
expiresIn: "1h",
26+
try {
27+
const user = await User.findOne({ email: args.email });
28+
if (!user) {
29+
throw new Error("User not registered");
30+
}
31+
const isequal = await bcrypt.compare(args.password, user.password);
32+
if (!isequal) {
33+
throw new Error("Incorrect password provided");
4234
}
43-
);
44-
return { userId: user.id, token: token, tokenexpiration: 1, username:user.username};
35+
const token = jwt.sign(
36+
{
37+
userId: user.id,
38+
email: user.email,
39+
username: user.username,
40+
},
41+
`${process.env.JWT_SECRET}`,
42+
{
43+
algorithm: "HS256",
44+
expiresIn: "1h",
45+
}
46+
);
47+
return {
48+
userId: user.id,
49+
username: user.username,
50+
token: token,
51+
tokenexpiration: 1,
52+
};
53+
} catch (err) {
54+
console.log(err);
55+
throw err;
56+
}
4557
},
4658
};

graphql/resolvers/category.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,26 @@ module.exports = {
44
categories: async () => {
55
try {
66
let categories = await Category.find();
7-
return categories.map((result) => {
8-
return { ...result._doc };
7+
return categories.map((category) => {
8+
return { ...category._doc };
99
});
1010
} catch (err) {
11+
console.log(err);
1112
throw err;
1213
}
1314
},
14-
createCategories: async (args,req) => {
15-
if(!req.isAuth){
16-
throw new Error('Not Authenticated!')
15+
createCategories: async (args, req) => {
16+
if (!req.isAuth) {
17+
throw new Error("Please login to continue");
1718
}
1819
try {
1920
let category = new Category({
2021
categoryName: args.categoryInput.categoryName,
2122
});
22-
let result = await category.save();
23-
return { ...result._doc };
23+
let saveCategory = await category.save();
24+
return { ...saveCategory._doc };
2425
} catch (err) {
26+
console.log(err);
2527
throw err;
2628
}
2729
},

graphql/resolvers/index.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
const topicResolver = require('./topic');
2-
const categoryResolver = require('./category');
3-
const authResolver = require('./auth')
1+
const topicResolver = require("./topic");
2+
const categoryResolver = require("./category");
3+
const authResolver = require("./auth");
4+
const messageResolver = require("./message");
45

56
const rootResolver = {
7+
...messageResolver,
68
...topicResolver,
79
...categoryResolver,
8-
...authResolver
9-
}
10+
...authResolver,
11+
};
1012

11-
module.exports = rootResolver;
13+
module.exports = rootResolver;

0 commit comments

Comments
 (0)