axiodb
Version:
A blazing-fast, lightweight, and scalable nodejs package based DBMS for modern application. Supports schemas, encryption, and advanced query capabilities.
119 lines • 5.74 kB
JavaScript
;
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 });
const outers_1 = require("outers");
const responseBuilder_helper_1 = __importDefault(require("../../helper/responseBuilder.helper"));
/**
* Controller class for managing databases in AxioDB.
*
* This class provides methods for retrieving database information,
* creating new databases, and other database management operations.
* It acts as an interface between the API routes and the AxioDB instance.
*/
class DatabaseController {
constructor(AxioDBInstance) {
this.AxioDBInstance = AxioDBInstance;
}
/**
* Retrieves a list of databases from the AxioDB instance.
*
* @returns {Promise<ResponseBuilder>} A Promise that resolves to a ResponseBuilder object
* containing the list of databases with an OK status code and a success message.
*
* @example
* const response = await databaseController.getDatabases();
* // Returns a ResponseBuilder with status 200 and database list
*/
getDatabases() {
return __awaiter(this, void 0, void 0, function* () {
const databases = yield this.AxioDBInstance.getInstanceInfo();
return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.OK, "List of Databases", databases === null || databases === void 0 ? void 0 : databases.data);
});
}
/**
* Creates a new database with the specified name.
*
* @param request - The Fastify request object containing the database name in the body
* @returns A ResponseBuilder object containing the status and message of the operation
*
* @throws Will return a conflict response if database already exists
* @throws Will return a bad request response if name is missing, not a string, or empty
* @throws Will return an internal server error response if database creation fails
*/
createDatabase(request) {
return __awaiter(this, void 0, void 0, function* () {
const { name } = request.body;
try {
// check if the database already exists
const exists = yield this.AxioDBInstance.isDatabaseExists(name);
if (exists) {
return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.CONFLICT, "Database already exists");
}
// create the database
if (!name) {
return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.BAD_REQUEST, "Database name is required");
}
if (typeof name !== "string" || name.trim() === "") {
return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.BAD_REQUEST, "Invalid database name");
}
yield this.AxioDBInstance.createDB(name);
return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.CREATED, "Database Created", {
Database_Name: name,
});
}
catch (error) {
console.error("Error creating database:", error);
return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.INTERNAL_SERVER_ERROR, "Error creating database");
}
});
}
/**
* Deletes a database with the specified name.
*
* @param request - The Fastify request object containing the database name in the body
* @returns A ResponseBuilder object with appropriate status code and message
* - 200 OK if the database is successfully deleted
* - 404 NOT_FOUND if the database does not exist
* - 500 INTERNAL_SERVER_ERROR if an error occurs during deletion
*
* @example
* // Example request body
* {
* "name": "myDatabase"
* }
*/
deleteDatabase(request) {
return __awaiter(this, void 0, void 0, function* () {
const { dbName } = request.query;
try {
// check if the database exists
const exists = yield this.AxioDBInstance.isDatabaseExists(dbName);
if (!exists) {
return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.NOT_FOUND, "Database not found");
}
// delete the database
yield this.AxioDBInstance.deleteDatabase(dbName);
return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.OK, "Database Deleted", {
Database_Name: dbName,
});
}
catch (error) {
console.error("Error deleting database:", error);
return (0, responseBuilder_helper_1.default)(outers_1.StatusCodes.INTERNAL_SERVER_ERROR, "Error deleting database");
}
});
}
}
exports.default = DatabaseController;
//# sourceMappingURL=Databse.controller.js.map