Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
7.3 KiB
7.3 KiB
@esengine/transaction
2.1.1
Patch Changes
- Updated dependencies [
85171a0]:- @esengine/database-drivers@1.1.1
2.1.0
Minor Changes
-
#410
71022abThanks @esengine! - feat: add database layer architectureAdded new database packages with layered architecture:
@esengine/database-drivers (Layer 1)
- MongoDB connection with pool management, auto-reconnect, events
- Redis connection with auto-reconnect, key prefix
- Type-safe
IMongoCollection<T>interface decoupled from mongodb types - Service tokens for dependency injection (
MongoConnectionToken,RedisConnectionToken)
@esengine/database (Layer 2)
- Generic
Repository<T>with CRUD, pagination, soft delete UserRepositorywith registration, authentication, role management- Password hashing utilities using scrypt
- Query operators:
$eq,$ne,$gt,$gte,$lt,$lte,$in,$nin,$like,$regex
@esengine/transaction
- Refactored
MongoStorageto use shared connection from@esengine/database-drivers - Removed factory pattern in favor of shared connection (breaking change)
- Simplified API:
createMongoStorage(connection, options?)
Example usage:
import { createMongoConnection } from '@esengine/database-drivers'; import { UserRepository } from '@esengine/database'; import { createMongoStorage, TransactionManager } from '@esengine/transaction'; // Create shared connection const mongo = createMongoConnection({ uri: 'mongodb://localhost:27017', database: 'game' }); await mongo.connect(); // Use for database operations const userRepo = new UserRepository(mongo); await userRepo.register({ username: 'john', password: '123456' }); // Use for transactions (same connection) const storage = createMongoStorage(mongo); const txManager = new TransactionManager({ storage });
Patch Changes
- Updated dependencies [
71022ab]:- @esengine/database-drivers@1.1.0
2.0.7
Patch Changes
- Updated dependencies [
902c0a1]:- @esengine/server@4.2.0
2.0.6
Patch Changes
- Updated dependencies []:
- @esengine/server@4.1.0
2.0.5
Patch Changes
- Updated dependencies []:
- @esengine/server@4.0.0
2.0.4
Patch Changes
- Updated dependencies []:
- @esengine/server@3.0.0
2.0.3
Patch Changes
- Updated dependencies [
1f297ac]:- @esengine/server@2.0.0
2.0.2
Patch Changes
- Updated dependencies [
afdeb00]:- @esengine/server@1.3.0
2.0.1
Patch Changes
- Updated dependencies [
61a13ba]:- @esengine/server@1.2.0
2.0.0
Major Changes
-
#384
3b97838Thanks @esengine! - ## Breaking ChangesStorage API Simplification
RedisStorage and MongoStorage now use factory pattern only for connection management. The direct client injection option has been removed.
Before (removed):
// Direct client injection - NO LONGER SUPPORTED const storage = new RedisStorage({ client: redisClient }); const storage = new MongoStorage({ client: mongoClient, database: 'game' });After (factory pattern only):
// 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 usingsyntax (TypeScript 5.2+) for automatic resource cleanup - Explicit Close: Call
storage.close()when done, or useawait usingfor automatic disposal
Migration Guide
- Replace
clientoption withfactoryfunction - Add
storage.close()call when done, or useawait using - For MongoStorage, ensure factory returns a connected client
1.1.0
Minor Changes
-
#381
d4cef82Thanks @esengine! - feat(transaction): 添加游戏事务系统 | add game transaction system@esengine/transaction - 游戏事务系统 | Game transaction system
核心功能 | Core Features
- TransactionManager - 事务生命周期管理 | Transaction lifecycle management
- begin()/run() 创建事务 | Create transactions
- 分布式锁支持 | Distributed lock support
- 自动恢复未完成事务 | Auto-recover pending transactions
- TransactionContext - 事务上下文 | Transaction context
- 操作链式添加 | Chain operation additions
- 上下文数据共享 | Context data sharing
- 超时控制 | Timeout control
- Saga 模式 - 补偿式事务 | Compensating transactions
- execute/compensate 成对操作 | Paired execute/compensate
- 自动回滚失败事务 | Auto-rollback on failure
存储实现 | Storage Implementations
- MemoryStorage - 内存存储,用于开发测试 | In-memory for dev/testing
- RedisStorage - Redis 分布式锁和缓存 | Redis distributed lock & cache
- MongoStorage - MongoDB 持久化事务日志 | MongoDB persistent transaction logs
内置操作 | Built-in Operations
- CurrencyOperation - 货币增减操作 | Currency add/deduct
- InventoryOperation - 背包物品操作 | Inventory item operations
- TradeOperation - 玩家交易操作 | Player trade operations
分布式事务 | Distributed Transactions
- SagaOrchestrator - 跨服务器 Saga 编排 | Cross-server Saga orchestration
- 完整的 Saga 日志记录 | Complete Saga logging
- 未完成 Saga 恢复 | Incomplete Saga recovery
Room 集成 | Room Integration
- withTransactions() - Room mixin 扩展 | Room mixin extension
- TransactionRoom - 预配置的事务 Room 基类 | Pre-configured transaction Room base
文档 | Documentation
- 完整的中英文文档 | Complete bilingual documentation
- 核心概念、存储层、操作、分布式事务 | Core concepts, storage, operations, distributed
- TransactionManager - 事务生命周期管理 | Transaction lifecycle management