indexeddb-crud-mgr
v1.0.1
Published
A promise-based CRUD module for IndexedDB.
Maintainers
Readme
@optiwariindia/indexeddb-crud
A simple, promise-based CRUD (Create, Read, Update, Delete) module for IndexedDB with optional encryption. This module simplifies common IndexedDB operations, making it easier to work with client-side storage in web applications.
Features
- Promise-based API for modern asynchronous operations.
- Full CRUD functionality:
add,get,getAll,update,delete. - Optional data encryption using the Web Crypto API (AES-GCM).
- Easy to set up and use.
Installation
Install the package using npm:
npm install @optiwariindia/indexeddb-crudUsage
First, import the IndexedDBManager class:
import IndexedDBManager from '@optiwariindia/indexeddb-crud';Basic Usage
// 1. Initialize the manager
const dbManager = new IndexedDBManager('myDatabase', 1, 'myStore');
// 2. Open the database
dbManager.open().then(() => {
console.log('Database opened successfully');
// 3. Add data
dbManager.add({ name: 'John Doe', age: 30 }).then(id => {
console.log('Added data with id:', id);
// 4. Get data
dbManager.get(id).then(data => {
console.log('Retrieved data:', data);
});
});
});With Encryption
To use encryption, you need to generate a CryptoKey.
async function generateKey() {
return await crypto.subtle.generateKey(
{
name: 'AES-GCM',
length: 256,
},
true,
['encrypt', 'decrypt']
);
}
generateKey().then(encryptionKey => {
const dbManager = new IndexedDBManager('mySecureDatabase', 1, 'mySecureStore', encryptionKey);
dbManager.open().then(() => {
console.log('Secure database opened successfully');
// ... perform CRUD operations
});
});API
new IndexedDBManager(dbName, dbVersion, storeName, encryptionKey = null)
dbName(String): The name of the database.dbVersion(Number): The version of the database.storeName(String): The name of the object store.encryptionKey(CryptoKey, optional): ACryptoKeyfor encryption and decryption.
open()
Opens the database connection. Returns a Promise that resolves when the database is opened successfully.
add(data)
Adds a new record to the object store.
data(Object): The data to add.- Returns a
Promisethat resolves with the new record's ID.
get(id)
Retrieves a record by its ID.
id: The ID of the record to retrieve.- Returns a
Promisethat resolves with the retrieved data.
getAll()
Retrieves all records from the object store.
- Returns a
Promisethat resolves with an array of all records.
update(data)
Updates an existing record. The data object must contain the id of the record to update.
data(Object): The data to update, including theid.- Returns a
Promisethat resolves when the update is complete.
delete(id)
Deletes a record by its ID.
id: The ID of the record to delete.- Returns a
Promisethat resolves withtrueif the deletion was successful.
Contributing
Bug reports and pull requests are welcome on GitHub.
License
This project is licensed under the MIT License.
