//
using System;
using Managing.Infrastructure.Databases.PostgreSql;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
#nullable disable
namespace Managing.Infrastructure.Databases.Migrations
{
[DbContext(typeof(ManagingDbContext))]
[Migration("20250805133422_UniqueUsername")]
partial class UniqueUsername
{
///
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "8.0.11")
.HasAnnotation("Relational:MaxIdentifierLength", 63);
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.AccountEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("Exchange")
.IsRequired()
.HasColumnType("text");
b.Property("Key")
.HasMaxLength(500)
.HasColumnType("character varying(500)");
b.Property("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("Secret")
.HasMaxLength(500)
.HasColumnType("character varying(500)");
b.Property("Type")
.IsRequired()
.HasColumnType("text");
b.Property("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("Name")
.IsUnique();
b.HasIndex("UserId");
b.ToTable("Accounts");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.AgentSummaryEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("ActiveStrategiesCount")
.HasColumnType("integer");
b.Property("AgentName")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("Losses")
.HasColumnType("integer");
b.Property("Runtime")
.HasColumnType("timestamp with time zone");
b.Property("TotalPnL")
.HasColumnType("decimal(18,8)");
b.Property("TotalROI")
.HasColumnType("decimal(18,8)");
b.Property("TotalVolume")
.HasPrecision(18, 8)
.HasColumnType("numeric(18,8)");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserId")
.HasColumnType("integer");
b.Property("Wins")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("AgentName");
b.HasIndex("TotalPnL");
b.HasIndex("UserId")
.IsUnique();
b.ToTable("AgentSummaries");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.BacktestEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("ConfigJson")
.IsRequired()
.HasColumnType("jsonb");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("EndDate")
.HasColumnType("timestamp with time zone");
b.Property("Fees")
.HasColumnType("decimal(18,8)");
b.Property("FinalPnl")
.HasColumnType("decimal(18,8)");
b.Property("GrowthPercentage")
.HasColumnType("decimal(18,8)");
b.Property("HodlPercentage")
.HasColumnType("decimal(18,8)");
b.Property("Identifier")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("Metadata")
.HasColumnType("text");
b.Property("MoneyManagementJson")
.IsRequired()
.HasColumnType("jsonb");
b.Property("PositionsJson")
.IsRequired()
.HasColumnType("jsonb");
b.Property("RequestId")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("Score")
.HasColumnType("double precision");
b.Property("ScoreMessage")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("text");
b.Property("SignalsJson")
.IsRequired()
.HasColumnType("jsonb");
b.Property("StartDate")
.HasColumnType("timestamp with time zone");
b.Property("StatisticsJson")
.HasColumnType("jsonb");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserName")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("WinRate")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("Identifier")
.IsUnique();
b.HasIndex("RequestId");
b.HasIndex("Score");
b.HasIndex("UserName");
b.HasIndex("RequestId", "Score");
b.HasIndex("UserName", "Score");
b.ToTable("Backtests");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.BotEntity", b =>
{
b.Property("Identifier")
.ValueGeneratedOnAdd()
.HasMaxLength(255)
.HasColumnType("uuid");
b.Property("CreateDate")
.HasColumnType("timestamp with time zone");
b.Property("Fees")
.HasPrecision(18, 8)
.HasColumnType("numeric(18,8)");
b.Property("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("Pnl")
.HasPrecision(18, 8)
.HasColumnType("numeric(18,8)");
b.Property("Roi")
.HasPrecision(18, 8)
.HasColumnType("numeric(18,8)");
b.Property("StartupTime")
.HasColumnType("timestamp with time zone");
b.Property("Status")
.IsRequired()
.HasColumnType("text");
b.Property("Ticker")
.HasColumnType("integer");
b.Property("TradeLosses")
.HasColumnType("integer");
b.Property("TradeWins")
.HasColumnType("integer");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserId")
.HasColumnType("integer");
b.Property("Volume")
.HasPrecision(18, 8)
.HasColumnType("numeric(18,8)");
b.HasKey("Identifier");
b.HasIndex("Identifier")
.IsUnique();
b.HasIndex("Status");
b.HasIndex("UserId");
b.ToTable("Bots");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.BundleBacktestRequestEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("BacktestRequestsJson")
.IsRequired()
.HasColumnType("text");
b.Property("CompletedAt")
.HasColumnType("timestamp with time zone");
b.Property("CompletedBacktests")
.HasColumnType("integer");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("CurrentBacktest")
.HasMaxLength(500)
.HasColumnType("character varying(500)");
b.Property("ErrorMessage")
.HasColumnType("text");
b.Property("EstimatedTimeRemainingSeconds")
.HasColumnType("integer");
b.Property("FailedBacktests")
.HasColumnType("integer");
b.Property("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("ProgressInfo")
.HasColumnType("text");
b.Property("RequestId")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("ResultsJson")
.IsRequired()
.HasColumnType("jsonb");
b.Property("Status")
.IsRequired()
.HasColumnType("text");
b.Property("TotalBacktests")
.HasColumnType("integer");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserId")
.HasColumnType("integer");
b.Property("UserName")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.HasKey("Id");
b.HasIndex("RequestId")
.IsUnique();
b.HasIndex("Status");
b.HasIndex("UserId");
b.HasIndex("UserName");
b.HasIndex("UserName", "CreatedAt");
b.ToTable("BundleBacktestRequests");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.FundingRateEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("Date")
.HasColumnType("timestamp with time zone");
b.Property("Direction")
.HasColumnType("integer");
b.Property("Exchange")
.HasColumnType("integer");
b.Property("OpenInterest")
.HasPrecision(18, 8)
.HasColumnType("decimal(18,8)");
b.Property("Rate")
.HasPrecision(18, 8)
.HasColumnType("decimal(18,8)");
b.Property("Ticker")
.HasColumnType("integer");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.HasIndex("Date");
b.HasIndex("Exchange");
b.HasIndex("Ticker");
b.HasIndex("Exchange", "Date");
b.HasIndex("Ticker", "Exchange");
b.HasIndex("Ticker", "Exchange", "Date")
.IsUnique();
b.ToTable("FundingRates");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.GeneticRequestEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("Balance")
.HasColumnType("decimal(18,8)");
b.Property("BestChromosome")
.HasMaxLength(4000)
.HasColumnType("character varying(4000)");
b.Property("BestFitness")
.HasColumnType("double precision");
b.Property("BestFitnessSoFar")
.HasColumnType("double precision");
b.Property("BestIndividual")
.HasMaxLength(4000)
.HasColumnType("character varying(4000)");
b.Property("CompletedAt")
.HasColumnType("timestamp with time zone");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("CrossoverMethod")
.IsRequired()
.HasColumnType("text");
b.Property("CurrentGeneration")
.HasColumnType("integer");
b.Property("EligibleIndicatorsJson")
.HasMaxLength(2000)
.HasColumnType("character varying(2000)");
b.Property("ElitismPercentage")
.HasColumnType("integer");
b.Property("EndDate")
.HasColumnType("timestamp with time zone");
b.Property("ErrorMessage")
.HasMaxLength(2000)
.HasColumnType("character varying(2000)");
b.Property("Generations")
.HasColumnType("integer");
b.Property("MaxTakeProfit")
.HasColumnType("double precision");
b.Property("MutationMethod")
.IsRequired()
.HasColumnType("text");
b.Property("MutationRate")
.HasColumnType("double precision");
b.Property("PopulationSize")
.HasColumnType("integer");
b.Property("ProgressInfo")
.HasMaxLength(4000)
.HasColumnType("character varying(4000)");
b.Property("RequestId")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("SelectionMethod")
.IsRequired()
.HasColumnType("text");
b.Property("StartDate")
.HasColumnType("timestamp with time zone");
b.Property("Status")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("character varying(50)");
b.Property("Ticker")
.IsRequired()
.HasColumnType("text");
b.Property("Timeframe")
.IsRequired()
.HasColumnType("text");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("RequestId")
.IsUnique();
b.HasIndex("Status");
b.HasIndex("UserId");
b.ToTable("GeneticRequests");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.IndicatorEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("CyclePeriods")
.HasColumnType("integer");
b.Property("FastPeriods")
.HasColumnType("integer");
b.Property("MinimumHistory")
.HasColumnType("integer");
b.Property("Multiplier")
.HasColumnType("double precision");
b.Property("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("Period")
.HasColumnType("integer");
b.Property("SignalPeriods")
.HasColumnType("integer");
b.Property("SignalType")
.IsRequired()
.HasColumnType("text");
b.Property("SlowPeriods")
.HasColumnType("integer");
b.Property("SmoothPeriods")
.HasColumnType("integer");
b.Property("StochPeriods")
.HasColumnType("integer");
b.Property("Timeframe")
.IsRequired()
.HasColumnType("text");
b.Property("Type")
.IsRequired()
.HasColumnType("text");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserName")
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.HasKey("Id");
b.HasIndex("UserName");
b.HasIndex("UserName", "Name");
b.ToTable("Indicators");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.MoneyManagementEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("Leverage")
.HasColumnType("decimal(18,8)");
b.Property("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("StopLoss")
.HasColumnType("decimal(18,8)");
b.Property("TakeProfit")
.HasColumnType("decimal(18,8)");
b.Property("Timeframe")
.IsRequired()
.HasColumnType("text");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserId")
.HasColumnType("integer");
b.Property("UserName")
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.HasKey("Id");
b.HasIndex("UserId");
b.HasIndex("UserName");
b.HasIndex("UserName", "Name");
b.ToTable("MoneyManagements");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.PositionEntity", b =>
{
b.Property("Identifier")
.ValueGeneratedOnAdd()
.HasColumnType("uuid");
b.Property("AccountName")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("Date")
.HasColumnType("timestamp with time zone");
b.Property("Initiator")
.IsRequired()
.HasColumnType("text");
b.Property("MoneyManagementJson")
.HasColumnType("text");
b.Property("OpenTradeId")
.HasColumnType("integer");
b.Property("OriginDirection")
.IsRequired()
.HasColumnType("text");
b.Property("ProfitAndLoss")
.HasColumnType("decimal(18,8)");
b.Property("SignalIdentifier")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("Status")
.IsRequired()
.HasColumnType("text");
b.Property("StopLossTradeId")
.HasColumnType("integer");
b.Property("TakeProfit1TradeId")
.HasColumnType("integer");
b.Property("TakeProfit2TradeId")
.HasColumnType("integer");
b.Property("Ticker")
.IsRequired()
.HasColumnType("text");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserName")
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.HasKey("Identifier");
b.HasIndex("Date");
b.HasIndex("Identifier")
.IsUnique();
b.HasIndex("OpenTradeId");
b.HasIndex("Status");
b.HasIndex("StopLossTradeId");
b.HasIndex("TakeProfit1TradeId");
b.HasIndex("TakeProfit2TradeId");
b.HasIndex("UserName");
b.HasIndex("UserName", "Identifier");
b.ToTable("Positions");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.ScenarioEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("LoopbackPeriod")
.HasColumnType("integer");
b.Property("Name")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserName")
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.HasKey("Id");
b.HasIndex("UserName");
b.HasIndex("UserName", "Name");
b.ToTable("Scenarios");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.ScenarioIndicatorEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("IndicatorId")
.HasColumnType("integer");
b.Property("ScenarioId")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("IndicatorId");
b.HasIndex("ScenarioId", "IndicatorId")
.IsUnique();
b.ToTable("ScenarioIndicators");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.SignalEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CandleJson")
.HasColumnType("text");
b.Property("Confidence")
.IsRequired()
.HasColumnType("text");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("Date")
.HasColumnType("timestamp with time zone");
b.Property("Direction")
.IsRequired()
.HasColumnType("text");
b.Property("Identifier")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("IndicatorName")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("SignalType")
.IsRequired()
.HasColumnType("text");
b.Property("Status")
.IsRequired()
.HasColumnType("text");
b.Property("Ticker")
.IsRequired()
.HasColumnType("text");
b.Property("Timeframe")
.IsRequired()
.HasColumnType("text");
b.Property("Type")
.IsRequired()
.HasColumnType("text");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("UserName")
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.HasKey("Id");
b.HasIndex("Date");
b.HasIndex("Identifier");
b.HasIndex("Status");
b.HasIndex("Ticker");
b.HasIndex("UserName");
b.HasIndex("UserName", "Date");
b.HasIndex("Identifier", "Date", "UserName")
.IsUnique();
b.ToTable("Signals");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.SpotlightOverviewEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("DateTime")
.HasColumnType("timestamp with time zone");
b.Property("Identifier")
.HasColumnType("uuid");
b.Property("ScenarioCount")
.HasColumnType("integer");
b.Property("SpotlightsJson")
.IsRequired()
.HasColumnType("jsonb");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.HasIndex("DateTime");
b.HasIndex("Identifier")
.IsUnique();
b.HasIndex("DateTime", "ScenarioCount");
b.ToTable("SpotlightOverviews");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.SynthMinersLeaderboardEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid");
b.Property("Asset")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)");
b.Property("CacheKey")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("IsBacktest")
.HasColumnType("boolean");
b.Property("MinersData")
.IsRequired()
.HasColumnType("jsonb");
b.Property("SignalDate")
.HasColumnType("timestamp with time zone");
b.Property("TimeIncrement")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("CacheKey")
.IsUnique();
b.ToTable("SynthMinersLeaderboards");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.SynthPredictionEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid");
b.Property("Asset")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)");
b.Property("CacheKey")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("IsBacktest")
.HasColumnType("boolean");
b.Property("MinerUid")
.HasColumnType("integer");
b.Property("PredictionData")
.IsRequired()
.HasColumnType("jsonb");
b.Property("SignalDate")
.HasColumnType("timestamp with time zone");
b.Property("TimeIncrement")
.HasColumnType("integer");
b.Property("TimeLength")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("CacheKey")
.IsUnique();
b.ToTable("SynthPredictions");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.TopVolumeTickerEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("Date")
.HasColumnType("timestamp with time zone");
b.Property("Exchange")
.HasColumnType("integer");
b.Property("Rank")
.HasColumnType("integer");
b.Property("Ticker")
.HasColumnType("integer");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("Volume")
.HasPrecision(18, 8)
.HasColumnType("decimal(18,8)");
b.HasKey("Id");
b.HasIndex("Date");
b.HasIndex("Exchange");
b.HasIndex("Ticker");
b.HasIndex("Date", "Rank");
b.HasIndex("Exchange", "Date");
b.ToTable("TopVolumeTickers");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.TradeEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("Date")
.HasColumnType("timestamp with time zone");
b.Property("Direction")
.IsRequired()
.HasColumnType("text");
b.Property("ExchangeOrderId")
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("Fee")
.HasColumnType("decimal(18,8)");
b.Property("Leverage")
.HasColumnType("decimal(18,8)");
b.Property("Message")
.HasColumnType("text");
b.Property("Price")
.HasColumnType("decimal(18,8)");
b.Property("Quantity")
.HasColumnType("decimal(18,8)");
b.Property("Status")
.IsRequired()
.HasColumnType("text");
b.Property("Ticker")
.IsRequired()
.HasColumnType("text");
b.Property("TradeType")
.IsRequired()
.HasColumnType("text");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.HasKey("Id");
b.HasIndex("Date");
b.HasIndex("ExchangeOrderId");
b.HasIndex("Status");
b.ToTable("Trades");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.TraderEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("Address")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property("AverageLoss")
.HasPrecision(18, 8)
.HasColumnType("decimal(18,8)");
b.Property("AverageWin")
.HasPrecision(18, 8)
.HasColumnType("decimal(18,8)");
b.Property("CreatedAt")
.HasColumnType("timestamp with time zone");
b.Property("IsBestTrader")
.HasColumnType("boolean");
b.Property("Pnl")
.HasPrecision(18, 8)
.HasColumnType("decimal(18,8)");
b.Property("Roi")
.HasPrecision(18, 8)
.HasColumnType("decimal(18,8)");
b.Property("TradeCount")
.HasColumnType("integer");
b.Property("UpdatedAt")
.HasColumnType("timestamp with time zone");
b.Property("Winrate")
.HasColumnType("integer");
b.HasKey("Id");
b.HasIndex("Address");
b.HasIndex("IsBestTrader");
b.HasIndex("Pnl");
b.HasIndex("Roi");
b.HasIndex("Winrate");
b.HasIndex("Address", "IsBestTrader")
.IsUnique();
b.HasIndex("IsBestTrader", "Roi");
b.HasIndex("IsBestTrader", "Winrate");
b.ToTable("Traders");
});
modelBuilder.Entity("Managing.Infrastructure.Databases.PostgreSql.Entities.UserEntity", b =>
{
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id"));
b.Property("AgentName")
.HasMaxLength(255)
.HasColumnType("character varying(255)");
b.Property