UNPKG

express-easy-curd

Version:

A lightweight helper library for building Express.js routes, controllers, and Redis-enhanced middleware with optional Redis support.

135 lines (134 loc) 5.51 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const mongoose_1 = require("mongoose"); const globalHelper_1 = require("../helpers/globalHelper"); const queryHelper_1 = require("../helpers/queryHelper"); const { ObjectId } = mongoose_1.Types; const globalController = (ModelName, name) => { return { // create create: (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { try { const data = yield ModelName.create(req.body); const payload = { success: true, message: `${name} created successfully`, data, }; (0, globalHelper_1.sendResponse)(res, 201, payload); return; } catch (error) { next(error); } }), // get all getAll: (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { try { // filter const pagination = (0, queryHelper_1.paginationHelper)(req.query); const { page, limit, skip, sortCondition, populate } = pagination; const filter = (0, queryHelper_1.filterHelper)(req.query, req.partialFilter || [], new ModelName()); const total = yield ModelName.countDocuments(filter); const data = yield ModelName.find(filter) .limit(limit) .skip(skip) .sort(sortCondition) .populate(populate || ""); // payload const payload = { success: true, message: `${name}s fetched successfully`, meta: { page, limit, total }, data, }; (0, globalHelper_1.sendResponse)(res, 200, payload); return; } catch (error) { next(error); } }), // get single getSingle: (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { try { const data = yield ModelName.findById(req.params.id); // const data = await service.getSingle(req.params.id); const payload = { success: true, message: `${name} fetched successfully`, data, }; (0, globalHelper_1.sendResponse)(res, 200, payload); return; } catch (error) { next(error); } }), // update single update: (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { try { const data = yield ModelName.findByIdAndUpdate(req.params.id, req.body, { new: true, runValidators: true }); if (!data) throw new globalHelper_1.ApiError(500, "Server Error"); const payload = { success: true, message: `${name} updated successfully`, data, }; (0, globalHelper_1.sendResponse)(res, 200, payload); return; } catch (error) { next(error); } }), // remove single remove: (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { try { const data = yield ModelName.findByIdAndDelete(req.params.id); const payload = { success: true, message: `${name} deleted successfully`, data, }; (0, globalHelper_1.sendResponse)(res, 200, payload); return; } catch (error) { next(error); } }), // remove all removeMany: (req, res, next) => __awaiter(void 0, void 0, void 0, function* () { try { const ids = req.body.ids; if (!Array.isArray(ids) || !ids.length) throw new globalHelper_1.ApiError(400, "No ids provided"); const filter = { _id: { $in: ids.map((id) => new ObjectId(id)) } }; const data = yield ModelName.deleteMany(filter); const payload = { success: true, message: `${name}s deleted successfully`, data, }; (0, globalHelper_1.sendResponse)(res, 200, payload); return; } catch (error) { next(error); } }), }; }; exports.default = globalController;