Skip to content

Commit 4b43cb0

Browse files
committed
components: address[address(controller + router + validation)]
1 parent 40aadc4 commit 4b43cb0

File tree

4 files changed

+86
-0
lines changed

4 files changed

+86
-0
lines changed

components/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
## APIS
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { catchAsyncError } from '../../utils/catch_async_error';
2+
import { AppError } from '../../utils/app_error'
3+
import { userModel } from '../../models/user_model';
4+
5+
const addAddress = catchAsyncError(async (req, res, next) => {
6+
const addAddress = await userModel.findByIdAndUpdate(
7+
req.user._id,
8+
{ $addToSet: { addresses: req.body } },
9+
{
10+
new: true,
11+
}
12+
);
13+
14+
addAddress &&
15+
res
16+
.status(201)
17+
.json({ message: "success", addAddress: addAddress.addresses });
18+
19+
!addAddress && next(new AppError("Address was not found", 404));
20+
});
21+
22+
const removeAddress = catchAsyncError(async (req, res, next) => {
23+
const removeAddress = await userModel.findByIdAndUpdate(
24+
req.user._id,
25+
{ $pull: { addresses: { _id: req.body.address } } },
26+
{
27+
new: true,
28+
}
29+
);
30+
31+
removeAddress &&
32+
res.status(201).json({
33+
message: "success",
34+
removeAddress: removeAddress.addresses,
35+
});
36+
37+
!removeAddress && next(new AppError("Address was not found", 404));
38+
});
39+
40+
const getAllAddresses = catchAsyncError(async (req, res, next) => {
41+
const getAllAddresses = await userModel.findOne({ _id: req.user._id });
42+
43+
getAllAddresses &&
44+
res.status(201).json({
45+
message: "success",
46+
getAllAddresses: getAllAddresses.addresses,
47+
});
48+
49+
!getAllAddresses && next(new AppError("WishList was not found", 404));
50+
});
51+
52+
export { addAddress, removeAddress, getAllAddresses };

components/address/address_router.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import express from "express";
2+
import { validate } from "../../middlewares/validate.js";
3+
import { allowedTo, protectedRoutes } from "../auth/auth.controller.js";
4+
import * as address from "../address/address.controller.js";
5+
import {
6+
addAddressValidation,
7+
deleteAddressValidation,
8+
} from "./address.validation.js";
9+
10+
const addressRouter = express.Router();
11+
12+
addressRouter.route("/").patch(protectedRoutes, allowedTo("user"), validate(addAddressValidation), address.addAddress).delete(protectedRoutes,
13+
allowedTo("user"),
14+
validate(deleteAddressValidation),
15+
address.removeAddress
16+
)
17+
.get(protectedRoutes, allowedTo("user"), address.getAllAddresses);
18+
19+
export default addressRouter;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import Joi from "joi";
2+
3+
const addAddressValidation = Joi.object({
4+
city: Joi.string(),
5+
street: Joi.string(),
6+
phone: Joi.string()
7+
8+
});
9+
10+
const deleteAddressValidation = Joi.object({
11+
address: Joi.string().hex().length(24).required(),
12+
});
13+
14+
export { addAddressValidation, deleteAddressValidation };

0 commit comments

Comments
 (0)