first commit

This commit is contained in:
jaanvi 2025-06-02 18:54:59 +05:30
commit 55d9a9d472
8 changed files with 1516 additions and 0 deletions

2
.gitignore vendored Normal file
View file

@ -0,0 +1,2 @@
node_modules
.env

31
app.js Normal file
View file

@ -0,0 +1,31 @@
require("dotenv").config();
const express = require("express");
const connectDB= require("./config/db");
const userRoutes= require("./routes/userRoutes");
const app= express();
const PORT = process.env.PORT || 5000;
//DB connection:Done
connectDB();
//Routes
app.use("/api/users",userRoutes);
app.listen(PORT,()=>{
console.log(`Server is running on port ${PORT}`);
})
// const logger = require("./middleware/logger");
// const userRoutes = require("./routes/userRoutes");
// const app = express();
// const PORT = process.env.PORT || 5000;
// connectDB();
// app.use(express.json());
// app.use(logger); // custom middleware
// app.use("/api/users", userRoutes);
// app.listen(PORT, () => {
// console.log(`Server is running on port ${PORT}`);
// });

12
config/db.js Normal file
View file

@ -0,0 +1,12 @@
const mongoose = require("mongoose");
const connectDB = async()=>{
try{
await mongoose.connect(process.env.MONGO_URI);
console.log("MongoDB connected!");
}catch(err){
console.error("DB connection failed:",err.message);
process.exit(1);
}
}
module.exports = connectDB;

View file

@ -0,0 +1,66 @@
const User = require("../models/User");
//POST
const createUser = async (req, res) => {
try {
const user = await User.create(req.body);
res.status(201).json(user);
} catch (err) {
res.status(400).json({ error: err.message });
}
};
//GET
const getUsers = async (req, res) => {
try {
const users = await User.find();
res.status(200).json(users);
} catch (err) {
res.status(400).json({ error: err.message });
}
};
//GET by id
const getUserById = async (req,res)=>{
try {
const user = await User.findById(req.params.id);
if(!user){
return res.status(404).json({error: "User not found"})
}
res.status(200).json(user);
} catch (err) {
res.status(400).json({ error: err.message });
}
};
//UPDATE
const updateUser = async(req,res)=>{
try {
const user = await User.findByIdAndUpdate(req.params.id,req.body,{
new:true,
});
res.status(200).json(user);
} catch (err) {
res.status(400).json({ error: err.message });
}
};
//DELETE
const deleteUser= async(req,res)=>{
try {
const user = await User.findByIdAndDelete(req.params.id);
if(!user){
return res.status(404).json({message: "User not found"});
}
} catch (error) {
res.status(400).json({ error: err.message });
}
}
module.exports = {
createUser,
getUsers,
getUserById,
updateUser,
deleteUser
};

19
models/User.js Normal file
View file

@ -0,0 +1,19 @@
const mongoose = require("mongoose");
const userSchema = new mongoose.Schema({
first_name:{
type:String,
required:true
},
last_name:{
type:String,
},
email:{
type:String,
required:true,
unique:true
},
age:{
type:Number
}
})
module.exports = mongoose.model("User",userSchema);

1357
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

20
package.json Normal file
View file

@ -0,0 +1,20 @@
{
"name": "mini-crud",
"version": "1.0.0",
"main": "app.js",
"scripts": {
"start":"nodemon app.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"dotenv": "^16.5.0",
"express": "^5.1.0",
"mongodb": "^6.16.0",
"mongoose": "^8.15.1",
"nodemon": "^3.1.10"
}
}

9
routes/userRoutes.js Normal file
View file

@ -0,0 +1,9 @@
const express = require("express");
const { createUser, getUsers, getUserById, updateUser, deleteUser } = require("../controllers/userController");
const router =express.Router();
router.post("/", createUser);
router.get('/',getUsers);
router.get('/:id',getUserById);
router.put('/:id',updateUser);
router.delete(':/id',deleteUser)