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
TypeScript
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>;
}