# Current Refactoring Context ## Data Ingestion Service Refactor The project is currently undergoing a major refactoring to move away from singleton patterns to a dependency injection approach using service containers. ### What's Been Done - Created connection pool pattern with `ServiceContainer` - Refactored data-ingestion service to use DI container - Updated handlers to accept container parameter - Added proper resource disposal with `ctx.dispose()` ### Migration Status - QM handler: ✅ Fully migrated to container pattern - IB handler: ⚠️ Partially migrated (using migration helper) - Proxy handler: ✅ Updated to accept container - WebShare handler: ✅ Updated to accept container ### Key Patterns 1. **Service Container**: Central DI container managing all connections 2. **Operation Context**: Provides scoped database access within operations 3. **Factory Pattern**: Connection factories for different databases 4. **Resource Disposal**: Always call `ctx.dispose()` after operations ### Example Pattern ```typescript const ctx = OperationContext.create('handler', 'operation', { container }); try { // Use databases through context await ctx.mongodb.insertOne(data); await ctx.postgres.query('...'); return { success: true }; } finally { await ctx.dispose(); // Always cleanup } ``` ### Next Steps - Complete migration of remaining IB operations - Remove migration helper once complete - Apply same pattern to other services - Add monitoring for connection pools