From 8b50acdb16f933fa59d4e09784420df30f6b80dd Mon Sep 17 00:00:00 2001 From: KayPrime Date: Fri, 21 Jun 2024 15:38:47 +0100 Subject: [PATCH] update: update routes, add new routes and controllers --- controllers/adminControllers.js | 20 ++++++++++++++++---- index.js | 5 +++-- middlewares/authentication.js | 9 ++++++--- middlewares/multer.js | 8 ++++---- routes/adminRoutes.js | 3 ++- utils/adminValidations.js | 16 ++-------------- utils/foodValidations.js | 8 +------- 7 files changed, 34 insertions(+), 35 deletions(-) diff --git a/controllers/adminControllers.js b/controllers/adminControllers.js index 8d820cb..8e354c2 100644 --- a/controllers/adminControllers.js +++ b/controllers/adminControllers.js @@ -135,7 +135,7 @@ export const createFood = catchErrorFunc(async (req, res) => { const { name, category, stock, priceInCents, discountPercentage } = req.body; const { id } = req.verifiedAdmin; - if (req.files.length < 1) + if (!req.files || req.files.length < 1) throw new AppError( "1201", 400, @@ -156,7 +156,8 @@ export const createFood = catchErrorFunc(async (req, res) => { ); } - const foodImages = req.files.map((file) => file.path); + const foodImages = req.files?.map((file) => file.path); + console.log(req.files); /* create new food */ const newFood = await FoodModel.create({ name, @@ -169,7 +170,7 @@ export const createFood = catchErrorFunc(async (req, res) => { lastUpdatedBy: id, }); - res.status(201).json({ success: true, foodDetails: newFood.toJSON() }); + res.status(201).json({ success: true, data: newFood.toJSON() }); }); /* DELETE FOOD CONTROLLER */ @@ -265,4 +266,15 @@ export const approveRider = catchErrorFunc(async (req, res) => { }); }); -export const ex = catchErrorFunc(async (req, res) => {}); +export const getPendingRiders = catchErrorFunc(async (req, res) => { + const page = Math.abs(Number(req.query.page)) || 0; + const limit = Math.abs(Number(req.query.limit)) || 20; + + const rider = await RiderModel.find( + { status: "PENDING" }, + { createdBy: 0, lastUpdatedBy: 0 }, + { limit, skip: page * limit } + ); + res.status(200).json({ success: true, data: { rider, limit, page } }); +}); +// export const ex = catchErrorFunc(async (req, res) => {}); diff --git a/index.js b/index.js index 09de4e5..e2bfb25 100644 --- a/index.js +++ b/index.js @@ -17,14 +17,15 @@ const app = express(); app .use( cors({ - origin: "https://food-app-front-end-sand.vercel.app", + // origin: "https://food-app-front-end-sand.vercel.app", + origin: "http://localhost:3000", credentials: true, }) ) .use(morgan("dev")) // Logging requests and response .use(express.json()) // Parse incoming requests with JSON payload .use(express.urlencoded({ extended: true })) // Parses incoming requests with urlencoded payloads - .use("/images", express.static("public")) + .use("/images/public", express.static("public")) /* Router for admin routes */ .use(apiPrefixes.generalApi, generalRouter) diff --git a/middlewares/authentication.js b/middlewares/authentication.js index fd34cbb..a706028 100644 --- a/middlewares/authentication.js +++ b/middlewares/authentication.js @@ -14,7 +14,8 @@ export async function verifyAdmin(req, res, next) { } catch (error) { res.status(400).json({ success: false, - message: "Cannot verify token. token is invalid or expired", + message: + "Protected Router. No token is provided, or provided key is invalid or expired", }); } } @@ -31,7 +32,8 @@ export async function verifyRider(req, res, next) { } catch (error) { res.status(400).json({ success: false, - message: "Cannot verify token. token is invalid or expired", + message: + "Protected Router. No token is provided, or provided key is invalid or expired", }); } } @@ -48,7 +50,8 @@ export async function verifyUser(req, res, next) { } catch (error) { res.status(400).json({ success: false, - message: "Cannot verify token. token is invalid or expired", + message: + "Protected Router. No token is provided, or provided key is invalid or expired", }); } } diff --git a/middlewares/multer.js b/middlewares/multer.js index de48cde..391fc0b 100644 --- a/middlewares/multer.js +++ b/middlewares/multer.js @@ -5,7 +5,7 @@ import path from "path"; /* multer storage for admin signup */ const adminSignupStorage = multer.diskStorage({ destination(req, file, cb) { - cb(null, "uploads/admin"); + cb(null, "public/uploads/admin"); }, filename: async (req, file, cb) => { try { @@ -52,7 +52,7 @@ export const adminSignupUpload = multer({ /* Multer storage for new food */ const createFoodStorage = multer.diskStorage({ destination(req, file, cb) { - cb(null, "uploads/food"); + cb(null, "public/uploads/food"); }, filename: async (req, file, cb) => { try { @@ -89,11 +89,11 @@ export const createFoodUlpoad = multer({ ); } }, -}).array("images", 5); +}).array("images[]", 5); const userSignupStorage = multer.diskStorage({ destination(req, file, cb) { - cb(null, "uploads/users"); + cb(null, "public/uploads/users"); }, filename: async (req, file, cb) => { try { diff --git a/routes/adminRoutes.js b/routes/adminRoutes.js index 911072b..bcc0c1e 100644 --- a/routes/adminRoutes.js +++ b/routes/adminRoutes.js @@ -6,6 +6,7 @@ import { createFood, deleteFood, getAdmin, + getPendingRiders, } from "../controllers/adminControllers.js"; import { adminSignupUpload, createFoodUlpoad } from "../middlewares/multer.js"; import { verifyAdmin } from "../middlewares/authentication.js"; @@ -26,7 +27,7 @@ adminRouter .put("/approve-rider", approveRider) .post("/suspend-user") .post("/unsuspend-user") - .get("/pending-riders") + .get("/pending-riders", getPendingRiders) .get("/riders") .post("/suspend-rider") .post("unsuspend-rider"); diff --git a/utils/adminValidations.js b/utils/adminValidations.js index bed2851..c925cd2 100644 --- a/utils/adminValidations.js +++ b/utils/adminValidations.js @@ -87,13 +87,7 @@ export function validateAdminSignupReqBody(data) { return result.data; } else { const details = result.error.issues.map((issue) => issue.message); - throw new AppError( - "1000", - 400, - "ValidationError", - "Incomplete or invalid sign up body", - details - ); + throw new AppError("1000", 400, "ValidationError", details[0], details); } } @@ -104,12 +98,6 @@ export function validateAdminLoginReqBody(data) { return result.data; } else { const details = result.error.issues.map((issue) => issue.message); - throw new AppError( - "1001", - 400, - "ValidationError", - "Incomplete or invalid login body", - details - ); + throw new AppError("1001", 400, "ValidationError", details[0], details); } } diff --git a/utils/foodValidations.js b/utils/foodValidations.js index b1710d3..b03fd6d 100644 --- a/utils/foodValidations.js +++ b/utils/foodValidations.js @@ -55,12 +55,6 @@ export function validateNewFoodReqBody(data) { return result.data; } else { const details = result.error.issues.map((issue) => issue.message); - throw new AppError( - "1001", - 400, - "ValidationError", - "Incomplete or invalid login body", - details - ); + throw new AppError("1001", 400, "ValidationError", details[0], details); } }