UNPKG

axiodb

Version:

A blazing-fast, lightweight, and scalable nodejs package based DBMS for modern application. Supports schemas, encryption, and advanced query capabilities.

125 lines 6.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()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable @typescript-eslint/no-explicit-any */ const FileManager_1 = __importDefault(require("../../engine/Filesystem/FileManager")); const FolderManager_1 = __importDefault(require("../../engine/Filesystem/FolderManager")); const outers_1 = require("outers"); const response_helper_1 = __importDefault(require("../../Helper/response.helper")); const Keys_1 = require("../../config/Keys/Keys"); const Converter_helper_1 = __importDefault(require("../../Helper/Converter.helper")); /** * Class representing an insertion operation. */ class Insertion { /** * Creates an instance of Insertion. * @param {string} collectionName - The name of the collection. * @param {string | any} path - The data to be inserted. */ constructor(collectionName, path) { this.collectionName = collectionName; this.path = path; this.Converter = new Converter_helper_1.default(); } /** * Saves the data to a file. * @returns {Promise<any>} A promise that resolves with the response of the save operation. */ Save(data, ExistingdocumentId) { return __awaiter(this, void 0, void 0, function* () { try { const documentId = ExistingdocumentId === undefined ? yield this.generateUniqueDocumentId() : ExistingdocumentId; const filePath = `${this.path}/.${documentId}${Keys_1.General.DBMS_File_EXT}`; // Check if Directory Locked or not const isLocked = yield new FolderManager_1.default().IsDirectoryLocked(this.path); if ("data" in isLocked) { if (isLocked.data === false) { // Write the data to the file const WriteResponse = yield new FileManager_1.default().WriteFile(filePath, this.Converter.ToString(data)); const lockStatus = yield new FolderManager_1.default().LockDirectory(this.path); if ("data" in lockStatus) { if (lockStatus.data === false) { const DeleteStatus = yield new FileManager_1.default().DeleteFile(filePath); if ("data" in DeleteStatus) { if (DeleteStatus.data === false) { return new response_helper_1.default().Error("Failed to lock directory"); } } } else { if (WriteResponse.status) { return new response_helper_1.default().Success({ Message: "Data Inserted Successfully", documentId: documentId, }); } } } } else { const unlockStatus = yield new FolderManager_1.default().UnlockDirectory(this.path); if ("data" in unlockStatus) { if (unlockStatus.data === false) { return new response_helper_1.default().Error("Failed to unlock directory"); } else { // Write the data to the file const WriteResponse = yield new FileManager_1.default().WriteFile(filePath, this.Converter.ToString(data)); const lockStatus = yield new FolderManager_1.default().LockDirectory(this.path); if ("data" in lockStatus) { if (lockStatus.data === false) { return new response_helper_1.default().Error("Failed to lock directory"); } else { if (WriteResponse.status) { return new response_helper_1.default().Success({ Message: "Data Inserted Successfully", documentId: documentId, }); } } } } } } } return new response_helper_1.default().Error("Failed to save data"); } catch (error) { return new response_helper_1.default().Error(error); } }); } /** * Generates a unique document ID. * @returns {Promise<string>} A promise that resolves with a unique document ID. */ generateUniqueDocumentId() { return __awaiter(this, void 0, void 0, function* () { let isExist = true; let ID; do { ID = new outers_1.ClassBased.UniqueGenerator(15).RandomWord(true); const response = yield new FileManager_1.default().FileExists(`${this.path}/${ID}${Keys_1.General.DBMS_File_EXT}`); isExist = response.status; } while (isExist); return ID; }); } } exports.default = Insertion; //# sourceMappingURL=Create.operation.js.map