const express = require("express"); const mongoose = require("mongoose"); const dotenv = require("dotenv"); const morgan = require("morgan"); // Load environment variables dotenv.config(); const app = express(); const PORT = process.env.PORT || 3000; // Middleware app.use(express.json()); // Parse JSON request body app.use(morgan("dev")); // Logging middleware // Connect to MongoDB Atlas mongoose .connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true, }) .then(() => console.log("MongoDB Connected Successfully!")) .catch((err) => console.error("MongoDB Connection Error:", err)); // User Schema & Model const userSchema = new mongoose.Schema({ name: String, email: String, age: Number, }); const User = mongoose.model("User", userSchema); // Routes // Create a new user (POST) app.post("/users", async (req, res) => { try { const newUser = new User(req.body); await newUser.save(); res.status(201).json(newUser); } catch (err) { res.status(500).json({ error: err.message }); } }); // Get all users (GET) app.get("/users", async (req, res) => { try { const users = await User.find(); res.json(users); } catch (err) { res.status(500).json({ error: err.message }); } }); // Update a user (PUT) app.put("/users/:id", async (req, res) => { try { const updatedUser = await User.findByIdAndUpdate(req.params.id, req.body, { new: true, }); res.json(updatedUser); } catch (err) { res.status(500).json({ error: err.message }); } }); // Start the server and export it for testing const server = app.listen(PORT, () => { console.log(`Server running on http://localhost:${PORT}`); }); // Export both app and server for testing module.exports = { app, server };