0.0.4 • Published 12 months ago

typeorm-transactional-decorator v0.0.4

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

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

  1. Install Dependencies: Ensure you have TypeORM installed in your project.

  2. 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);
  3. 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
    }
  4. Ignore Transactions:

    Use @IgnoreTransaction to ignore transactions for specific methods.

    @IgnoreTransaction()
    public async ignoreTransactionMethod() {
        // Your code here, this nested method will ignore the transaction
    }
  5. 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.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Support

If you encounter any problems or have any questions, please open an issue on the GitHub repository.

Acknowledgements

0.0.4

12 months ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago