// <auto-generated />
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("20260719090559_AddTradeUsdcOutcomeIndexAndCategoryTotalInvested")]
    partial class AddTradeUsdcOutcomeIndexAndCategoryTotalInvested
    {
        /// <inheritdoc />
        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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<bool>("IsRead")
                        .HasColumnType("tinyint(1)");

                    b.Property<string>("Message")
                        .IsRequired()
                        .HasMaxLength(4096)
                        .HasColumnType("varchar(4096)");

                    b.Property<int>("Platform")
                        .HasColumnType("int");

                    b.Property<int>("Severity")
                        .HasColumnType("int");

                    b.Property<string>("Title")
                        .IsRequired()
                        .HasMaxLength(512)
                        .HasColumnType("varchar(512)");

                    b.Property<int?>("TraderId")
                        .HasColumnType("int");

                    b.Property<int>("Type")
                        .HasColumnType("int");

                    b.HasKey("Id");

                    b.HasIndex("CreatedAt");

                    b.HasIndex("TraderId");

                    b.ToTable("Alerts");
                });

            modelBuilder.Entity("Predictalytics.Domain.Entities.BackgroundJob", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<DateTime?>("CompletedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("ErrorMessage")
                        .HasMaxLength(4096)
                        .HasColumnType("varchar(4096)");

                    b.Property<string>("JobType")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)");

                    b.Property<DateTime?>("StartedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Status")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)");

                    b.Property<int?>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime>("DbCreatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Description")
                        .HasMaxLength(4096)
                        .HasColumnType("varchar(4096)");

                    b.Property<DateTime?>("EndDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("ImageUrl")
                        .HasMaxLength(1024)
                        .HasColumnType("varchar(1024)");

                    b.Property<bool>("IsActive")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("IsClosed")
                        .HasColumnType("tinyint(1)");

                    b.Property<DateTime?>("LastUpdatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<int>("Platform")
                        .HasColumnType("int");

                    b.Property<long>("PlatformEventId")
                        .HasColumnType("bigint");

                    b.Property<string>("Slug")
                        .IsRequired()
                        .HasMaxLength(512)
                        .HasColumnType("varchar(512)");

                    b.Property<DateTime?>("StartDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Tags")
                        .IsRequired()
                        .HasMaxLength(1024)
                        .HasColumnType("varchar(1024)");

                    b.Property<string>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<string>("Category")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)");

                    b.Property<DateTime?>("ClosedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("ConditionId")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime>("DbCreatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Description")
                        .HasMaxLength(4096)
                        .HasColumnType("varchar(4096)");

                    b.Property<DateTime?>("EndDate")
                        .HasColumnType("datetime(6)");

                    b.Property<int>("EventId")
                        .HasColumnType("int");

                    b.Property<decimal>("FeeRateBps")
                        .HasColumnType("decimal(65,30)");

                    b.Property<string>("ImageUrl")
                        .HasMaxLength(1024)
                        .HasColumnType("varchar(1024)");

                    b.Property<bool>("IsNegRisk")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("IsResolved")
                        .HasColumnType("tinyint(1)");

                    b.Property<DateTime?>("LastTradesUpdatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime?>("LastUpdatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<decimal>("Liquidity")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<string>("MarketSlug")
                        .IsRequired()
                        .HasMaxLength(512)
                        .HasColumnType("varchar(512)");

                    b.Property<int>("Platform")
                        .HasColumnType("int");

                    b.Property<long>("PlatformMarketId")
                        .HasColumnType("bigint");

                    b.Property<string>("Question")
                        .IsRequired()
                        .HasMaxLength(1024)
                        .HasColumnType("varchar(1024)");

                    b.Property<string>("QuestionId")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<string>("ResolutionOutcome")
                        .HasColumnType("longtext");

                    b.Property<DateTime?>("StartDate")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("Subcategory")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)");

                    b.Property<decimal>("Volume")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("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<int>("MarketId")
                        .HasColumnType("int");

                    b.Property<decimal>("AverageTradeSize")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("BotActivityScore")
                        .HasPrecision(8, 4)
                        .HasColumnType("decimal(8,4)");

                    b.Property<DateTime>("LastCalculatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<int>("UniqueTradersCount")
                        .HasColumnType("int");

                    b.HasKey("MarketId");

                    b.ToTable("MarketAnalytics");
                });

            modelBuilder.Entity("Predictalytics.Domain.Entities.MarketOutcome", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<decimal>("CurrentPrice")
                        .HasPrecision(18, 8)
                        .HasColumnType("decimal(18,8)");

                    b.Property<string>("Label")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<int>("MarketId")
                        .HasColumnType("int");

                    b.Property<int>("OutcomeIndex")
                        .HasColumnType("int");

                    b.Property<string>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<int>("MarketOutcomeId")
                        .HasColumnType("int");

                    b.Property<decimal>("Price")
                        .HasPrecision(10, 6)
                        .HasColumnType("decimal(10,6)");

                    b.Property<DateTime>("Timestamp")
                        .HasColumnType("datetime(6)");

                    b.HasKey("Id");

                    b.HasIndex("MarketOutcomeId", "Timestamp");

                    b.ToTable("MarketOutcomePriceSnapshots");
                });

            modelBuilder.Entity("Predictalytics.Domain.Entities.PlatformConfig", b =>
                {
                    b.Property<int>("Id")
                        .HasColumnType("int");

                    b.Property<string>("BaseUrl")
                        .HasMaxLength(1024)
                        .HasColumnType("varchar(1024)");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("DisplayName")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<bool>("IsActive")
                        .HasColumnType("tinyint(1)");

                    b.Property<string>("Name")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)");

                    b.Property<string>("SettingsJson")
                        .HasColumnType("longtext");

                    b.Property<DateTime>("UpdatedAt")
                        .HasColumnType("datetime(6)");

                    b.HasKey("Id");

                    b.ToTable("PlatformConfigs");
                });

            modelBuilder.Entity("Predictalytics.Domain.Entities.Trade", b =>
                {
                    b.Property<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<long>("Id"));

                    b.Property<int?>("AggregatedCount")
                        .HasColumnType("int");

                    b.Property<decimal>("Amount")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<string>("AssetId")
                        .IsRequired()
                        .HasMaxLength(80)
                        .HasColumnType("varchar(80)");

                    b.Property<int?>("DbMarketId")
                        .HasColumnType("int");

                    b.Property<DateTime>("ExecutedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<bool>("IsContextEnriched")
                        .HasColumnType("tinyint(1)");

                    b.Property<string>("MarketId")
                        .IsRequired()
                        .HasMaxLength(66)
                        .HasColumnType("varchar(66)");

                    b.Property<int?>("MarketOutcomeId")
                        .HasColumnType("int");

                    b.Property<string>("Outcome")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)");

                    b.Property<int?>("OutcomeIndex")
                        .HasColumnType("int");

                    b.Property<int>("Platform")
                        .HasColumnType("int");

                    b.Property<string>("PlatformTradeId")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<decimal?>("PostTradePrice1m")
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal?>("PreTradePrice1m")
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("Price")
                        .HasPrecision(18, 6)
                        .HasColumnType("decimal(18,6)");

                    b.Property<int>("Side")
                        .HasColumnType("int");

                    b.Property<decimal>("Size")
                        .HasPrecision(14, 6)
                        .HasColumnType("decimal(14,6)");

                    b.Property<int>("TraderId")
                        .HasColumnType("int");

                    b.Property<string>("TransactionHash")
                        .HasMaxLength(66)
                        .HasColumnType("varchar(66)");

                    b.Property<decimal?>("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<long>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("bigint");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<long>("Id"));

                    b.Property<string>("EstimatedOrderType")
                        .IsRequired()
                        .HasMaxLength(32)
                        .HasColumnType("varchar(32)");

                    b.Property<decimal?>("EstimatedSlippage")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal?>("FollowerFillPrice10s")
                        .HasColumnType("decimal(65,30)");

                    b.Property<decimal?>("FollowerFillPrice60s")
                        .HasColumnType("decimal(65,30)");

                    b.Property<decimal?>("PriceAfter1m")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal?>("PriceBefore1m")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<long>("TradeId")
                        .HasColumnType("bigint");

                    b.HasKey("Id");

                    b.HasIndex("TradeId")
                        .IsUnique();

                    b.ToTable("TradeContexts");
                });

            modelBuilder.Entity("Predictalytics.Domain.Entities.Trader", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<string>("AiStrategySummary")
                        .HasColumnType("longtext");

                    b.Property<DateTime?>("AiStrategyUpdatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime>("CreatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<string>("DisplayName")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<int>("IngestMode")
                        .HasColumnType("int");

                    b.Property<bool>("IsAutoDiscovered")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("IsInitialImportComplete")
                        .HasColumnType("tinyint(1)");

                    b.Property<bool>("IsSuspectedBot")
                        .HasColumnType("tinyint(1)");

                    b.Property<DateTime?>("LastAnalyzedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime?>("LastApiErrorAt")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime?>("LastPolledAt")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime?>("LastTradesUpdatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<int?>("ManualPriorityOverride")
                        .HasColumnType("int");

                    b.Property<int>("MasterStatus")
                        .HasColumnType("int");

                    b.Property<string>("Notes")
                        .HasColumnType("longtext");

                    b.Property<int>("Platform")
                        .HasColumnType("int");

                    b.Property<string>("PlatformUserId")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)");

                    b.Property<int>("Strategy")
                        .HasColumnType("int");

                    b.Property<int>("Tier")
                        .HasColumnType("int");

                    b.Property<decimal>("TotalPnl")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<int>("TotalTrades")
                        .HasColumnType("int");

                    b.Property<decimal>("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<int>("TraderId")
                        .HasColumnType("int");

                    b.Property<decimal>("AvgLossReturnPct")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("AvgWinReturnPct")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("CopytradingCopyabilityScore")
                        .HasColumnType("decimal(65,30)");

                    b.Property<decimal>("CopytradingQualityScore")
                        .HasColumnType("decimal(65,30)");

                    b.Property<decimal>("CopytradingScore")
                        .HasColumnType("decimal(65,30)");

                    b.Property<decimal>("CurrentBalance")
                        .HasColumnType("decimal(65,30)");

                    b.Property<decimal>("EstimatedBankroll")
                        .HasColumnType("decimal(65,30)");

                    b.Property<DateTime>("LastCalculatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<decimal>("MedianHoldDurationHours")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("MedianLossReturnPct")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("MedianMarketVolumeUsd")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("MedianPostFillDriftPct")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("MedianWinReturnPct")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("NetEdgeAfterFeesPct")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("OverallPnL")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("OverallWinRate")
                        .HasPrecision(8, 4)
                        .HasColumnType("decimal(8,4)");

                    b.Property<decimal>("P50PositionSize")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("P90PositionSize")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("PnL24h")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("PnL30d")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("PnL7d")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<string>("PriceBandProfileJson")
                        .HasColumnType("longtext");

                    b.Property<decimal?>("ProfitFactor")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<int>("Trades30d")
                        .HasColumnType("int");

                    b.Property<decimal>("TradesPerWeek")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("WinRate24h")
                        .HasPrecision(8, 4)
                        .HasColumnType("decimal(8,4)");

                    b.Property<decimal>("WinRate30d")
                        .HasPrecision(8, 4)
                        .HasColumnType("decimal(8,4)");

                    b.Property<decimal>("WinRate7d")
                        .HasPrecision(8, 4)
                        .HasColumnType("decimal(8,4)");

                    b.HasKey("TraderId");

                    b.ToTable("TraderAnalytics");
                });

            modelBuilder.Entity("Predictalytics.Domain.Entities.TraderCategoryPerformance", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<string>("Category")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)");

                    b.Property<string>("Subcategory")
                        .IsRequired()
                        .HasMaxLength(128)
                        .HasColumnType("varchar(128)");

                    b.Property<decimal>("TotalInvested")
                        .HasColumnType("decimal(65,30)");

                    b.Property<decimal>("TotalPnL")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<int>("TotalTrades")
                        .HasColumnType("int");

                    b.Property<decimal>("TotalVolume")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<int>("TraderId")
                        .HasColumnType("int");

                    b.Property<int>("WinningTrades")
                        .HasColumnType("int");

                    b.HasKey("Id");

                    b.HasIndex("TraderId", "Category", "Subcategory")
                        .IsUnique();

                    b.ToTable("TraderCategoryPerformances");
                });

            modelBuilder.Entity("Predictalytics.Domain.Entities.TraderDailySnapshot", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<decimal>("CurrentBalance")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<DateTime>("Date")
                        .HasColumnType("datetime(6)");

                    b.Property<decimal>("TotalPnl")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<int>("TraderId")
                        .HasColumnType("int");

                    b.HasKey("Id");

                    b.HasIndex("TraderId", "Date")
                        .IsUnique();

                    b.ToTable("TraderDailySnapshots");
                });

            modelBuilder.Entity("Predictalytics.Domain.Entities.TraderPosition", b =>
                {
                    b.Property<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<decimal>("AvgCost")
                        .HasPrecision(10, 6)
                        .HasColumnType("decimal(10,6)");

                    b.Property<bool>("IsHistoryPruned")
                        .HasColumnType("tinyint(1)");

                    b.Property<long>("LastAppliedTradeId")
                        .HasColumnType("bigint");

                    b.Property<DateTime?>("LastTradeExecutedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime>("LastUpdatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<int>("MarketOutcomeId")
                        .HasColumnType("int");

                    b.Property<decimal>("RealizedPnl")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("SharesHeld")
                        .HasPrecision(14, 6)
                        .HasColumnType("decimal(14,6)");

                    b.Property<int>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<decimal>("ActivityScore")
                        .HasPrecision(5, 2)
                        .HasColumnType("decimal(5,2)");

                    b.Property<DateTime>("CalculatedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<decimal>("CombinedScore")
                        .HasPrecision(5, 2)
                        .HasColumnType("decimal(5,2)");

                    b.Property<decimal>("QualityScore")
                        .HasPrecision(5, 2)
                        .HasColumnType("decimal(5,2)");

                    b.Property<int>("Rank")
                        .HasColumnType("int");

                    b.Property<decimal>("TimingScore")
                        .HasPrecision(5, 2)
                        .HasColumnType("decimal(5,2)");

                    b.Property<int>("TraderId")
                        .HasColumnType("int");

                    b.Property<decimal>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<DateTime>("ComputedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<int>("TraderId")
                        .HasColumnType("int");

                    b.Property<string>("Trait")
                        .IsRequired()
                        .HasMaxLength(64)
                        .HasColumnType("varchar(64)");

                    b.Property<decimal>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<decimal>("AvgReturnPct")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<int>("ClosedMarkets")
                        .HasColumnType("int");

                    b.Property<DateTime>("ComputedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<decimal>("MedianLossReturnPct")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal>("MedianWinReturnPct")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<decimal?>("ProfitFactor")
                        .HasPrecision(18, 4)
                        .HasColumnType("decimal(18,4)");

                    b.Property<int>("TraderId")
                        .HasColumnType("int");

                    b.Property<decimal>("WinRate")
                        .HasPrecision(8, 4)
                        .HasColumnType("decimal(8,4)");

                    b.Property<DateTime>("WindowEnd")
                        .HasColumnType("datetime(6)");

                    b.Property<DateTime>("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<int>("Id")
                        .ValueGeneratedOnAdd()
                        .HasColumnType("int");

                    MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));

                    b.Property<DateTime>("AddedAt")
                        .HasColumnType("datetime(6)");

                    b.Property<bool>("AlertsEnabled")
                        .HasColumnType("tinyint(1)");

                    b.Property<string>("Label")
                        .IsRequired()
                        .HasMaxLength(256)
                        .HasColumnType("varchar(256)");

                    b.Property<string>("Notes")
                        .HasColumnType("longtext");

                    b.Property<int>("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
        }
    }
}
