Mohamed Abu Basith commited on
Commit
9f82759
·
1 Parent(s): 40c5a52

Address Changes

Browse files
Files changed (2) hide show
  1. Database/models/address.js +1 -1
  2. 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: Schema.Types.ObjectId,
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
- Promise.resolve(fn(req, res, next)).catch(next);
24
 
25
  // Validation middleware
26
  const validateAddressData = (req, res, next) => {
27
- const requiredFields = ['user', 'name', 'mobileNumber', 'pinCode', 'address'];
28
- const missingFields = requiredFields.filter(field => !req.body[field]);
29
-
30
- if (missingFields.length > 0) {
31
- return res.status(400).json(response.error(
32
- `Missing required fields: ${missingFields.join(', ')}`
33
- ));
34
- }
35
- next();
36
  };
37
 
38
  // Create address
39
  router.post("/", validateAddressData, asyncHandler(async (req, res) => {
40
- const newAddress = new Address(req.body);
41
- const savedAddress = await newAddress.save();
42
- res.status(201).json(response.success(savedAddress, "Address created successfully"));
 
 
 
 
43
  }));
44
 
45
  // Get addresses by user
46
  router.get("/user/:userId", asyncHandler(async (req, res) => {
47
- if (!mongoose.Types.ObjectId.isValid(req.params.userId)) {
48
- return res.status(400).json(response.error("Invalid user ID"));
49
- }
 
50
 
51
- const addresses = await Address.find({ user: req.params.userId });
52
- if (!addresses.length) {
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
- const addresses = await Address.find().populate('user', 'username email');
61
- res.json(response.success(addresses));
62
  }));
63
 
64
  // Update address
65
  router.put("/:id", validateAddressData, asyncHandler(async (req, res) => {
66
- if (!mongoose.Types.ObjectId.isValid(req.params.id)) {
67
- return res.status(400).json(response.error("Invalid address ID"));
68
- }
 
 
69
 
70
- const updatedAddress = await Address.findByIdAndUpdate(
71
- req.params.id,
72
- req.body,
73
- { new: true, runValidators: true }
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
- if (!mongoose.Types.ObjectId.isValid(req.params.id)) {
85
- return res.status(400).json(response.error("Invalid address ID"));
86
- }
87
-
88
- const deletedAddress = await Address.findByIdAndDelete(req.params.id);
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
- console.error(err.stack);
98
- res.status(500).json(response.error("Internal server error", 500));
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;