// using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Predictalytics.Infrastructure.Data; #nullable disable namespace Predictalytics.Infrastructure.Migrations { [DbContext(typeof(AppDbContext))] [Migration("20260723071430_AddStrategyFingerprintMetrics")] partial class AddStrategyFingerprintMetrics { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "8.0.11") .HasAnnotation("Relational:MaxIdentifierLength", 64); MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder); modelBuilder.Entity("Predictalytics.Domain.Entities.Alert", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("IsRead") .HasColumnType("tinyint(1)"); b.Property("Message") .IsRequired() .HasMaxLength(4096) .HasColumnType("varchar(4096)"); b.Property("Platform") .HasColumnType("int"); b.Property("Severity") .HasColumnType("int"); b.Property("Title") .IsRequired() .HasMaxLength(512) .HasColumnType("varchar(512)"); b.Property("TraderId") .HasColumnType("int"); b.Property("Type") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("CreatedAt"); b.HasIndex("TraderId"); b.ToTable("Alerts"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.BackgroundJob", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("CompletedAt") .HasColumnType("datetime(6)"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("ErrorMessage") .HasMaxLength(4096) .HasColumnType("varchar(4096)"); b.Property("JobType") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)"); b.Property("StartedAt") .HasColumnType("datetime(6)"); b.Property("Status") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)"); b.Property("TraderId") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("JobType"); b.HasIndex("Status"); b.HasIndex("TraderId"); b.ToTable("BackgroundJobs"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Event", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("DbCreatedAt") .HasColumnType("datetime(6)"); b.Property("Description") .HasMaxLength(4096) .HasColumnType("varchar(4096)"); b.Property("EndDate") .HasColumnType("datetime(6)"); b.Property("ImageUrl") .HasMaxLength(1024) .HasColumnType("varchar(1024)"); b.Property("IsActive") .HasColumnType("tinyint(1)"); b.Property("IsClosed") .HasColumnType("tinyint(1)"); b.Property("LastUpdatedAt") .HasColumnType("datetime(6)"); b.Property("Platform") .HasColumnType("int"); b.Property("PlatformEventId") .HasColumnType("bigint"); b.Property("Slug") .IsRequired() .HasMaxLength(512) .HasColumnType("varchar(512)"); b.Property("StartDate") .HasColumnType("datetime(6)"); b.Property("Tags") .IsRequired() .HasMaxLength(1024) .HasColumnType("varchar(1024)"); b.Property("Title") .IsRequired() .HasMaxLength(1024) .HasColumnType("varchar(1024)"); b.HasKey("Id"); b.HasIndex("Platform", "PlatformEventId") .IsUnique(); b.ToTable("Events"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Market", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("Category") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)"); b.Property("ClosedAt") .HasColumnType("datetime(6)"); b.Property("ConditionId") .IsRequired() .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("DbCreatedAt") .HasColumnType("datetime(6)"); b.Property("Description") .HasMaxLength(4096) .HasColumnType("varchar(4096)"); b.Property("EndDate") .HasColumnType("datetime(6)"); b.Property("EventId") .HasColumnType("int"); b.Property("FeeRateBps") .HasColumnType("decimal(65,30)"); b.Property("ImageUrl") .HasMaxLength(1024) .HasColumnType("varchar(1024)"); b.Property("IsNegRisk") .HasColumnType("tinyint(1)"); b.Property("IsResolved") .HasColumnType("tinyint(1)"); b.Property("LastTradesUpdatedAt") .HasColumnType("datetime(6)"); b.Property("LastUpdatedAt") .HasColumnType("datetime(6)"); b.Property("Liquidity") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("MarketSlug") .IsRequired() .HasMaxLength(512) .HasColumnType("varchar(512)"); b.Property("Platform") .HasColumnType("int"); b.Property("PlatformMarketId") .HasColumnType("bigint"); b.Property("Question") .IsRequired() .HasMaxLength(1024) .HasColumnType("varchar(1024)"); b.Property("QuestionId") .IsRequired() .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("ResolutionOutcome") .HasColumnType("longtext"); b.Property("StartDate") .HasColumnType("datetime(6)"); b.Property("Subcategory") .IsRequired() .HasMaxLength(128) .HasColumnType("varchar(128)"); b.Property("Volume") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("Volume24h") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.HasKey("Id"); b.HasIndex("EventId"); b.HasIndex("Platform", "PlatformMarketId") .IsUnique(); b.ToTable("Markets"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.MarketAnalytics", b => { b.Property("MarketId") .HasColumnType("int"); b.Property("AverageTradeSize") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("BotActivityScore") .HasPrecision(8, 4) .HasColumnType("decimal(8,4)"); b.Property("LastCalculatedAt") .HasColumnType("datetime(6)"); b.Property("UniqueTradersCount") .HasColumnType("int"); b.HasKey("MarketId"); b.ToTable("MarketAnalytics"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.MarketOutcome", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("CurrentPrice") .HasPrecision(18, 8) .HasColumnType("decimal(18,8)"); b.Property("Label") .IsRequired() .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("MarketId") .HasColumnType("int"); b.Property("OutcomeIndex") .HasColumnType("int"); b.Property("TokenId") .IsRequired() .HasMaxLength(256) .HasColumnType("varchar(256)"); b.HasKey("Id"); b.HasIndex("TokenId"); b.HasIndex("MarketId", "OutcomeIndex") .IsUnique(); b.ToTable("MarketOutcomes"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.MarketOutcomePriceSnapshot", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("MarketOutcomeId") .HasColumnType("int"); b.Property("Price") .HasPrecision(10, 6) .HasColumnType("decimal(10,6)"); b.Property("Timestamp") .HasColumnType("datetime(6)"); b.HasKey("Id"); b.HasIndex("MarketOutcomeId", "Timestamp"); b.ToTable("MarketOutcomePriceSnapshots"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.PlatformConfig", b => { b.Property("Id") .HasColumnType("int"); b.Property("BaseUrl") .HasMaxLength(1024) .HasColumnType("varchar(1024)"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("DisplayName") .IsRequired() .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("IsActive") .HasColumnType("tinyint(1)"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("varchar(128)"); b.Property("SettingsJson") .HasColumnType("longtext"); b.Property("UpdatedAt") .HasColumnType("datetime(6)"); b.HasKey("Id"); b.ToTable("PlatformConfigs"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Trade", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("AggregatedCount") .HasColumnType("int"); b.Property("Amount") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("AssetId") .IsRequired() .HasMaxLength(80) .HasColumnType("varchar(80)"); b.Property("DbMarketId") .HasColumnType("int"); b.Property("ExecutedAt") .HasColumnType("datetime(6)"); b.Property("IsContextEnriched") .HasColumnType("tinyint(1)"); b.Property("MarketId") .IsRequired() .HasMaxLength(66) .HasColumnType("varchar(66)"); b.Property("MarketOutcomeId") .HasColumnType("int"); b.Property("Outcome") .IsRequired() .HasMaxLength(128) .HasColumnType("varchar(128)"); b.Property("OutcomeIndex") .HasColumnType("int"); b.Property("Platform") .HasColumnType("int"); b.Property("PlatformTradeId") .IsRequired() .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("PostTradePrice1m") .HasColumnType("decimal(18,4)"); b.Property("PreTradePrice1m") .HasColumnType("decimal(18,4)"); b.Property("Price") .HasPrecision(18, 6) .HasColumnType("decimal(18,6)"); b.Property("Side") .HasColumnType("int"); b.Property("Size") .HasPrecision(14, 6) .HasColumnType("decimal(14,6)"); b.Property("TraderId") .HasColumnType("int"); b.Property("TransactionHash") .HasMaxLength(66) .HasColumnType("varchar(66)"); b.Property("UsdcSize") .HasColumnType("decimal(18,6)"); b.HasKey("Id"); b.HasIndex("AssetId"); b.HasIndex("DbMarketId"); b.HasIndex("ExecutedAt"); b.HasIndex("MarketOutcomeId"); b.HasIndex("TraderId"); b.HasIndex("Platform", "PlatformTradeId") .IsUnique(); b.ToTable("Trades"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TradeContext", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("EstimatedOrderType") .IsRequired() .HasMaxLength(32) .HasColumnType("varchar(32)"); b.Property("EstimatedSlippage") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("FollowerFillPrice10s") .HasColumnType("decimal(65,30)"); b.Property("FollowerFillPrice60s") .HasColumnType("decimal(65,30)"); b.Property("PriceAfter1m") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("PriceBefore1m") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("TradeId") .HasColumnType("bigint"); b.HasKey("Id"); b.HasIndex("TradeId") .IsUnique(); b.ToTable("TradeContexts"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Trader", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("AiStrategySummary") .HasColumnType("longtext"); b.Property("AiStrategyUpdatedAt") .HasColumnType("datetime(6)"); b.Property("CreatedAt") .HasColumnType("datetime(6)"); b.Property("DisplayName") .IsRequired() .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("IngestMode") .HasColumnType("int"); b.Property("IsAutoDiscovered") .HasColumnType("tinyint(1)"); b.Property("IsInitialImportComplete") .HasColumnType("tinyint(1)"); b.Property("IsSuspectedBot") .HasColumnType("tinyint(1)"); b.Property("LastAnalyzedAt") .HasColumnType("datetime(6)"); b.Property("LastApiErrorAt") .HasColumnType("datetime(6)"); b.Property("LastPolledAt") .HasColumnType("datetime(6)"); b.Property("LastTradesUpdatedAt") .HasColumnType("datetime(6)"); b.Property("ManualPriorityOverride") .HasColumnType("int"); b.Property("MasterStatus") .HasColumnType("int"); b.Property("Notes") .HasColumnType("longtext"); b.Property("Platform") .HasColumnType("int"); b.Property("PlatformUserId") .IsRequired() .HasMaxLength(128) .HasColumnType("varchar(128)"); b.Property("Strategy") .HasColumnType("int"); b.Property("Tier") .HasColumnType("int"); b.Property("TotalPnl") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("TotalTrades") .HasColumnType("int"); b.Property("WinRate") .HasPrecision(8, 4) .HasColumnType("decimal(8,4)"); b.HasKey("Id"); b.HasIndex("Platform", "PlatformUserId") .IsUnique(); b.ToTable("Traders"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderAnalytics", b => { b.Property("TraderId") .HasColumnType("int"); b.Property("AvgLossReturnPct") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("AvgWinReturnPct") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("CategoryConcentration") .HasColumnType("decimal(65,30)"); b.Property("ConvictionEdgePct") .HasColumnType("decimal(65,30)"); b.Property("CopytradingCopyabilityScore") .HasColumnType("decimal(65,30)"); b.Property("CopytradingQualityScore") .HasColumnType("decimal(65,30)"); b.Property("CopytradingScore") .HasColumnType("decimal(65,30)"); b.Property("CurrentBalance") .HasColumnType("decimal(65,30)"); b.Property("EstimatedBankroll") .HasColumnType("decimal(65,30)"); b.Property("LastCalculatedAt") .HasColumnType("datetime(6)"); b.Property("LongestLosingStreakDays") .HasColumnType("int"); b.Property("MaxDrawdownUsd") .HasColumnType("decimal(65,30)"); b.Property("MedianHoldDurationHours") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("MedianLossReturnPct") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("MedianMarketVolumeUsd") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("MedianPostFillDriftPct") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("MedianWinReturnPct") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("NetEdgeAfterFeesPct") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("OverallPnL") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("OverallWinRate") .HasPrecision(8, 4) .HasColumnType("decimal(8,4)"); b.Property("P50PositionSize") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("P90PositionSize") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("PnL24h") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("PnL30d") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("PnL7d") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("PnlVolatilityUsd") .HasColumnType("decimal(65,30)"); b.Property("PriceBandProfileJson") .HasColumnType("longtext"); b.Property("ProfitFactor") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("Trades30d") .HasColumnType("int"); b.Property("TradesPerWeek") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("WinRate24h") .HasPrecision(8, 4) .HasColumnType("decimal(8,4)"); b.Property("WinRate30d") .HasPrecision(8, 4) .HasColumnType("decimal(8,4)"); b.Property("WinRate7d") .HasPrecision(8, 4) .HasColumnType("decimal(8,4)"); b.HasKey("TraderId"); b.ToTable("TraderAnalytics"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderCategoryPerformance", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("Category") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)"); b.Property("Subcategory") .IsRequired() .HasMaxLength(128) .HasColumnType("varchar(128)"); b.Property("TotalInvested") .HasColumnType("decimal(65,30)"); b.Property("TotalPnL") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("TotalTrades") .HasColumnType("int"); b.Property("TotalVolume") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("TraderId") .HasColumnType("int"); b.Property("WinningTrades") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("TraderId", "Category", "Subcategory") .IsUnique(); b.ToTable("TraderCategoryPerformances"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderDailySnapshot", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("CurrentBalance") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("Date") .HasColumnType("datetime(6)"); b.Property("TotalPnl") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("TraderId") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("TraderId", "Date") .IsUnique(); b.ToTable("TraderDailySnapshots"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderPosition", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("AvgCost") .HasPrecision(10, 6) .HasColumnType("decimal(10,6)"); b.Property("IsHistoryPruned") .HasColumnType("tinyint(1)"); b.Property("LastAppliedTradeId") .HasColumnType("bigint"); b.Property("LastTradeExecutedAt") .HasColumnType("datetime(6)"); b.Property("LastUpdatedAt") .HasColumnType("datetime(6)"); b.Property("MarketOutcomeId") .HasColumnType("int"); b.Property("RealizedPnl") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("SharesHeld") .HasPrecision(14, 6) .HasColumnType("decimal(14,6)"); b.Property("TraderId") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("MarketOutcomeId"); b.HasIndex("TraderId", "MarketOutcomeId") .IsUnique(); b.ToTable("TraderPositions"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderScore", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("ActivityScore") .HasPrecision(5, 2) .HasColumnType("decimal(5,2)"); b.Property("CalculatedAt") .HasColumnType("datetime(6)"); b.Property("CombinedScore") .HasPrecision(5, 2) .HasColumnType("decimal(5,2)"); b.Property("QualityScore") .HasPrecision(5, 2) .HasColumnType("decimal(5,2)"); b.Property("Rank") .HasColumnType("int"); b.Property("TimingScore") .HasPrecision(5, 2) .HasColumnType("decimal(5,2)"); b.Property("TraderId") .HasColumnType("int"); b.Property("VolumeScore") .HasPrecision(5, 2) .HasColumnType("decimal(5,2)"); b.HasKey("Id"); b.HasIndex("TraderId") .IsUnique(); b.ToTable("TraderScores"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderTrait", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("ComputedAt") .HasColumnType("datetime(6)"); b.Property("TraderId") .HasColumnType("int"); b.Property("Trait") .IsRequired() .HasMaxLength(64) .HasColumnType("varchar(64)"); b.Property("Value") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.HasKey("Id"); b.HasIndex("TraderId", "Trait") .IsUnique(); b.ToTable("TraderTraits"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderWindowMetrics", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("AvgReturnPct") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("ClosedMarkets") .HasColumnType("int"); b.Property("ComputedAt") .HasColumnType("datetime(6)"); b.Property("MedianLossReturnPct") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("MedianWinReturnPct") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("ProfitFactor") .HasPrecision(18, 4) .HasColumnType("decimal(18,4)"); b.Property("TraderId") .HasColumnType("int"); b.Property("WinRate") .HasPrecision(8, 4) .HasColumnType("decimal(8,4)"); b.Property("WindowEnd") .HasColumnType("datetime(6)"); b.Property("WindowStart") .HasColumnType("datetime(6)"); b.HasKey("Id"); b.HasIndex("TraderId", "WindowStart", "WindowEnd") .IsUnique(); b.ToTable("TraderWindowMetrics"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.WatchlistEntry", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("int"); MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property("Id")); b.Property("AddedAt") .HasColumnType("datetime(6)"); b.Property("AlertsEnabled") .HasColumnType("tinyint(1)"); b.Property("Label") .IsRequired() .HasMaxLength(256) .HasColumnType("varchar(256)"); b.Property("Notes") .HasColumnType("longtext"); b.Property("TraderId") .HasColumnType("int"); b.HasKey("Id"); b.HasIndex("TraderId") .IsUnique(); b.ToTable("WatchlistEntries"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Alert", b => { b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithMany() .HasForeignKey("TraderId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.BackgroundJob", b => { b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithMany() .HasForeignKey("TraderId") .OnDelete(DeleteBehavior.SetNull); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Market", b => { b.HasOne("Predictalytics.Domain.Entities.Event", "Event") .WithMany("Markets") .HasForeignKey("EventId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Event"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.MarketAnalytics", b => { b.HasOne("Predictalytics.Domain.Entities.Market", "Market") .WithOne("Analytics") .HasForeignKey("Predictalytics.Domain.Entities.MarketAnalytics", "MarketId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Market"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.MarketOutcome", b => { b.HasOne("Predictalytics.Domain.Entities.Market", "Market") .WithMany("Outcomes") .HasForeignKey("MarketId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Market"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.MarketOutcomePriceSnapshot", b => { b.HasOne("Predictalytics.Domain.Entities.MarketOutcome", "MarketOutcome") .WithMany() .HasForeignKey("MarketOutcomeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("MarketOutcome"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Trade", b => { b.HasOne("Predictalytics.Domain.Entities.Market", "DbMarket") .WithMany() .HasForeignKey("DbMarketId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Predictalytics.Domain.Entities.MarketOutcome", "MarketOutcome") .WithMany() .HasForeignKey("MarketOutcomeId") .OnDelete(DeleteBehavior.SetNull); b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithMany("Trades") .HasForeignKey("TraderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("DbMarket"); b.Navigation("MarketOutcome"); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TradeContext", b => { b.HasOne("Predictalytics.Domain.Entities.Trade", "Trade") .WithOne("Context") .HasForeignKey("Predictalytics.Domain.Entities.TradeContext", "TradeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Trade"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderAnalytics", b => { b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithOne("Analytics") .HasForeignKey("Predictalytics.Domain.Entities.TraderAnalytics", "TraderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderCategoryPerformance", b => { b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithMany("CategoryPerformances") .HasForeignKey("TraderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderDailySnapshot", b => { b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithMany() .HasForeignKey("TraderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderPosition", b => { b.HasOne("Predictalytics.Domain.Entities.MarketOutcome", "MarketOutcome") .WithMany() .HasForeignKey("MarketOutcomeId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithMany("Positions") .HasForeignKey("TraderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("MarketOutcome"); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderScore", b => { b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithOne("CurrentScore") .HasForeignKey("Predictalytics.Domain.Entities.TraderScore", "TraderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderTrait", b => { b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithMany("Traits") .HasForeignKey("TraderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.TraderWindowMetrics", b => { b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithMany() .HasForeignKey("TraderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.WatchlistEntry", b => { b.HasOne("Predictalytics.Domain.Entities.Trader", "Trader") .WithMany("WatchlistEntries") .HasForeignKey("TraderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Trader"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Event", b => { b.Navigation("Markets"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Market", b => { b.Navigation("Analytics"); b.Navigation("Outcomes"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Trade", b => { b.Navigation("Context"); }); modelBuilder.Entity("Predictalytics.Domain.Entities.Trader", b => { b.Navigation("Analytics"); b.Navigation("CategoryPerformances"); b.Navigation("CurrentScore"); b.Navigation("Positions"); b.Navigation("Trades"); b.Navigation("Traits"); b.Navigation("WatchlistEntries"); }); #pragma warning restore 612, 618 } } }