49 lines
1.4 KiB
Markdown
49 lines
1.4 KiB
Markdown
|
|
---
|
||
|
|
"@esengine/transaction": major
|
||
|
|
---
|
||
|
|
|
||
|
|
## Breaking Changes
|
||
|
|
|
||
|
|
### Storage API Simplification
|
||
|
|
|
||
|
|
RedisStorage and MongoStorage now use **factory pattern only** for connection management. The direct client injection option has been removed.
|
||
|
|
|
||
|
|
**Before (removed):**
|
||
|
|
```typescript
|
||
|
|
// Direct client injection - NO LONGER SUPPORTED
|
||
|
|
const storage = new RedisStorage({ client: redisClient });
|
||
|
|
const storage = new MongoStorage({ client: mongoClient, database: 'game' });
|
||
|
|
```
|
||
|
|
|
||
|
|
**After (factory pattern only):**
|
||
|
|
```typescript
|
||
|
|
// RedisStorage
|
||
|
|
const storage = new RedisStorage({
|
||
|
|
factory: () => new Redis('redis://localhost:6379'),
|
||
|
|
prefix: 'tx:',
|
||
|
|
transactionTTL: 86400,
|
||
|
|
});
|
||
|
|
|
||
|
|
// MongoStorage
|
||
|
|
const storage = new MongoStorage({
|
||
|
|
factory: async () => {
|
||
|
|
const client = new MongoClient('mongodb://localhost:27017');
|
||
|
|
await client.connect();
|
||
|
|
return client;
|
||
|
|
},
|
||
|
|
database: 'game',
|
||
|
|
});
|
||
|
|
```
|
||
|
|
|
||
|
|
### New Features
|
||
|
|
|
||
|
|
- **Lazy Connection**: Connection is established on first operation, not at construction time
|
||
|
|
- **Automatic Cleanup**: Support `await using` syntax (TypeScript 5.2+) for automatic resource cleanup
|
||
|
|
- **Explicit Close**: Call `storage.close()` when done, or use `await using` for automatic disposal
|
||
|
|
|
||
|
|
### Migration Guide
|
||
|
|
|
||
|
|
1. Replace `client` option with `factory` function
|
||
|
|
2. Add `storage.close()` call when done, or use `await using`
|
||
|
|
3. For MongoStorage, ensure factory returns a connected client
|