RF-Slice 2: ResolutionFarming-Persistenz (EF/MySQL) + Repos + Migration
- Entities RfCandidate/RfPosition/RfClosedTrade (+ RfSettings aus Slice 1). - ResolutionFarmingDbContext: Tabellen rf_settings/rf_candidates/rf_positions/ rf_closed_trades. Autoincrement-PKs (Identity) fuer Candidate/ClosedTrade von Anfang an (Lehre aus dem CopyTrading-TradeId-Problem), zusammengesetzter PK (AccountId,TokenId) fuer Positions, Indizes + Decimal-Precision. - 4 Repos (Settings/Candidate/Position/ClosedTrade) mit serverseitigen Aggregaten (RealizedPnlSince fuer Kill-Switch, CountOpenedSince fuer Tages-Drossel). - Modul registriert DbContextFactory + Repos. - Design-Time-Factory nutzt die fest gepinnte Server-Version -> Migration wurde OHNE DB-Verbindung generiert (kein Zugriff auf die produktive DB). Anwenden per 'dotnet ef database update' bewusst im Zielland/lokal durch den Nutzer. 6 neue EF-InMemory-Repo-Tests. Build 0 Fehler, 289 Tests gruen, --smoke-ui ok. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
c9eb11afe4
commit
1b6e194b50
@@ -1,8 +1,12 @@
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using PolyTrader.Core.Configuration;
|
||||
using PolyTrader.Core.Modularity;
|
||||
using PolyTrader.Modules.ResolutionFarming.Persistence;
|
||||
using PolyTrader.Modules.ResolutionFarming.Persistence.Ef;
|
||||
|
||||
namespace PolyTrader.Modules.ResolutionFarming
|
||||
{
|
||||
@@ -22,8 +26,16 @@ namespace PolyTrader.Modules.ResolutionFarming
|
||||
|
||||
public void RegisterServices(IServiceCollection services, IConfiguration configuration)
|
||||
{
|
||||
// Slice 1: reines Logik-Skelett. Persistenz (DbContext/Repos), Scanner-/Monitor-Jobs und
|
||||
// Execution werden in den folgenden Slices registriert.
|
||||
// Modul-Persistenz: EF Core / Pomelo / MySQL (thread-safer DbContextFactory), eigene rf_-Tabellen.
|
||||
var conn = configuration["Database:MySqlConnectionString"] ?? string.Empty;
|
||||
services.AddDbContextFactory<ResolutionFarmingDbContext>(o => o.UseMySql(conn, DatabaseServerVersion.Value));
|
||||
|
||||
services.AddSingleton<IRfSettingsRepository, EfRfSettingsRepository>();
|
||||
services.AddSingleton<IRfCandidateRepository, EfRfCandidateRepository>();
|
||||
services.AddSingleton<IRfPositionRepository, EfRfPositionRepository>();
|
||||
services.AddSingleton<IRfClosedTradeRepository, EfRfClosedTradeRepository>();
|
||||
|
||||
// Scanner-/Monitor-Jobs, Execution und UI folgen in den nächsten Slices.
|
||||
}
|
||||
|
||||
public void RegisterUi(IModuleUiHost host, System.IServiceProvider services)
|
||||
|
||||
Reference in New Issue
Block a user