joltdb
v1.0.7
Published
Jolt is a simple in-memory JSON database written in TypeScript. It provides basic CRUD (Create, Read, Update, Delete) operations along with additional features like sorting and pagination.
Downloads
11
Readme
Jolt
Jolt is a simple in-memory JSON database written in TypeScript. It provides basic CRUD (Create, Read, Update, Delete) operations along with additional features like sorting and pagination.
Installation
You can install Jolt using npm:
npm install joltdb
Usage
Here's how you can use Jolt in your TypeScript project:
import { Jolt, Options } from 'joltdb';
// Define options
const dbOptions: Options = {
filePath: 'data.json',
errorHandler: (error: Error) => {
console.error(error);
},
cacheEnabled: true
};
// Initialize Jolt
const db = new Jolt(dbOptions);
// Create a new document
const newItem = { _id: '1', name: 'Alice', age: 30 };
db.create(newItem);
// Read documents
const filteredData = db.read(doc => doc.age > 25);
// Update a document
db.update(doc => doc._id === '1', { age: 31 });
// Delete documents
db.delete(doc => doc.age < 30);
Features
- Simple API: Provides easy-to-use methods for database operations.
- Persistence: Data is persisted to a JSON file.
- Caching: Optionally caches data in memory for improved performance.
- Data Validation: Supports validation of incoming data against JSON schema.
- Additional Operations: Includes methods for sorting, pagination, and more.
API Reference
Constructor
new Jolt(options: Options)
Initializes a new instance of Jolt with the provided options.
Methods
create(newItem: Document): void
: Adds a new document to the database.read(filter: (doc: Document) => boolean): Document[]
: Retrieves documents from the database based on a filter function.update(filter: (doc: Document) => boolean, updates: Partial<Document>): void
: Updates documents in the database based on a filter function.delete(filter: (doc: Document) => boolean): void
: Deletes documents from the database based on a filter function.sort(key: keyof Document, order: 'asc' | 'desc'): void
: Sorts documents in the database by a specified key.paginate(page: number, pageSize: number): Document[]
: Retrieves a paginated subset of documents from the database.count(): number
: Returns the total number of documents in the database.sum(field: keyof Document): number
: Calculates the sum of a numeric field across all documents.average(field: keyof Document): number
: Calculates the average value of a numeric field across all documents.min(field: keyof Document): number
: Finds the minimum value of a numeric field across all documents.max(field: keyof Document): number
: Finds the maximum value of a numeric field across all documents.distinct(field: keyof Document): any[]
: Retrieves unique values of a specified field across all documents.search(query: string, fields: (keyof Document)[]): Document[]
: Searches for documents containing a specified query string in one or more fields.
Additional Methods
saveDataAtPath(path: string, data: any): void
: Saves data at a specified path in the document.readAtPath(path: string): any
: Retrieves data from a specified path in the document.removeAtPath(path: string): void
: Removes data from a specified path in the document.
License
This project is licensed under the MIT License - see the LICENSE file for details.