Phase 6 (Stufe 3): CopyTrading-Modul auf EF/MySQL umschaltbar
- CopyTradingDbContext (mod_copytrading_* Tabellen) + Design-Time-Factory - EF-Repos: CopyTradeLog, AccountSettings, TrackedTrader, MasterTraderHistory - Neue Repo-Contracts ITrackedTraderRepository + IMasterTraderHistoryRepository (loest die Collection-Inkonsistenz trackers/tracked_traders auf eine Quelle auf) - Mongo-Impls der neuen Contracts (Uebergang) - CopyTradingModule.RegisterServices: Provider-Toggle (MySql via EF / Mongo) - StartupHydrationService + MasterTraderAnalyticsJob nutzen die Repos statt _db - InitialCopyTrading-Migration erstellt und auf MySQL angewendet Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
d8cfdbf6be
commit
8101b79cfb
@@ -1,10 +1,14 @@
|
||||
using System;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Threading.Channels;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using PolyTrader.Core.Modularity;
|
||||
using PolyTrader.Modules.CopyTrading.Persistence;
|
||||
using PolyTrader.Modules.CopyTrading.Persistence.Ef;
|
||||
using PolyTrader.Modules.CopyTrading.Persistence.Mongo;
|
||||
using PolyTraderSharp;
|
||||
using PolyTraderSharp.Models;
|
||||
using PolyTraderSharp.Services;
|
||||
@@ -33,11 +37,25 @@ namespace PolyTrader.Modules.CopyTrading
|
||||
services.AddSingleton(closedTradeChannel.Writer);
|
||||
services.AddSingleton(closedTradeChannel.Reader);
|
||||
|
||||
// Modul-eigener Trade-Log
|
||||
services.AddSingleton<ICopyTradeLogRepository, MongoCopyTradeLogRepository>();
|
||||
// Modul-Persistenz: Provider-Toggle (MySql via EF / Mongo im Übergang).
|
||||
var provider = configuration["Database:Provider"] ?? "Mongo";
|
||||
if (string.Equals(provider, "MySql", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
var conn = configuration["Database:MySqlConnectionString"] ?? string.Empty;
|
||||
services.AddDbContextFactory<CopyTradingDbContext>(o => o.UseMySql(conn, ServerVersion.AutoDetect(conn)));
|
||||
|
||||
// Copytrading-Account-Detail-Einstellungen
|
||||
services.AddSingleton<ICopyTradingAccountSettingsRepository, MongoCopyTradingAccountSettingsRepository>();
|
||||
services.AddSingleton<ICopyTradeLogRepository, EfCopyTradeLogRepository>();
|
||||
services.AddSingleton<ICopyTradingAccountSettingsRepository, EfCopyTradingAccountSettingsRepository>();
|
||||
services.AddSingleton<ITrackedTraderRepository, EfTrackedTraderRepository>();
|
||||
services.AddSingleton<IMasterTraderHistoryRepository, EfMasterTraderHistoryRepository>();
|
||||
}
|
||||
else
|
||||
{
|
||||
services.AddSingleton<ICopyTradeLogRepository, MongoCopyTradeLogRepository>();
|
||||
services.AddSingleton<ICopyTradingAccountSettingsRepository, MongoCopyTradingAccountSettingsRepository>();
|
||||
services.AddSingleton<ITrackedTraderRepository, MongoTrackedTraderRepository>();
|
||||
services.AddSingleton<IMasterTraderHistoryRepository, MongoMasterTraderHistoryRepository>();
|
||||
}
|
||||
|
||||
// Modul-Services (Signalquelle, Ausführung, Analytics)
|
||||
services.AddSingleton<TraderMonitorService>();
|
||||
|
||||
Reference in New Issue
Block a user