Add bundle backtest

This commit is contained in:
2025-07-21 17:03:27 +07:00
parent 0870edee61
commit 6f49f2659f
20 changed files with 492 additions and 132 deletions

View File

@@ -314,7 +314,7 @@ public class BacktestRepository : IBacktestRepository
public void InsertBundleBacktestRequestForUser(User user, BundleBacktestRequest bundleRequest)
{
bundleRequest.User = user;
var dto = MapToDto(bundleRequest);
var dto = MongoMappers.Map(bundleRequest);
_bundleBacktestRepository.InsertOne(dto);
}
@@ -324,7 +324,7 @@ public class BacktestRepository : IBacktestRepository
.Where(b => b.User.Name == user.Name)
.ToList();
return bundleRequests.Select(MapToDomain);
return bundleRequests.Select(MongoMappers.Map);
}
public BundleBacktestRequest? GetBundleBacktestRequestByIdForUser(User user, string id)
@@ -333,7 +333,7 @@ public class BacktestRepository : IBacktestRepository
if (bundleRequest != null && bundleRequest.User.Name == user.Name)
{
return MapToDomain(bundleRequest);
return MongoMappers.Map(bundleRequest);
}
return null;
@@ -341,7 +341,7 @@ public class BacktestRepository : IBacktestRepository
public void UpdateBundleBacktestRequest(BundleBacktestRequest bundleRequest)
{
var dto = MapToDto(bundleRequest);
var dto = MongoMappers.Map(bundleRequest);
_bundleBacktestRepository.ReplaceOne(dto);
}
@@ -361,55 +361,6 @@ public class BacktestRepository : IBacktestRepository
.Where(b => b.Status == BundleBacktestRequestStatus.Pending)
.ToList();
return pendingRequests.Select(MapToDomain);
}
/// <summary>
/// Maps a domain model to DTO
/// </summary>
/// <param name="domain">The domain model</param>
/// <returns>The DTO</returns>
private static BundleBacktestRequestDto MapToDto(BundleBacktestRequest domain)
{
return new BundleBacktestRequestDto
{
RequestId = domain.RequestId,
User = MongoMappers.Map(domain.User),
CompletedAt = domain.CompletedAt,
Status = domain.Status,
BacktestRequestsJson = domain.BacktestRequestsJson,
TotalBacktests = domain.TotalBacktests,
CompletedBacktests = domain.CompletedBacktests,
FailedBacktests = domain.FailedBacktests,
ErrorMessage = domain.ErrorMessage,
ProgressInfo = domain.ProgressInfo,
CurrentBacktest = domain.CurrentBacktest,
EstimatedTimeRemainingSeconds = domain.EstimatedTimeRemainingSeconds
};
}
/// <summary>
/// Maps a DTO to domain model
/// </summary>
/// <param name="dto">The DTO</param>
/// <returns>The domain model</returns>
private static BundleBacktestRequest MapToDomain(BundleBacktestRequestDto dto)
{
return new BundleBacktestRequest
{
RequestId = dto.RequestId,
User = MongoMappers.Map(dto.User),
CreatedAt = dto.CreatedAt,
CompletedAt = dto.CompletedAt,
Status = dto.Status,
BacktestRequestsJson = dto.BacktestRequestsJson,
TotalBacktests = dto.TotalBacktests,
CompletedBacktests = dto.CompletedBacktests,
FailedBacktests = dto.FailedBacktests,
ErrorMessage = dto.ErrorMessage,
ProgressInfo = dto.ProgressInfo,
CurrentBacktest = dto.CurrentBacktest,
EstimatedTimeRemainingSeconds = dto.EstimatedTimeRemainingSeconds
};
return pendingRequests.Select(MongoMappers.Map);
}
}

View File

@@ -19,4 +19,5 @@ public class BundleBacktestRequestDto : Document
public string? ProgressInfo { get; set; }
public string? CurrentBacktest { get; set; }
public int? EstimatedTimeRemainingSeconds { get; set; }
}
public string Name { get; set; } = string.Empty;
}

View File

@@ -1108,4 +1108,51 @@ public static class MongoMappers
}
#endregion
#region BundleBacktestRequests
public static BundleBacktestRequestDto Map(BundleBacktestRequest domain)
{
if (domain == null) return null;
return new BundleBacktestRequestDto
{
RequestId = domain.RequestId,
User = Map(domain.User),
CompletedAt = domain.CompletedAt,
Status = domain.Status,
BacktestRequestsJson = domain.BacktestRequestsJson,
TotalBacktests = domain.TotalBacktests,
CompletedBacktests = domain.CompletedBacktests,
FailedBacktests = domain.FailedBacktests,
ErrorMessage = domain.ErrorMessage,
ProgressInfo = domain.ProgressInfo,
CurrentBacktest = domain.CurrentBacktest,
EstimatedTimeRemainingSeconds = domain.EstimatedTimeRemainingSeconds,
Name = domain.Name
};
}
public static BundleBacktestRequest Map(BundleBacktestRequestDto dto)
{
if (dto == null) return null;
return new BundleBacktestRequest
{
RequestId = dto.RequestId,
User = Map(dto.User),
CreatedAt = dto.CreatedAt,
CompletedAt = dto.CompletedAt,
Status = dto.Status,
BacktestRequestsJson = dto.BacktestRequestsJson,
TotalBacktests = dto.TotalBacktests,
CompletedBacktests = dto.CompletedBacktests,
FailedBacktests = dto.FailedBacktests,
ErrorMessage = dto.ErrorMessage,
ProgressInfo = dto.ProgressInfo,
CurrentBacktest = dto.CurrentBacktest,
EstimatedTimeRemainingSeconds = dto.EstimatedTimeRemainingSeconds,
Name = dto.Name
};
}
#endregion
}