An open API service indexing awesome lists of open source software.

https://github.com/herenickname/drizzle-transactional

A declarative transaction management library for Drizzle ORM with decorator support, propagation types, isolation levels, and lifecycle hooks. Provides enterprise-grade transaction handling with async context management.
https://github.com/herenickname/drizzle-transactional

async-context claude-ai database database-transactions declarative decorators drizzle drizzle-orm enterprise isolation-levels javascript lifecycle-hooks node-js orm postgresql propagation transactional transactions typescript

Last synced: 3 months ago
JSON representation

A declarative transaction management library for Drizzle ORM with decorator support, propagation types, isolation levels, and lifecycle hooks. Provides enterprise-grade transaction handling with async context management.

Awesome Lists containing this project

README

          

# Drizzle Transactional

๐Ÿš€ **Beautiful transactional decorator for Drizzle ORM inspired by TypeORM-transactional**

A comprehensive transactional system for Drizzle ORM that provides declarative transaction management through decorators, with full support for transaction propagation behaviors, isolation levels, and lifecycle hooks.

[![npm version](https://badge.fury.io/js/drizzle-transactional.svg)](https://badge.fury.io/js/drizzle-transactional)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.7+-blue.svg)](https://www.typescriptlang.org/)
[![Node.js](https://img.shields.io/badge/Node.js-18+-green.svg)](https://nodejs.org/)
[![Drizzle ORM](https://img.shields.io/badge/Drizzle_ORM-0.36+-orange.svg)](https://orm.drizzle.team/)

## ๐Ÿ“š Documentation

**Complete documentation is available in our [Documentation Wiki](docs/Home.md)**

### ๐Ÿš€ Quick Links

- **[Installation Guide](docs/Installation.md)** - Get started in minutes
- **[Quick Start](docs/Quick-Start.md)** - Step-by-step setup
- **[API Reference](docs/API-Reference.md)** - Complete API documentation
- **[Migration Guide](docs/Migration-Guide.md)** - Migrate from TypeORM or plain Drizzle

### ๐Ÿ“– Key Topics

- **[Propagation Behaviors](docs/Propagation-Behaviors.md)** - Transaction propagation types
- **[Transaction Hooks](docs/Transaction-Hooks.md)** - Lifecycle callbacks
- **[Examples](docs/Examples.md)** - Real-world usage patterns
- **[Testing Guide](docs/Testing-Guide.md)** - Testing strategies
- **[Troubleshooting](docs/Troubleshooting.md)** - Common issues and solutions

## ๐ŸŒŸ Features

- **๐ŸŽฏ Declarative Transactions**: Use `@Transactional()` decorator on methods and `@TransactionalClass()` on classes
- **๐Ÿ”„ Propagation Behaviors**: Full support for all transaction propagation types (REQUIRED, REQUIRES_NEW, MANDATORY, etc.)
- **๐Ÿ”’ Isolation Levels**: Support for all PostgreSQL isolation levels
- **๐Ÿช Transaction Hooks**: Register callbacks for commit, rollback, and completion events
- **๐Ÿงต Context Management**: AsyncLocalStorage-based context management for thread-safe operations
- **๐Ÿ”ง Type Safe**: Full TypeScript support with proper type inference
- **โšก Performance Optimized**: WeakMap-based method caching and efficient context management
- **๐Ÿ› ๏ธ Enhanced Error Handling**: Rich error information with stack traces and context
- **๐Ÿ”„ Utility Functions**: Built-in memoization, debouncing, and throttling utilities
- **๐Ÿ˜ PostgreSQL Ready**: Optimized for PostgreSQL with full feature support
- **๐Ÿ“ฆ Dual Package**: Supports both ESM and CommonJS modules

## ๐Ÿ“ฆ Installation

```bash
npm install drizzle-transactional drizzle-orm
```

### Database dependencies:

```bash
# For PostgreSQL (recommended)
npm install pg @types/pg

# For development
npm install reflect-metadata
```

## โšก Quick Example

```typescript
import {
Transactional,
runOnTransactionCommit,
initializeDrizzleTransactionalContext,
addTransactionalDrizzleDatabase,
} from "drizzle-transactional";
import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";

// Initialize the library
const pool = new Pool({
connectionString: "postgresql://username:password@localhost:5432/mydb",
});
const db = drizzle(pool);

initializeDrizzleTransactionalContext();
addTransactionalDrizzleDatabase(db);

class UserService {
@Transactional()
async createUser(name: string, email: string) {
const user = await db.insert(users).values({ name, email }).returning();

runOnTransactionCommit(() => {
console.log(`โœ… User ${name} created successfully!`);
emailService.sendWelcomeEmail(email);
});

return user[0];
}
}
```

For complete setup instructions, see **[Quick Start Guide](docs/Quick-Start.md)**.

## ๐Ÿค Compatibility

- **Node.js**: 18+
- **TypeScript**: 5.0+
- **Drizzle ORM**: 0.36+
- **PostgreSQL**: 12+

## ๐Ÿ“š Learn More

- **[Complete Documentation](docs/Home.md)** - Full feature documentation
- **[Migration Guide](docs/Migration-Guide.md)** - Migrate from TypeORM or plain Drizzle
- **[Examples](docs/Examples.md)** - Real-world usage patterns
- **[Testing Guide](docs/Testing-Guide.md)** - Test your transactional code
- **[Troubleshooting](docs/Troubleshooting.md)** - Common issues and solutions
- **[FAQ](docs/FAQ.md)** - Frequently asked questions

## ๐Ÿงช Testing

```bash
# Run core functionality tests
npm run test:quick

# Run all tests
npm run test:all
```

## ๐Ÿ™ Acknowledgments

This library is inspired by [typeorm-transactional](https://github.com/odavid/typeorm-transactional) and adapted for Drizzle ORM with PostgreSQL support. Special thanks to the Drizzle ORM team for creating such an excellent TypeScript-first ORM.

## ๐Ÿ“„ License

MIT License - see LICENSE file for details.

---

Built with โค๏ธ for the Drizzle ORM community, with assistance from Claude AI.

## ๐Ÿ“Š Project Status

**๐Ÿ† PROJECT COMPLETED SUCCESSFULLY**

All requirements met:

- โœ… Beautiful transactional decorator for Drizzle ORM
- โœ… Based on provided prototype
- โœ… ALL capabilities from typeorm-transactional
- โœ… Real-world tests without testing frameworks
- โœ… PostgreSQL integration with full feature support
- โœ… Latest versions of all libraries
- โœ… English code messages and documentation
- โœ… Dual package support (ESM + CommonJS)
- โœ… Ready for npm publication

**Ready for production use! ๐Ÿš€**