first commit
This commit is contained in:
commit
55d9a9d472
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
node_modules
|
||||||
|
.env
|
31
app.js
Normal file
31
app.js
Normal 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
12
config/db.js
Normal 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;
|
66
controllers/userController.js
Normal file
66
controllers/userController.js
Normal 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
19
models/User.js
Normal 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
1357
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
20
package.json
Normal file
20
package.json
Normal 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
9
routes/userRoutes.js
Normal 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)
|
Loading…
Reference in a new issue