0.0.1 • Published 4 days ago

dataset-transaction v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
4 days ago

Transaction Class

The Transaction class is a utility that allows you to create transactions for managing changes to an object's properties. It provides methods to start, commit, and rollback transactions, as well as events to track changes.

Features

  • Create and manage transactions for an object's properties.
  • Emit events for actions such as getting, setting, deleting, committing, rolling back, and timeout.
  • Handle transaction timeout, automatically committing or rolling back changes after a specified duration.
  • Revocable proxy object to track property changes.

Installation

To install and use dataset-transaction, follow these steps:

    npm install dataset-transaction

Usage

Here's a quick example demonstrating how to use the Transaction class:

const { Transaction } = require('dataset-transaction');

// Create initial data
const data = {
  name: 'John Doe',
  age: 30,
  email: 'johndoe@example.com',
};

// Start a transaction
const { transaction, proxy } = Transaction.start(data);

// Listen to events
transaction.on('get', () => {
  console.log('Property accessed.');
});

transaction.on('set', () => {
  console.log('Property set.');
});

transaction.on('delete', () => {
  console.log('Property deleted.');
});

transaction.on('commit', () => {
  console.log('Transaction committed.');
});

transaction.on('rollback', () => {
  console.log('Transaction rolled back.');
});

transaction.on('timeout', () => {
  console.log('Transaction timed out.');
});

// Access and modify the properties using the proxy
const name = proxy.name; // This will trigger 'get' event
proxy.age = 31; // This will trigger 'set' event
transaction.delete('email'); // This will trigger 'delete' event

// Commit or rollback the transaction
transaction.commit(); // This will trigger 'commit' event
transaction.rollback(); // This will trigger 'rollback' event

// Stop the transaction
transaction.stop();

License

MIT LICENSE

0.0.1

4 days ago

1.0.2

5 months ago

1.0.1

7 months ago

1.0.0

9 months ago