Untitled
unknown
plain_text
5 months ago
4.7 kB
4
Indexable
const express = require("express"); const { body, validationResult } = require("express-validator"); const SelectedLeagues = require("../../models/SelectedLeagues"); const { redisCacheServer } = require("../../utils/getAxios"); const router = express.Router(); // Validation middleware const validate = (validations) => { return async (req, res, next) => { await Promise.all(validations.map((validation) => validation.run(req))); const errors = validationResult(req); if (errors.isEmpty()) { return next(); } res.status(400).json({ errors: errors.array() }); }; }; // Validation rules const validateSelectedLeague = [ body("id").isNumeric(), body("name").notEmpty(), body("logo").notEmpty(), body("status").isString() ]; // Get all selected leagues and sort by position router.get("/", async (req, res, next) => { try { const selectedLeagues = await SelectedLeagues.find().sort({ position: 1 }); // Sort by position ascending // Remove unwanted fields from selectedLeagues const sanitizedLeagues = selectedLeagues.map((league) => { const { createdAt, status, position, updatedAt, __v, ...rest } = league.toObject(); return rest; }); res.json({ status: true, message: "Selected leagues fetched and sorted", data: sanitizedLeagues }); } catch (error) { next(error); } }); // Get a specific selected league router.get("/:id", async (req, res, next) => { try { const selectedLeague = await SelectedLeagues.findById(req.params.id); res.json({ status: true, message: "Selected leagues fetched", data: selectedLeague }); } catch (error) { next(error); } }); // Create a new selected league router.post("/", validate(validateSelectedLeague), async (req, res, next) => { const LeagueData = { id: req.body.id, name: req.body.name, logo: req.body.logo, status: req.body.status || "1", position: req.body.position || 9999999 }; // Create a new selected league const selectedLeague = new SelectedLeagues(LeagueData); try { const newSelectedLeague = await selectedLeague.save(); console.log("newSelectedLeague", newSelectedLeague); const cacheRes = await redisCacheServer.post("api/league", LeagueData); console.log("Cache res", cacheRes); res.status(201).json({ status: true, message: "Selected leagues created", data: newSelectedLeague }); } catch (error) { next(error); } }); // Update a selected league router.patch("/:id", validate(validateSelectedLeague), async (req, res, next) => { try { const updatedSelectedLeague = await SelectedLeagues.findByIdAndUpdate( req.params.id, { id: req.body.id, name: req.body.name, logo: req.body.logo, status: req.body.status || "1", position: req.body.position || 9999999 }, { new: true } ); if (!updatedSelectedLeague) { return res.status(404).json({ status: false, message: "Selected league not found" }); } res.json({ status: true, message: "Selected leagues Updated", data: updatedSelectedLeague }); } catch (error) { next(error); } }); // Delete a selected league router.delete("/:id", async (req, res, next) => { try { const deletedSelectedLeague = await SelectedLeagues.findByIdAndDelete(req.params.id); const data = { id: deletedSelectedLeague.id }; console.log("leagueDelete", data); if (!deletedSelectedLeague) { return res.status(404).json({ status: false, message: "Selected league not found" }); } else { const leagueDelete = await redisCacheServer.delete(`api/league/delete/${deletedSelectedLeague.id}`); return res.json({ status: true, message: "Selected league deleted successfully" }); } } catch (error) { next(error); } }); // Sort Selected Leagues router.post("/sort", async (req, res, next) => { try { let leagueData = req.body; await Promise.all( leagueData.map(async (league) => { const sortedLeagues = await SelectedLeagues.findByIdAndUpdate(league.id, { position: league.position }); return sortedLeagues; }) ); console.log("leagueData", leagueData); const sortLeague = await redisCacheServer.post("api/league/sort", leagueData); console.log("After sort", sortLeague); return res.status(200).json({ status: true, message: "Selected Leagues Sorted Successfully!" }); } catch (error) { console.error(error); next(error); } }); module.exports = router;
Editor is loading...
Leave a Comment