UNPKG

bapig

Version:

Welcome to BAPIG, a powerful backend solution designed to streamline your development process. With over 40 built-in functionalities, BAPIG simplifies CRUD operations, facilitates authentication and encryption, handles communication tasks, and much more.

1,041 lines (1,040 loc) 61.5 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()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.router = void 0; // Import required dependencies and modules var express_1 = require("express"); var fs_1 = __importDefault(require("fs")); var path_1 = __importDefault(require("path")); var markdown_it_1 = __importDefault(require("markdown-it")); var controllers_1 = require("../controllers"); var generateOTP_1 = require("../controllers/otp/generateOTP"); var helpers_1 = require("../helpers"); var fast_web_kit_1 = require("fast-web-kit"); // Initialize Express router var router = (0, express_1.Router)(); exports.router = router; // Route to display home page or README content router.get('/', function (_request, response) { try { var responseText = "<h1>BAPIG backend server</h1>"; var readmeFilePath = path_1.default.join(__dirname, '../../README.MD'); var readmeContent = fs_1.default.readFileSync(readmeFilePath, 'utf8'); if (readmeContent) { var htmlContent = new markdown_it_1.default().render(readmeContent); response.send(htmlContent); } else { response.send(responseText); } } catch (error) { sendErrorResponse(response, error); } }); // Route to create a single document router.post('/create', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_1; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decrypt)(request.body) : request.body; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.createSingleDocument(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.createSingleDocument(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_1 = _c.sent(); sendErrorResponse(response, error_1); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to bulk create documents router.post('/bulk-create', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_2; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decrypt)(request.body) : request.body; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.documentBulkCreate(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.documentBulkCreate(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_2 = _c.sent(); sendErrorResponse(response, error_2); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to read a single document router.get('/read', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_3; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decryptQuery)(request.query) : request.query; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.getSingleDocument(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.getSingleDocument(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_3 = _c.sent(); sendErrorResponse(response, error_3); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to update a single document router.put('/update', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_4; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decrypt)(request.body) : request.body; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.updateSingleDocument(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.updateSingleDocument(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_4 = _c.sent(); sendErrorResponse(response, error_4); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to bulk update documents router.put('/bulk-update', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_5; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decrypt)(request.body) : request.body; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.documentBulkUpdate(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.documentBulkUpdate(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_5 = _c.sent(); sendErrorResponse(response, error_5); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to delete a single document router.delete('/delete', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_6; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decryptQuery)(request.query) : request.query; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.deleteSingleDocument(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.deleteSingleDocument(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_6 = _c.sent(); sendErrorResponse(response, error_6); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to bulk delete documents router.delete('/bulk-delete', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var queries, result, _a, _b, error_7; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); queries = request.query.queries; queries = fast_web_kit_1.string.isValidJSON(queries) ? fast_web_kit_1.object.toObject(queries) : queries; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.documentBulkDelete((0, helpers_1.convertToArray)(queries))]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.documentBulkDelete(queries)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_7 = _c.sent(); sendErrorResponse(response, error_7); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to list documents router.get('/list', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_8; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decryptQuery)(request.query) : request.query; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.listDocuments(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.listDocuments(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_8 = _c.sent(); sendErrorResponse(response, error_8); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to count documents router.get('/count', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_9; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decryptQuery)(request.query) : request.query; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.countDocuments(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.countDocuments(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_9 = _c.sent(); sendErrorResponse(response, error_9); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to list all documents router.get('/list-all', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_10; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decryptQuery)(request.query) : request.query; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.listAllDocuments(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.listAllDocuments(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_10 = _c.sent(); sendErrorResponse(response, error_10); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // Route to validate a document router.get('/validate', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var requestData, result, _a, _b, error_11; return __generator(this, function (_c) { switch (_c.label) { case 0: _c.trys.push([0, 5, , 6]); requestData = helpers_1.hasEnableEncryption ? (0, helpers_1.decryptQuery)(request.query) : request.query; if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.validateDocument(requestData)]; case 1: _a = _b.apply(void 0, [_c.sent()]); return [3 /*break*/, 4]; case 2: return [4 /*yield*/, controllers_1.controllers.validateDocument(requestData)]; case 3: _a = _c.sent(); _c.label = 4; case 4: result = _a; response.status(200).json(result); return [3 /*break*/, 6]; case 5: error_11 = _c.sent(); sendErrorResponse(response, error_11); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // creating field encryption router.post('/create-field-encryption', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_12; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.createDocumentFieldEncryption((0, helpers_1.decrypt)(request.body))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.createDocumentFieldEncryption(request.body)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_12 = _f.sent(); sendErrorResponse(response, error_12); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // authenticating router.post('/authenticate', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_13; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.authenticate((0, helpers_1.decrypt)(request.body))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.authenticate(request.body)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_13 = _f.sent(); sendErrorResponse(response, error_13); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // validating field encryption router.get('/validate-field-encryption', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_14; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.validateDocumentFieldEncryption((0, helpers_1.decryptQuery)(request.query))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.validateDocumentFieldEncryption(request.query)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_14 = _f.sent(); sendErrorResponse(response, error_14); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // changing field encryption router.put('/change-field-encryption', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_15; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.changeDocumentFieldEncryption((0, helpers_1.decrypt)(request.body))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.changeDocumentFieldEncryption(request.body)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_15 = _f.sent(); sendErrorResponse(response, error_15); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // uploading file router.post('/upload-file', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var body, file_1, folderName, uploadingFolder, dateStr, originalName, fileExtension, uniqueFileName; return __generator(this, function (_a) { try { !fs_1.default.existsSync(helpers_1.staticFilesDirectory) ? fs_1.default.mkdirSync(helpers_1.staticFilesDirectory) : null; !fs_1.default.existsSync(helpers_1.uploadingDirectory) ? fs_1.default.mkdirSync(helpers_1.uploadingDirectory) : null; if (fast_web_kit_1.object.keyExist(request.body, "body")) { body = request.body.body; body = fast_web_kit_1.object.toObject(body); if (fast_web_kit_1.object.keyExist(body, "folderName")) { if (fast_web_kit_1.string.isNotEmpty(body.folderName)) { file_1 = request.files.file; if (file_1) { folderName = body.folderName; uploadingFolder = path_1.default.join(helpers_1.uploadingDirectory, folderName); fs_1.default.existsSync(uploadingFolder) ? null : fs_1.default.mkdirSync(uploadingFolder); dateStr = new Date().toISOString().replace(/[:.]/g, '-'); originalName = path_1.default.parse(file_1.name).name; fileExtension = path_1.default.extname(file_1.name); uniqueFileName = "".concat(originalName, "_").concat(dateStr).concat(fileExtension); file_1.name = uniqueFileName; file_1.mv("".concat(uploadingFolder, "/").concat(uniqueFileName), function (error) { try { if (error) response.status(200).json({ success: false, message: error.message }); else { response.status(200).json({ success: true, message: file_1 }); } } catch (error) { response.status(200).json({ success: false, message: error.message }); } }); } else response.status(200).json({ success: false, message: "no file has been provided" }); } else response.status(200).json({ success: false, message: "folderName must be a non-empty string" }); } else response.status(200).json({ success: false, message: "body must have folderName key" }); } else response.status(200).json({ success: false, message: "body must be a non-empty object" }); } catch (error) { response.status(200).json({ success: false, message: error.message }); } return [2 /*return*/]; }); }); }); // uploading files router.post('/upload-files', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var body, folderName, files, uploadingFolder, uploaded_1, failedToUpload_1, _loop_1, _i, files_1, file; return __generator(this, function (_a) { try { !fs_1.default.existsSync(helpers_1.staticFilesDirectory) ? fs_1.default.mkdirSync(helpers_1.staticFilesDirectory) : null; !fs_1.default.existsSync(helpers_1.uploadingDirectory) ? fs_1.default.mkdirSync(helpers_1.uploadingDirectory) : null; if (fast_web_kit_1.object.keyExist(request.body, "body")) { body = request.body.body; body = fast_web_kit_1.object.toObject(body); if (fast_web_kit_1.object.keyExist(body, "folderName")) { if (fast_web_kit_1.string.isNotEmpty(body.folderName)) { folderName = body.folderName; files = request.files.files; if (files && files.length >= 1) { uploadingFolder = path_1.default.join(helpers_1.uploadingDirectory, folderName); uploaded_1 = []; failedToUpload_1 = []; _loop_1 = function (file) { fs_1.default.existsSync(uploadingFolder) ? null : fs_1.default.mkdirSync(uploadingFolder); var dateStr = new Date().toISOString().replace(/[:.]/g, '-'); // Format: YYYY-MM-DDTHH-MM-SS var originalName = path_1.default.parse(file.name).name; // Get the file name without extension var fileExtension = path_1.default.extname(file.name); // Get the file extension var uniqueFileName = "".concat(originalName, "_").concat(dateStr).concat(fileExtension); file.name = uniqueFileName; file.mv("".concat(uploadingFolder, "/").concat(uniqueFileName), function (error) { try { if (error) failedToUpload_1.push({ file: file, error: error }); else uploaded_1.push({ file: file }); } catch (error) { failedToUpload_1.push({ file: file, error: error }); } }); }; for (_i = 0, files_1 = files; _i < files_1.length; _i++) { file = files_1[_i]; _loop_1(file); } response.json({ success: true, message: { uploaded: uploaded_1, failedToUpload: failedToUpload_1 } }); } else response.status(200).json({ success: false, message: "provide atleast 1 file" }); } else response.status(200).json({ success: false, message: "folderName must be a non-empty string" }); } else response.status(200).json({ success: false, message: "body must have folderName key" }); } else response.status(200).json({ success: false, message: "body must be a non-empty object" }); } catch (error) { response.json({ success: false, message: error.message }); } return [2 /*return*/]; }); }); }); // delete file router.delete('/delete-file', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_16; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.deleteSingleFile((0, helpers_1.decryptQuery)(request.query))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.deleteSingleFile(request.query)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_16 = _f.sent(); sendErrorResponse(response, error_16); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // deleting multiple files router.delete('/delete-files', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, queries, _d, _e, error_17; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 6, , 7]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.fileBulkDelete((0, helpers_1.convertToArray)((0, helpers_1.decryptQuery)(request.query).queries))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 5]; case 2: queries = request.query.queries; if (!fast_web_kit_1.string.isValidJSON(queries)) return [3 /*break*/, 4]; queries = fast_web_kit_1.object.toObject(queries); _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.fileBulkDelete(queries)]; case 3: _e.apply(_d, [_f.sent()]); return [3 /*break*/, 5]; case 4: response.status(200).json({ success: false, message: "queries must be a stringified array of object(s)" }); _f.label = 5; case 5: return [3 /*break*/, 7]; case 6: error_17 = _f.sent(); sendErrorResponse(response, error_17); return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }); // sending sms router.post('/send-sms', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_18; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.sendMessage((0, helpers_1.decrypt)(request.body))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.sendMessage(request.body)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_18 = _f.sent(); sendErrorResponse(response, error_18); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // sending email router.post('/send-email', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_19; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.sendEmail((0, helpers_1.decrypt)(request.body))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.sendEmail(request.body)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_19 = _f.sent(); sendErrorResponse(response, error_19); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // generating otp router.get('/generate-otp', function (_request, response) { return __awaiter(void 0, void 0, void 0, function () { return __generator(this, function (_a) { try { if (helpers_1.hasEnableEncryption) response.status(200).json((0, helpers_1.encrypt)((0, generateOTP_1.generateOTP)())); else response.status(200).json((0, generateOTP_1.generateOTP)()); } catch (error) { sendErrorResponse(response, error); } return [2 /*return*/]; }); }); }); // sending otp router.post('/send-otp', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_20; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.sendOTP((0, helpers_1.decrypt)(request.body))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.sendOTP(request.body)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_20 = _f.sent(); sendErrorResponse(response, error_20); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // bulk listing router.get('/bulk-list-all', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, queries, _d, _e, error_21; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 6, , 7]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.bulkListAllDocuments((0, helpers_1.convertToArray)((0, helpers_1.decryptQuery)(request.query).queries))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 5]; case 2: queries = request.query.queries; if (!fast_web_kit_1.string.isValidJSON(queries)) return [3 /*break*/, 4]; queries = fast_web_kit_1.object.toObject(queries); _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.bulkListAllDocuments(queries)]; case 3: _e.apply(_d, [_f.sent()]); return [3 /*break*/, 5]; case 4: response.status(200).json({ success: false, message: "queries must be an array of object(s)" }); _f.label = 5; case 5: return [3 /*break*/, 7]; case 6: error_21 = _f.sent(); sendErrorResponse(response, error_21); return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }); // bulk count router.get('/bulk-count', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, queries, _d, _e, error_22; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 6, , 7]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.bulkCountDocuments((0, helpers_1.convertToArray)((0, helpers_1.decryptQuery)(request.query).queries))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 5]; case 2: queries = request.query.queries; if (!fast_web_kit_1.string.isValidJSON(queries)) return [3 /*break*/, 4]; queries = fast_web_kit_1.object.toObject(queries); _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.bulkCountDocuments(queries)]; case 3: _e.apply(_d, [_f.sent()]); return [3 /*break*/, 5]; case 4: response.status(200).json({ success: false, message: "queries must be a stringified array of object(s)" }); _f.label = 5; case 5: return [3 /*break*/, 7]; case 6: error_22 = _f.sent(); sendErrorResponse(response, error_22); return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }); // bulk read router.get('/bulk-read', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, queries, _d, _e, error_23; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 6, , 7]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.bulkGetSingleDocument((0, helpers_1.convertToArray)((0, helpers_1.decryptQuery)(request.query).queries))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 5]; case 2: queries = request.query.queries; if (!fast_web_kit_1.string.isValidJSON(queries)) return [3 /*break*/, 4]; queries = fast_web_kit_1.object.toObject(queries); _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.bulkGetSingleDocument(queries)]; case 3: _e.apply(_d, [_f.sent()]); return [3 /*break*/, 5]; case 4: response.status(200).json({ success: false, message: "queries must be a non-empty array of object(s)" }); _f.label = 5; case 5: return [3 /*break*/, 7]; case 6: error_23 = _f.sent(); sendErrorResponse(response, error_23); return [3 /*break*/, 7]; case 7: return [2 /*return*/]; } }); }); }); // push notification router.post('/push-notification', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_24; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.pushNotification((0, helpers_1.decrypt)(request.body))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.pushNotification(request.body)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_24 = _f.sent(); sendErrorResponse(response, error_24); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // searching router.get("/search", function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_25; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.search((0, helpers_1.decryptQuery)(request.query))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.search(request.query)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_25 = _f.sent(); sendErrorResponse(response, error_25); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // aggregation router.post('/aggregation', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_26; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.aggregate((0, helpers_1.decrypt)(request.body))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.aggregate(request.body)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_26 = _f.sent(); sendErrorResponse(response, error_26); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // bulk aggregatin router.post('/bulk-aggregation', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_27; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.bulkAggregate((0, helpers_1.decrypt)(request.body))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.bulkAggregate(request.body)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4; case 4: return [3 /*break*/, 6]; case 5: error_27 = _f.sent(); sendErrorResponse(response, error_27); return [3 /*break*/, 6]; case 6: return [2 /*return*/]; } }); }); }); // delete all collection router.delete('/delete-all-collection', function (request, response) { return __awaiter(void 0, void 0, void 0, function () { var _a, _b, _c, _d, _e, error_28; return __generator(this, function (_f) { switch (_f.label) { case 0: _f.trys.push([0, 5, , 6]); if (!helpers_1.hasEnableEncryption) return [3 /*break*/, 2]; _b = (_a = response.status(200)).json; _c = helpers_1.encrypt; return [4 /*yield*/, controllers_1.controllers.deleteAllCollections((0, helpers_1.decryptQuery)(request.query))]; case 1: _b.apply(_a, [_c.apply(void 0, [_f.sent()])]); return [3 /*break*/, 4]; case 2: _e = (_d = response.status(200)).json; return [4 /*yield*/, controllers_1.controllers.deleteAllCollections(request.query)]; case 3: _e.apply(_d, [_f.sent()]); _f.label = 4;