Spaces:
Sleeping
Sleeping
Mohamed Abu Basith
commited on
Commit
·
9f82759
1
Parent(s):
40c5a52
Address Changes
Browse files- Database/models/address.js +1 -1
- routes/address.js +43 -62
Database/models/address.js
CHANGED
@@ -3,7 +3,7 @@ const { Schema } = mongoose;
|
|
3 |
|
4 |
const addressSchema = new Schema({
|
5 |
user: {
|
6 |
-
type:
|
7 |
ref: 'User',
|
8 |
required: true
|
9 |
},
|
|
|
3 |
|
4 |
const addressSchema = new Schema({
|
5 |
user: {
|
6 |
+
type: Number,
|
7 |
ref: 'User',
|
8 |
required: true
|
9 |
},
|
routes/address.js
CHANGED
@@ -2,100 +2,81 @@ const express = require("express");
|
|
2 |
const router = express.Router();
|
3 |
const mongoose = require("mongoose");
|
4 |
const Address = require("../Database/models/address");
|
|
|
5 |
|
6 |
-
// Response helpers
|
7 |
-
const response = {
|
8 |
-
success: (data, message = "Success") => ({
|
9 |
-
status: "success",
|
10 |
-
code: 200,
|
11 |
-
data,
|
12 |
-
message
|
13 |
-
}),
|
14 |
-
error: (message = "Error", code = 400) => ({
|
15 |
-
status: "error",
|
16 |
-
code,
|
17 |
-
message
|
18 |
-
})
|
19 |
-
};
|
20 |
|
21 |
// Middleware for async error handling
|
22 |
-
const asyncHandler = fn => (req, res, next) =>
|
23 |
-
|
24 |
|
25 |
// Validation middleware
|
26 |
const validateAddressData = (req, res, next) => {
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
};
|
37 |
|
38 |
// Create address
|
39 |
router.post("/", validateAddressData, asyncHandler(async (req, res) => {
|
40 |
-
|
41 |
-
|
42 |
-
|
|
|
|
|
|
|
|
|
43 |
}));
|
44 |
|
45 |
// Get addresses by user
|
46 |
router.get("/user/:userId", asyncHandler(async (req, res) => {
|
47 |
-
|
48 |
-
|
49 |
-
|
|
|
50 |
|
51 |
-
|
52 |
-
|
53 |
-
return res.status(404).json(response.error("No addresses found", 404));
|
54 |
-
}
|
55 |
-
res.json(response.success(addresses));
|
56 |
}));
|
57 |
|
58 |
// Get all addresses
|
59 |
router.get("/", asyncHandler(async (req, res) => {
|
60 |
-
|
61 |
-
|
62 |
}));
|
63 |
|
64 |
// Update address
|
65 |
router.put("/:id", validateAddressData, asyncHandler(async (req, res) => {
|
66 |
-
|
67 |
-
|
68 |
-
|
|
|
|
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
);
|
75 |
-
|
76 |
-
if (!updatedAddress) {
|
77 |
-
return res.status(404).json(response.error("Address not found", 404));
|
78 |
-
}
|
79 |
-
res.json(response.success(updatedAddress, "Address updated successfully"));
|
80 |
}));
|
81 |
|
82 |
// Delete address
|
83 |
router.delete("/:id", asyncHandler(async (req, res) => {
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
if (!deletedAddress) {
|
90 |
-
return res.status(404).json(response.error("Address not found", 404));
|
91 |
-
}
|
92 |
-
res.json(response.success(null, "Address deleted successfully"));
|
93 |
}));
|
94 |
|
95 |
// Error handling middleware
|
96 |
router.use((err, req, res, next) => {
|
97 |
-
|
98 |
-
|
99 |
});
|
100 |
|
101 |
module.exports = router;
|
|
|
2 |
const router = express.Router();
|
3 |
const mongoose = require("mongoose");
|
4 |
const Address = require("../Database/models/address");
|
5 |
+
const { successResponse, failedResponse } = require("../utils/responseModel");
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
8 |
// Middleware for async error handling
|
9 |
+
const asyncHandler = fn => (req, res, next) =>
|
10 |
+
Promise.resolve(fn(req, res, next)).catch(next);
|
11 |
|
12 |
// Validation middleware
|
13 |
const validateAddressData = (req, res, next) => {
|
14 |
+
const requiredFields = ['user', 'name', 'mobileNumber', 'pinCode', 'address'];
|
15 |
+
const missingFields = requiredFields.filter(field => !req.body[field]);
|
16 |
+
|
17 |
+
if (missingFields.length > 0) {
|
18 |
+
return res.status(400).json(failedResponse(
|
19 |
+
`Missing required fields: ${missingFields.join(', ')}`
|
20 |
+
));
|
21 |
+
}
|
22 |
+
next();
|
23 |
};
|
24 |
|
25 |
// Create address
|
26 |
router.post("/", validateAddressData, asyncHandler(async (req, res) => {
|
27 |
+
const addressData = {
|
28 |
+
...req.body,
|
29 |
+
user: parseInt(req.body.user) // Convert to number
|
30 |
+
};
|
31 |
+
|
32 |
+
const newAddress = new Address(addressData);
|
33 |
+
res.status(201).json(successResponse("Address created successfully", newAddress));
|
34 |
}));
|
35 |
|
36 |
// Get addresses by user
|
37 |
router.get("/user/:userId", asyncHandler(async (req, res) => {
|
38 |
+
const userId = parseInt(req.params.userId);
|
39 |
+
if (isNaN(userId)) {
|
40 |
+
return res.status(400).json(response.error("Invalid user ID"));
|
41 |
+
}
|
42 |
|
43 |
+
const addresses = await Address.find({ user: userId });
|
44 |
+
res.json(successResponse("Success!", addresses));
|
|
|
|
|
|
|
45 |
}));
|
46 |
|
47 |
// Get all addresses
|
48 |
router.get("/", asyncHandler(async (req, res) => {
|
49 |
+
const addresses = await Address.find().populate('user', 'username email');
|
50 |
+
res.json(successResponse("Success!", addresses));
|
51 |
}));
|
52 |
|
53 |
// Update address
|
54 |
router.put("/:id", validateAddressData, asyncHandler(async (req, res) => {
|
55 |
+
const updatedAddress = await Address.findOneAndUpdate(
|
56 |
+
{ _id: req.params.id },
|
57 |
+
req.body,
|
58 |
+
{ new: true, runValidators: true }
|
59 |
+
);
|
60 |
|
61 |
+
if (!updatedAddress) {
|
62 |
+
return res.status(404).json(failedResponse("Address not found", 404));
|
63 |
+
}
|
64 |
+
res.json(successResponse("Address updated successfully", updatedAddress));
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}));
|
66 |
|
67 |
// Delete address
|
68 |
router.delete("/:id", asyncHandler(async (req, res) => {
|
69 |
+
const deletedAddress = await Address.findOneAndDelete({ _id: req.params.id });
|
70 |
+
if (!deletedAddress) {
|
71 |
+
return res.status(404).json(failedResponse("Address not found", 404));
|
72 |
+
}
|
73 |
+
res.json(successResponse("Address deleted successfully", null,));
|
|
|
|
|
|
|
|
|
74 |
}));
|
75 |
|
76 |
// Error handling middleware
|
77 |
router.use((err, req, res, next) => {
|
78 |
+
console.error(err.stack);
|
79 |
+
res.status(500).json(failedResponse("Internal server error", 500));
|
80 |
});
|
81 |
|
82 |
module.exports = router;
|