-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
82 lines (69 loc) · 2.67 KB
/
server.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
73
74
75
76
77
78
79
80
81
82
const express = require("express");
const app = express();
const dotenv = require("dotenv")
const mongoose = require("mongoose")
const userRoute = require("./routes/user.route.js")
const conversationRoute = require("./routes/conversation.route.js")
const gigRoute = require("./routes/gig.route.js")
const messageRoute = require("./routes/message.route.js")
const orderRoute = require("./routes/order.route.js")
const reviewRoute = require("./routes/review.route.js")
const authroute = require("./routes/auth.route.js")
const cookieParser = require("cookie-parser")
const cors = require('cors')
dotenv.config()
const connectWithRetry = async() => {
try{
await mongoose.connect( process.env.MONGO );
console.log("winner winner chicken dinner !!!!!!");
}catch(err){
console.log("failed to connect to mongoDB on startup - retrying in 5 seconds");
setTimeout(connectWithRetry , 5000)
}
};
const port = process.env.PORT;
const allowedOrigins = [
'https://playsoft-client.vercel.app', // Make sure this matches exactly
'https://playsoft-client-8bxyvbb3k-karthikeyan-v-maxs-projects.vercel.app/', // Include any other allowed origins if needed
'https://playsoft-client-git-main-karthikeyan-v-maxs-projects.vercel.app/',
'https://playsoft-client-karthikeyan-v-maxs-projects.vercel.app/',
'http://localhost:5173'
];
app.use(cookieParser())
app.use(express.json());
app.use(cors({
origin: (origin, callback) => {
// checks the incoming reqest origin is not undefined or the origin is not present in the above allowed origin array
if (!origin || allowedOrigins.indexOf(origin) !== -1) {
callback(null, true);
} else {
callback(new Error('Not allowed by CORS'));
}
},
methods: ["GET", "POST", "PUT", "DELETE"],
credentials: true,
optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
}));
app.use("/api/auth",authroute)
app.use("/api/users",userRoute);
app.use("/api/conversation",conversationRoute);
app.use("/api/message",messageRoute);
app.use("/api/order",orderRoute);
app.use("/api/review",reviewRoute);
app.use("/api/gigs",gigRoute);
app.get("/",(req,res)=>{
res.json("Hello");
})
// Global error handling middleware
app.use((err,req,res,next)=>{
const errorStatus = err.status || 500;
if (err.message === "Operation `users.findOne()` buffering timed out after 10000ms"){
err.message = "Your database is not connected or cannot get the User from the database"
}
const errorMessage = err.message || "Something went wrong";
return res.status(errorStatus).send(errorMessage);
})
app.listen(port,()=>{
console.log(`hey man I'm running at port ${port} so you go continue your work`);
connectWithRetry();
})