typeorm-transactional-decorator
v0.0.4
Published
A package to simplify transaction management in TypeORM
Downloads
293
Maintainers
Readme
typeorm-transactional-decorator
A package to simplify transaction management in TypeORM.
Why one more package?
I tried to find an package allowing to manage transactions with decorators and I didn't find any. This package is based on typeorm-transactional with some improvements and changes. Main change is that transaction is propagated to nested methods.
Features
- Easily manage database transactions with decorators
- Support for nested transactions
- Automatic transaction rollback on errors
- Ability to ignore transactions for specific methods
- Transaction result management for commit and rollback events
Installation
Install the package using npm:
npm install typeorm-transactional-decorator
Usage
Install Dependencies: Ensure you have TypeORM installed in your project.
Import and Configure:
Import the package and configure it in your application.
import { addTransactionalDataSource } from 'typeorm-transactional-decorator'; import { DataSource } from 'typeorm'; // Initialize your DataSource const dataSource = new DataSource({ // Your DataSource configuration }); await dataSource.initialize(); // Add transactional capabilities to your DataSource addTransactionalDataSource(dataSource);
Use Decorators:
Decorate your methods with
@Transactional
to manage transactions.@Transactional() public async exampleMethod() { // Your code here, all nested database operations will be wrapped in a transaction }
Ignore Transactions:
Use
@IgnoreTransaction
to ignore transactions for specific methods.@IgnoreTransaction() public async ignoreTransactionMethod() { // Your code here, this nested method will ignore the transaction }
Transaction Result Manager:
Use
TransactionResultManager
to manage transaction outcomes.import { Transactional, getTransactionResultManager } from 'typeorm-transactional-decorator'; class FileService { @Transactional() async uploadFileToS3(fileContent: Buffer, fileName: string) { const transactionResultManager = getTransactionResultManager(); // Upload file to S3 // ... transactionResultManager.onRollback(async () => { // Delete the file from S3 if transaction is rolled back // ... }); // Proceed with other database operations // ... } }
License
This project is licensed under the MIT License. See the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Support
If you encounter any problems or have any questions, please open an issue on the GitHub repository.
Acknowledgements
- typerom-transactional - The package that inspired this project