diff --git a/server.js b/server.js index 5bdc267..0a0b289 100644 --- a/server.js +++ b/server.js @@ -1,8 +1,7 @@ import 'dotenv/config'; import http from 'http'; import app from './src/app.js'; -import connectDB from './src/config/db.js'; - +import { connectDB, closeDB } from './src/config/db.js'; const PORT = process.env.PORT || 5000; const NODE_ENV = process.env.NODE_ENV || 'development'; @@ -34,10 +33,17 @@ const startServer = async() => { startServer(); +let isShuttingDown = false; + const shutdownGracefully = (exitCode = 0) => { + + if(isShuttingDown) return; + isShuttingDown = true; + if (server) { - server.close(() => { - console.log("Server closed gracefully"); + server.close(async () => { + await closeDB(); + console.log("Server and DB closed gracefully"); process.exit(exitCode); }); diff --git a/src/config/db.js b/src/config/db.js index e0916de..84b964f 100644 --- a/src/config/db.js +++ b/src/config/db.js @@ -10,4 +10,10 @@ const connectDB = async () => { } }; -export default connectDB; \ No newline at end of file +const closeDB = async () => { + await mongoose.connection.close(false); +} +export { + connectDB, + closeDB +}; \ No newline at end of file