Skip to content

Declarative transaction management framework in nodejs

License

Notifications You must be signed in to change notification settings

asheswook/tranjs

Repository files navigation

TranJS

Test

TranJS is a transaction management framework which provides declaretive transaction, without any ORMs.

It is designed to provide reliable and intuitive transaction management for mission-critical safety applications and general-purpose applications.

Features

  • Declarative Transaction via Decorator
  • TypeScript Native
  • 🛠️ No Dependencies, Lightweight (15KB)
  • 🔄 Flexible Transaction Propagation

Getting Started

  • API Documentation is available at here.
  • Native supported drivers are available at here.
  • The example contains a simple example of how to use the TranJS framework.

Usage

class MyService {
    @Transactional()
    async transfer(from: string, to: string, amount: number) {
        await this.withdrawMoney("Jaewook", 100);
        await this.depositMoney("Chansu", 100);
    }

    @Transactional(Propagation.MANDATORY)
    private async depositMoney(userId: string, amount: number) {
        console.log("Execute Query", userId, amount);
        await ctx().execute("UPDATE user SET balance = balance + ? WHERE id = ?", [amount, userId]);
    }

    @Transactional(Propagation.MANDATORY)
    private async withdrawMoney(userId: string, amount: number) {
        console.log("Execute Query", userId, amount);
        await ctx().execute("UPDATE user SET balance = balance - ? WHERE id = ?", [amount, userId]);
    }
}
Start Transaction (id: ae8wml5i78rt) # Transaction started at transfer()
Execute Query Jaewook 100
Execute Query Chansu 100
Commit Transaction (id: ae8wml5i78rt) # Transaction committed when transfer() finished

Installation

It should be set up for the database you want to use. See here.

Note

If the driver you want to use does not exist, you can implement it on your own.

Contribute

TranJS welcomes contributions from the community to enhance its functionality and usability. Here’s how you can contribute:

  1. Report Issues
    If you encounter bugs or have suggestions for improvements, feel free to open an issue in the repository.

  2. Submit Pull Requests
    Fork the repository, create a new branch for your changes, and submit a pull request. Ensure your code adheres to the project's coding standards and includes relevant tests.

  3. Implement Drivers
    If the driver you need is not available, you can implement it yourself using the self-implement guide.

  4. Improve Documentation
    Contributions to the documentation are always appreciated—whether it's fixing typos, adding examples, or clarifying complex concepts.

  5. Collaborate and Review
    Participate in discussions, review pull requests, and provide constructive feedback to other contributors.

License

This project is licensed under the LGPL-2.1 License - see the LICENSE file for details.

Acknowledgement

About

Declarative transaction management framework in nodejs

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published