Skip to content

Commit 9c39839

Browse files
author
WebDeveloperGuide
committed
Added Routes and functionality for Add/Update/Delete Products, Orders and Cart
Added CORS for allowed to access from different location
1 parent 4ada3a9 commit 9c39839

File tree

10 files changed

+445
-13
lines changed

10 files changed

+445
-13
lines changed

web_services/.env

Lines changed: 0 additions & 4 deletions
This file was deleted.

web_services/index.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,13 @@ const express = require('express');
22
const app = express();
33
const mongoose = require("mongoose");
44
const dotenv = require("dotenv");
5+
const cors = require("cors");
56
const authRoute = require("./routes/auth");
67
const userRoute = require("./routes/user");
8+
const productRoute = require("./routes/product");
9+
const cartRoute = require("./routes/cart");
10+
const orderRoute = require("./routes/order");
11+
const stripeRoute = require("./routes/stripe");
712

813
// Read value from .env file
914
dotenv.config();
@@ -16,12 +21,19 @@ mongoose.connect(process.env.DB_URL_DEVELOPMENT)
1621
console.log(err)
1722
})
1823

24+
//Allow to call from different source
25+
app.use(cors());
1926
// parse requests of content-type - application/json, Read JSON data from request
2027
app.use(express.json());
2128

2229
//Use routes
2330
app.use("/api/auth",authRoute);
2431
app.use("/api/users",userRoute);
32+
app.use("/api/products",productRoute);
33+
app.use("/api/carts",cartRoute);
34+
app.use("/api/orders",orderRoute);
35+
app.use("/api/checkout",stripeRoute);
36+
2537

2638
//Read PORT from .env file OR Default set 5002
2739
const API_PORT = process.env.API_PORT || 5002;

web_services/models/Order.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ const OrderSchema = new mongoose.Schema(
1414
}
1515

1616
}
17-
]
17+
],
18+
amount: {type:Number, required:true},
19+
address: {type:Object, required:true},
20+
status: {type:String, default:"pending"}
1821
},
19-
amount: {type:Number, required:true},
20-
address: {type:Object, required:true},
21-
status: {type:String, default:"pending"},
22-
{timestamps:true}
22+
{timestamps:true}
2323
);
2424

25-
module.exports = mongoose.model("Cart",OrderSchema);
25+
module.exports = mongoose.model("Order",OrderSchema);

web_services/package-lock.json

Lines changed: 58 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

web_services/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@
1010
"author": "WebDeveloperGuide",
1111
"license": "ISC",
1212
"dependencies": {
13+
"cors": "^2.8.5",
1314
"crypto-js": "^4.1.1",
1415
"dotenv": "^16.0.0",
1516
"express": "^4.17.3",
1617
"jsonwebtoken": "^8.5.1",
1718
"mongoose": "^6.2.3",
18-
"nodemon": "^2.0.15"
19+
"nodemon": "^2.0.15",
20+
"stripe": "^8.204.0"
1921
}
2022
}

web_services/routes/cart.js

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
const express = require('express');
2+
const router = express.Router();
3+
const Cart = require("../models/Cart");
4+
const {verifyToken,verifyTokenAndAuthorization,verifyTokenAndAdmin} = require("./verifyToken");
5+
6+
//Create Cart
7+
router.post("/",verifyToken, async (req,res)=>{
8+
const newCart = new Cart(req.body);
9+
10+
try{
11+
const savedCart = await newCart.save();
12+
res.status(200).json({status:1,message:"Cart added successfully",data:[savedCart]})
13+
14+
}catch(err){
15+
res.status(500).json({status:0,message:err.message})
16+
}
17+
});
18+
19+
// Update Product
20+
router.put("/:id",verifyTokenAndAuthorization,async (req,res)=>{
21+
22+
try{
23+
const updatedCart = await Cart.findByIdAndUpdate(req.params.id,{
24+
$set:req.body
25+
},{new:true});
26+
27+
if(updatedCart == null){
28+
res.status(200).json({success:0,message:"No Data Found!"});
29+
}else{
30+
res.status(200).json({success:1,message:"Cart updated successfully",data:[updatedCart]})
31+
}
32+
33+
}catch(err){
34+
res.status(500).json({status:0,message:err.message})
35+
}
36+
});
37+
38+
39+
//Get All Products
40+
router.get("/",verifyTokenAndAdmin, async (req,res)=>{
41+
42+
try{
43+
const cartData = await Cart.find();
44+
45+
if(cartData){
46+
res.status(200).json({success:1,message:"",data:cartData});
47+
}else{
48+
res.status(200).json({success:0,message:"No Data Found!"})
49+
}
50+
51+
}catch(err){
52+
res.status(500).json({status:0,message:err.message})
53+
}
54+
})
55+
56+
//Get User Cart
57+
router.get("/find/:userId", verifyTokenAndAuthorization, async (req,res)=>{
58+
59+
try{
60+
const cartData = await Cart.findOne({ userId: req.params.userId });
61+
62+
if(cartData){
63+
res.status(200).json({success:1,message:"",data:[cartData]});
64+
}else{
65+
res.status(200).json({success:0,message:"No Data Found!"})
66+
}
67+
68+
}catch(err){
69+
res.status(500).json({status:0,message:err.message})
70+
}
71+
})
72+
73+
74+
// Delete Product
75+
router.delete("/:id",verifyTokenAndAuthorization,async (req,res)=>{
76+
77+
try{
78+
const deletedCart = await Cart.findByIdAndDelete(req.params.id);
79+
80+
if(deletedCart == null){
81+
res.status(200).json({success:0,message:"No Data Found!"});
82+
}else{
83+
res.status(200).json({success:1,message:"Cart deleted successfully"});
84+
}
85+
86+
}catch(err){
87+
res.status(500).json({status:0,message:err.message})
88+
}
89+
});
90+
91+
module.exports = router;

0 commit comments

Comments
 (0)