UNPKG

axiodb

Version:

The Pure JavaScript Alternative to SQLite. Embedded NoSQL database for Node.js with MongoDB-style queries, zero native dependencies, built-in InMemoryCache, and web GUI. Perfect for desktop apps, CLI tools, and embedded systems. No compilation, no platfor

195 lines (194 loc) 9.95 kB
import { AxioDB } from "../../../Services/Indexation.operation"; import { FastifyRequest } from "fastify"; /** * CRUD Controller class for handling database operations */ export default class CRUDController { private AxioDBInstance; constructor(AxioDBInstance: AxioDB); /** * Retrieves all documents from a specified collection with pagination. * * @param request - The Fastify request object containing query parameters * @param request.query.dbName - The name of the database to query * @param request.query.collectionName - The name of the collection to query * @param request.query.page - The page number for pagination (starts from 1) * * @returns A response object with: * - Status code 200 and documents data if successful * - Status code 400 if database name, collection name, or page number is invalid * - Status code 404 if no documents are found * * @example * // GET /documents?dbName=users&collectionName=profiles&page=1 */ getAllDocuments(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; /** * Retrieves documents from a specified collection based on a query with pagination. * * @param request - The Fastify request object containing query parameters and body data. * @param request.query - Query parameters for the database and collection. * @param request.query.dbName - The name of the database to query. * @param request.query.collectionName - The name of the collection to query. * @param request.query.page - The page number for pagination (starts from 1). * @param request.body - The request body containing the query object. * @param request.body.query - The query object to filter documents. * * @returns A response object with: * - Status code 200 and the retrieved documents if successful. * - Status code 400 if any required parameters are invalid. * - Status code 404 if no documents are found. * * @example * // Example request: * { * query: { * dbName: "users", * collectionName: "profiles", * page: 1 * }, * body: { * query: { age: { $gte: 18 } } * } * } */ getDocumentsByQuery(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; /** * Retrieves a document from a specified collection in a database by its ID. * * @param request - The Fastify request object containing query parameters. * @param request.query - Query parameters for the database and collection. * @param request.query.dbName - The name of the database to query. * @param request.query.collectionName - The name of the collection to query. * @param request.query.documentId - The ID of the document to retrieve. * * @returns A response object with: * - Status code 200 and the retrieved document if successful. * - Status code 400 if any required parameters are invalid. * - Status code 404 if no document is found. * * @example * // Example request: * { * query: { * dbName: "users", * collectionName: "profiles", * documentId: "12345" * } * } */ getDocumentsById(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; /** * Creates a new document in a specified collection within a database. * * @param request - The Fastify request object containing query parameters and body data * @param request.query - Query parameters containing database and collection names * @param request.query.dbName - The name of the database to store the document in * @param request.query.collectionName - The name of the collection to store the document in * @param request.body - The document data to be inserted * * @returns A response object with appropriate status code and message: * - 201 (Created) with the inserted document data on success * - 400 (Bad Request) if any required parameters are invalid * - 500 (Internal Server Error) if document insertion fails * * @throws May throw exceptions if database or collection operations fail */ createNewDocument(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; /** * Creates multiple new documents in a specified collection within a database. * * @param request - The Fastify request object containing query parameters and body data * @param request.query - Query parameters containing database and collection names * @param request.query.dbName - The name of the database to store the documents in * @param request.query.collectionName - The name of the collection to store the documents in * @param request.body - An array of document data to be inserted * * @returns A response object with appropriate status code and message: * - 201 (Created) with the inserted document data on success * - 400 (Bad Request) if any required parameters are invalid * - 500 (Internal Server Error) if document insertion fails * * @throws May throw exceptions if database or collection operations fail */ createManyNewDocument(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; /** * Update an existing document in a specified collection within a database. * @param request - The Fastify request object containing query parameters and body data * @param request.query - Query parameters containing database, collection, and document IDs * @param request.query.dbName - The name of the database * @param request.query.collectionName - The name of the collection * @param request.query.documentId - The ID of the document to update * @param request.body - The updated document data */ updateDocumentById(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; /** * Updates documents in a specified collection based on a query. * @param request - The Fastify request object containing query parameters and body data * @param request.query - Query parameters containing database, collection, and update options * @param request.query.dbName - The name of the database * @param request.query.collectionName - The name of the collection * @param request.query.isMany - Flag indicating if multiple documents should be updated * @param request.body - The update query and data * @param request.body.query - The query to match documents * @param request.body.update - The updated document data * @returns A response object with the status of the update operation */ updateDocumentByQuery(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; /** * Deletes a document from a specified collection in a database. * * @param request - The Fastify request object containing query parameters * @param request.query.dbName - The name of the database * @param request.query.collectionName - The name of the collection * @param request.query.documentId - The ID of the document to delete * * @returns A response object with appropriate status code and message: * - 200 (OK) if the document was successfully deleted * - 400 (BAD REQUEST) if any required parameters are missing or invalid * - 500 (INTERNAL SERVER ERROR) if the deletion operation fails * * @throws May throw exceptions during database operations */ deleteDocumentById(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; /** * Deletes one or more documents from a collection based on a query * * @param request - The Fastify request object containing the query parameters * @param request.query.dbName - The name of the database * @param request.query.collectionName - The name of the collection * @param request.query.query - The query object to match documents for deletion * @param request.query.isMany - Boolean flag indicating whether to delete multiple documents (true) or a single document (false) * * @returns A response object with status code and message * - 200 OK if the document(s) were successfully deleted * - 400 BAD_REQUEST if any of the required parameters are invalid * - 500 INTERNAL_SERVER_ERROR if the deletion operation failed * * @throws May throw exceptions from database operations */ deleteDocumentByQuery(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; /** * Executes an aggregation pipeline on a specified collection. * * @param request - The Fastify request object containing query parameters. * @param request.query.dbName - The name of the database to use. * @param request.query.collectionName - The name of the collection to perform aggregation on. * @param request.query.aggregation - An array of aggregation pipeline stages. * * @returns A response object with status code, message, and aggregation results if successful. * If the aggregation fails, returns an error response with appropriate status code. * * @example * // Example request query: * { * dbName: "myDatabase", * collectionName: "users", * aggregation: [ * { $match: { age: { $gt: 21 } } }, * { $group: { _id: "$status", count: { $sum: 1 } } } * ] * } */ runAggregation(request: FastifyRequest): Promise<import("../../helper/responseBuilder.helper").ResponseBuilder>; }