refactor(assets): update asset entity mappings, database migrations, and MQTT RPC handlers

This commit is contained in:
2026-08-24 21:37:21 +02:00
parent 7060f0f7b1
commit 6974b2075b
26 changed files with 645 additions and 2237 deletions
+17 -17
View File
@@ -17,9 +17,9 @@ public class AssetsDbContext : DbContext, ISettingsDbContext
}
public DbSet<SettingEntity> DynamicSettings => Set<SettingEntity>();
public DbSet<Settings> Settings { get; set; }
public DbSet<AssetEntity> TradeRepublicAssets { get; set; }
public DbSet<TagEntity> TradeRepublicTags { get; set; }
public DbSet<AssetEntity> TradeRepublicAssets => Set<AssetEntity>();
public DbSet<DerivativeEntity> Derivatives => Set<DerivativeEntity>();
public DbSet<TagEntity> TradeRepublicTags => Set<TagEntity>();
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
@@ -30,20 +30,29 @@ public class AssetsDbContext : DbContext, ISettingsDbContext
entity.HasKey(e => e.Id);
entity.HasIndex(e => e.Key).IsUnique();
});
modelBuilder.Entity<AssetEntity>(entity =>
{
entity.HasKey(e => new {e.Isin, e.InstrumentCategory});
entity.HasKey(e => new { e.Isin, e.InstrumentCategory });
entity.HasIndex(e => e.LastUpdatedAt);
entity.HasDiscriminator<string>("AssetType")
.HasValue<StockEntity>("Stock")
.HasValue<CryptoEntity>("Crypto")
.HasValue<EtfEntity>("Etf")
.HasValue<SyntheticEntity>("Synthetic")
.HasValue<BondEntity>("Bond")
.HasValue<DerivativeEntity>("Derivative");
.HasValue<SyntheticEntity>("Synthetic");
});
modelBuilder.Entity<DerivativeEntity>(entity =>
{
entity.HasKey(e => e.Isin);
entity.HasIndex(e => e.UnderlyingIsin);
entity.HasIndex(e => e.OptionType);
entity.HasIndex(e => e.Leverage);
entity.HasIndex(e => e.LastUpdatedAt);
entity.HasIndex(e => new { e.UnderlyingIsin, e.OptionType, e.Leverage, e.Barrier });
});
var stringListConverter =
new Microsoft.EntityFrameworkCore.Storage.ValueConversion.ValueConverter<List<string>, string>(
v => System.Text.Json.JsonSerializer.Serialize(v, (System.Text.Json.JsonSerializerOptions?)null),
@@ -75,15 +84,6 @@ public class AssetsDbContext : DbContext, ISettingsDbContext
modelBuilder.Entity<TagEntity>(entity => { entity.HasKey(e => e.Id); });
modelBuilder.Entity<Settings>(entity =>
{
entity.HasKey(e => e.Id);
entity.Property(e => e.CurrentScanningType)
.HasConversion<string>()
.HasMaxLength(50);
});
modelBuilder.Entity<AssetEntity>()
.HasMany(a => a.Tags)
.WithMany(t => t.Assets);