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.
- Host: GitHub
- URL: https://github.com/herenickname/drizzle-transactional
- Owner: herenickname
- License: mit
- Created: 2025-06-07T03:06:17.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-06-07T07:46:45.000Z (12 months ago)
- Last Synced: 2025-10-29T06:44:24.528Z (7 months ago)
- Topics: 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
- Language: TypeScript
- Homepage:
- Size: 82 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
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.
[](https://badge.fury.io/js/drizzle-transactional)
[](https://opensource.org/licenses/MIT)
[](https://www.typescriptlang.org/)
[](https://nodejs.org/)
[](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! ๐**