Skip to content

Commit 7ebc306

Browse files
committed
feat: Add global database connection middleware and clean up unused routes and functions
1 parent 96bf90a commit 7ebc306

File tree

5 files changed

+25
-21
lines changed

5 files changed

+25
-21
lines changed

server/app.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import typeSenseRoutes from "./routes/typeSenseRoutes.js";
1717
import { startStreakCronJob } from './utils/streakResetJob.js';
1818
import { appLifecycle } from './utils/appLifecycle.js';
1919
import { globalErrorHandler } from './middleware/errorHandler.js';
20+
import { ensureDbConnection } from './lib/db.js';
2021
dotenv.config();
2122

2223
const app = express();
@@ -55,6 +56,9 @@ app.use(express.urlencoded({ limit: '5mb', extended: false }));
5556
app.use(cookieParser());
5657
app.use(passport.initialize());
5758

59+
// Global database connection middleware for all routes
60+
app.use(ensureDbConnection);
61+
5862

5963
app.use('/api/auth', authRoutes);
6064
app.use('/api/profile', profileRoutes);

server/controllers/leaderboardController.js

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,6 @@ import { User } from "../models/User.js";
22
import { calculatePoints } from "../utils/pointsCalculator.js"; // Adjust the path
33
import { updateRanks, getCachedLeaderboard } from "../utils/leaderBoardCache.js";
44

5-
export const setDummyData = async (req, res) => {
6-
try {
7-
const dummyUsers = req.body;
8-
const insertedUsers = await User.insertMany(dummyUsers);
9-
10-
res.status(201).json({
11-
message: "Dummy users inserted successfully",
12-
data: insertedUsers,
13-
});
14-
} catch (error) {
15-
// console.error(error);
16-
res.status(500).json({ message: 'Server error' });
17-
}
18-
};
195

206
export const updateUserPoints = async (req, res) => {
217
try {

server/lib/db.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const connectDB = async () => {
99
maxPoolSize: 10,
1010
serverSelectionTimeoutMS: 30000,
1111
socketTimeoutMS: 45000,
12-
bufferCommands: false,
12+
bufferCommands: true,
1313
};
1414

1515
const conn = await mongoose.connect(process.env.MONGO_URI, connectionOptions);
@@ -46,4 +46,21 @@ const connectDB = async () => {
4646
}
4747
}
4848

49-
export default connectDB;
49+
export default connectDB;
50+
51+
// Middleware to ensure database connection for serverless environments
52+
export const ensureDbConnection = async (req, res, next) => {
53+
try {
54+
if (mongoose.connection.readyState !== 1) {
55+
console.log('Database not connected, attempting to reconnect...');
56+
await connectDB();
57+
}
58+
next();
59+
} catch (error) {
60+
console.error('Database connection middleware error:', error);
61+
res.status(500).json({
62+
error: 'Database connection error',
63+
message: 'Service temporarily unavailable'
64+
});
65+
}
66+
};

server/routes/leaderboardRoutes.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11

22
import express from "express";
33
import { protect } from "../middleware/auth.js";
4-
import { getLeaderboardData, setDummyData,updateUserPoints } from "../controllers/leaderboardController.js";
4+
import { getLeaderboardData, updateUserPoints } from "../controllers/leaderboardController.js";
55

66
const router = express.Router();
77

8-
//http://localhost:5000/api/leaderboard/dummy
9-
router.post('/dummy', setDummyData);
10-
118
router.get("/", getLeaderboardData);
129

1310
// POST update user points (protected route)

server/routes/userRoutes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const router = express.Router();
66
router.get("/:username", async (req, res) => {
77
try {
88
const { username } = req.params;
9-
const user = await User.findOne({ username }).select("-password -gfg -codechef -otp -otpExpires -isVerified -createdAt -updatedAt -resetPasswordToken -resetPasswordExpires -googleId -githubId"); // Exclude sensitive fields
9+
const user = await User.findOne({ username }).select("-password -gfg -codechef -otp -otpExpires -isVerified -createdAt -updatedAt -resetPasswordToken -resetPasswordExpires -googleId -githubId");
1010
if (!user) {
1111
return res.status(404).json({ message: "User not found" });
1212
}

0 commit comments

Comments
 (0)