Spaces:
Running
Running
| const User = require('../models/userModel'); | |
| //address functions | |
| exports.addAddress = async (req, res) => { | |
| try { | |
| const user = await User.findByIdAndUpdate( | |
| req.user.id, | |
| { $push: { addresses: req.body } }, | |
| { new: true }, | |
| ); | |
| // Get the newly added address (last item in array) | |
| const newAddress = user.addresses[user.addresses.length - 1]; | |
| res.status(201).json({ | |
| status: 'success', | |
| message: 'Address added successfully', | |
| address: newAddress, | |
| }); | |
| } catch (err) { | |
| res.status(500).json({ status: 'error', error: err.message }); | |
| } | |
| }; | |
| exports.getAddresses = async (req, res) => { | |
| try { | |
| const user = await User.findById(req.user.id).select('addresses').lean(); | |
| res.json({ | |
| status: 'success', | |
| addresses: user.addresses || [], | |
| }); | |
| } catch (err) { | |
| res.status(500).json({ status: 'error', error: err.message }); | |
| } | |
| }; | |
| exports.updateAddress = async (req, res) => { | |
| try { | |
| const user = await User.findOneAndUpdate( | |
| { _id: req.user.id, 'addresses._id': req.params.id }, | |
| { $set: { 'addresses.$': { ...req.body, _id: req.params.id } } }, | |
| { new: true }, | |
| ); | |
| if (!user) { | |
| return res.status(404).json({ | |
| status: 'error', | |
| message: 'Address not found', | |
| }); | |
| } | |
| const updatedAddress = user.addresses.find( | |
| (addr) => addr._id.toString() === req.params.id, | |
| ); | |
| res.json({ | |
| status: 'success', | |
| message: 'Address updated successfully', | |
| address: updatedAddress, | |
| }); | |
| } catch (err) { | |
| res.status(500).json({ status: 'error', error: err.message }); | |
| } | |
| }; | |
| exports.deleteAddress = async (req, res) => { | |
| try { | |
| const user = await User.findByIdAndUpdate( | |
| req.user.id, | |
| { $pull: { addresses: { _id: req.params.id } } }, | |
| { new: true }, | |
| ); | |
| if (!user) { | |
| return res.status(404).json({ | |
| status: 'error', | |
| message: 'User not found', | |
| }); | |
| } | |
| res.json({ | |
| status: 'success', | |
| message: 'Address deleted successfully', | |
| }); | |
| } catch (err) { | |
| res.status(500).json({ status: 'error', error: err.message }); | |
| } | |
| }; | |