Fix db and fix endpoints

This commit is contained in:
2025-08-05 22:30:18 +07:00
parent 2dcbcc3ef2
commit 36529ae403
36 changed files with 5073 additions and 245 deletions

View File

@@ -130,7 +130,7 @@ public class ManagingDbContext : DbContext
entity.HasKey(e => e.Id);
entity.Property(e => e.Identifier).IsRequired().HasMaxLength(255);
entity.Property(e => e.RequestId).IsRequired().HasMaxLength(255);
entity.Property(e => e.UserName).IsRequired().HasMaxLength(255);
entity.Property(e => e.UserId).IsRequired();
entity.Property(e => e.FinalPnl).HasColumnType("decimal(18,8)");
entity.Property(e => e.GrowthPercentage).HasColumnType("decimal(18,8)");
entity.Property(e => e.HodlPercentage).HasColumnType("decimal(18,8)");
@@ -143,14 +143,20 @@ public class ManagingDbContext : DbContext
entity.Property(e => e.ScoreMessage).HasMaxLength(1000);
entity.Property(e => e.Metadata).HasColumnType("text");
// Configure relationship with User
entity.HasOne(e => e.User)
.WithMany()
.HasForeignKey(e => e.UserId)
.OnDelete(DeleteBehavior.SetNull);
// Create indexes for common queries
entity.HasIndex(e => e.Identifier).IsUnique();
entity.HasIndex(e => e.RequestId);
entity.HasIndex(e => e.UserName);
entity.HasIndex(e => e.UserId);
entity.HasIndex(e => e.Score);
// Composite indexes for efficient pagination and filtering
entity.HasIndex(e => new { e.UserName, e.Score });
entity.HasIndex(e => new { e.UserId, e.Score });
entity.HasIndex(e => new { e.RequestId, e.Score });
});
@@ -159,7 +165,7 @@ public class ManagingDbContext : DbContext
{
entity.HasKey(e => e.Id);
entity.Property(e => e.RequestId).IsRequired().HasMaxLength(255);
entity.Property(e => e.UserName).IsRequired().HasMaxLength(255);
entity.Property(e => e.UserId);
entity.Property(e => e.Name).IsRequired().HasMaxLength(255);
entity.Property(e => e.Status)
.IsRequired()
@@ -178,11 +184,11 @@ public class ManagingDbContext : DbContext
// Create indexes for common queries
entity.HasIndex(e => e.RequestId).IsUnique();
entity.HasIndex(e => e.UserName);
entity.HasIndex(e => e.UserId);
entity.HasIndex(e => e.Status);
// Composite index for user queries ordered by creation date
entity.HasIndex(e => new { e.UserName, e.CreatedAt });
entity.HasIndex(e => new { e.UserId, e.CreatedAt });
});
// Configure Scenario entity
@@ -190,13 +196,19 @@ public class ManagingDbContext : DbContext
{
entity.HasKey(e => e.Id);
entity.Property(e => e.Name).IsRequired().HasMaxLength(255);
entity.Property(e => e.UserName).HasMaxLength(255);
entity.Property(e => e.UserId).IsRequired();
// Configure relationship with User
entity.HasOne(e => e.User)
.WithMany()
.HasForeignKey(e => e.UserId)
.OnDelete(DeleteBehavior.SetNull);
// Create indexes
entity.HasIndex(e => e.UserName);
entity.HasIndex(e => e.UserId);
// Composite index for user scenarios
entity.HasIndex(e => new { e.UserName, e.Name });
entity.HasIndex(e => new { e.UserId, e.Name });
});
// Configure Indicator entity
@@ -207,13 +219,19 @@ public class ManagingDbContext : DbContext
entity.Property(e => e.Type).IsRequired().HasConversion<string>();
entity.Property(e => e.Timeframe).IsRequired().HasConversion<string>();
entity.Property(e => e.SignalType).IsRequired().HasConversion<string>();
entity.Property(e => e.UserName).HasMaxLength(255);
entity.Property(e => e.UserId);
// Configure relationship with User
entity.HasOne(e => e.User)
.WithMany()
.HasForeignKey(e => e.UserId)
.OnDelete(DeleteBehavior.SetNull);
// Create indexes
entity.HasIndex(e => e.UserName);
entity.HasIndex(e => e.UserId);
// Composite index for user indicators
entity.HasIndex(e => new { e.UserName, e.Name });
entity.HasIndex(e => new { e.UserId, e.Name });
});
// Configure ScenarioIndicator junction table
@@ -249,19 +267,25 @@ public class ManagingDbContext : DbContext
entity.Property(e => e.Type).IsRequired().HasConversion<string>();
entity.Property(e => e.SignalType).IsRequired().HasConversion<string>();
entity.Property(e => e.IndicatorName).IsRequired().HasMaxLength(255);
entity.Property(e => e.UserName).HasMaxLength(255);
entity.Property(e => e.UserId);
entity.Property(e => e.CandleJson).HasColumnType("text");
// Configure relationship with User
entity.HasOne(e => e.User)
.WithMany()
.HasForeignKey(e => e.UserId)
.OnDelete(DeleteBehavior.SetNull);
// Create indexes
entity.HasIndex(e => e.Identifier);
entity.HasIndex(e => e.UserName);
entity.HasIndex(e => e.UserId);
entity.HasIndex(e => e.Date);
entity.HasIndex(e => e.Ticker);
entity.HasIndex(e => e.Status);
// Composite indexes for common queries
entity.HasIndex(e => new { e.UserName, e.Date });
entity.HasIndex(e => new { e.Identifier, e.Date, e.UserName }).IsUnique();
entity.HasIndex(e => new { e.UserId, e.Date });
entity.HasIndex(e => new { e.Identifier, e.Date, e.UserId }).IsUnique();
});
// Configure Position entity
@@ -275,9 +299,15 @@ public class ManagingDbContext : DbContext
entity.Property(e => e.Initiator).IsRequired().HasConversion<string>();
entity.Property(e => e.SignalIdentifier).IsRequired().HasMaxLength(255);
entity.Property(e => e.AccountName).IsRequired().HasMaxLength(255);
entity.Property(e => e.UserName).HasMaxLength(255);
entity.Property(e => e.UserId);
entity.Property(e => e.MoneyManagementJson).HasColumnType("text");
// Configure relationship with User
entity.HasOne(e => e.User)
.WithMany()
.HasForeignKey(e => e.UserId)
.OnDelete(DeleteBehavior.SetNull);
// Configure relationships with trades
entity.HasOne(e => e.OpenTrade)
.WithMany()
@@ -301,12 +331,12 @@ public class ManagingDbContext : DbContext
// Create indexes
entity.HasIndex(e => e.Identifier).IsUnique();
entity.HasIndex(e => e.UserName);
entity.HasIndex(e => e.UserId);
entity.HasIndex(e => e.Status);
entity.HasIndex(e => e.Date);
// Composite indexes
entity.HasIndex(e => new { e.UserName, e.Identifier });
entity.HasIndex(e => new { e.UserId, e.Identifier });
});
// Configure Trade entity