Setup bundle for backtest
This commit is contained in:
@@ -12,10 +12,14 @@ namespace Managing.Infrastructure.Databases;
|
||||
public class BacktestRepository : IBacktestRepository
|
||||
{
|
||||
private readonly IMongoRepository<BacktestDto> _backtestRepository;
|
||||
private readonly IMongoRepository<BundleBacktestRequestDto> _bundleBacktestRepository;
|
||||
|
||||
public BacktestRepository(IMongoRepository<BacktestDto> backtestRepository)
|
||||
public BacktestRepository(
|
||||
IMongoRepository<BacktestDto> backtestRepository,
|
||||
IMongoRepository<BundleBacktestRequestDto> bundleBacktestRepository)
|
||||
{
|
||||
_backtestRepository = backtestRepository;
|
||||
_bundleBacktestRepository = bundleBacktestRepository;
|
||||
}
|
||||
|
||||
// User-specific operations
|
||||
@@ -305,4 +309,107 @@ public class BacktestRepository : IBacktestRepository
|
||||
|
||||
return (mappedBacktests, (int)totalCount);
|
||||
}
|
||||
|
||||
// Bundle backtest methods
|
||||
public void InsertBundleBacktestRequestForUser(User user, BundleBacktestRequest bundleRequest)
|
||||
{
|
||||
bundleRequest.User = user;
|
||||
var dto = MapToDto(bundleRequest);
|
||||
_bundleBacktestRepository.InsertOne(dto);
|
||||
}
|
||||
|
||||
public IEnumerable<BundleBacktestRequest> GetBundleBacktestRequestsByUser(User user)
|
||||
{
|
||||
var bundleRequests = _bundleBacktestRepository.AsQueryable()
|
||||
.Where(b => b.User.Name == user.Name)
|
||||
.ToList();
|
||||
|
||||
return bundleRequests.Select(MapToDomain);
|
||||
}
|
||||
|
||||
public BundleBacktestRequest? GetBundleBacktestRequestByIdForUser(User user, string id)
|
||||
{
|
||||
var bundleRequest = _bundleBacktestRepository.FindOne(b => b.RequestId == id);
|
||||
|
||||
if (bundleRequest != null && bundleRequest.User.Name == user.Name)
|
||||
{
|
||||
return MapToDomain(bundleRequest);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public void UpdateBundleBacktestRequest(BundleBacktestRequest bundleRequest)
|
||||
{
|
||||
var dto = MapToDto(bundleRequest);
|
||||
_bundleBacktestRepository.ReplaceOne(dto);
|
||||
}
|
||||
|
||||
public void DeleteBundleBacktestRequestByIdForUser(User user, string id)
|
||||
{
|
||||
var bundleRequest = _bundleBacktestRepository.FindOne(b => b.RequestId == id);
|
||||
|
||||
if (bundleRequest != null && bundleRequest.User.Name == user.Name)
|
||||
{
|
||||
_bundleBacktestRepository.DeleteById(bundleRequest.Id.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public IEnumerable<BundleBacktestRequest> GetPendingBundleBacktestRequests()
|
||||
{
|
||||
var pendingRequests = _bundleBacktestRepository.AsQueryable()
|
||||
.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
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using Managing.Domain.Backtests;
|
||||
using Managing.Infrastructure.Databases.MongoDb.Attributes;
|
||||
using Managing.Infrastructure.Databases.MongoDb.Configurations;
|
||||
|
||||
namespace Managing.Infrastructure.Databases.MongoDb.Collections;
|
||||
|
||||
[BsonCollection("BundleBacktestRequests")]
|
||||
public class BundleBacktestRequestDto : Document
|
||||
{
|
||||
public string RequestId { get; set; } = string.Empty;
|
||||
public UserDto User { get; set; } = new();
|
||||
public DateTime? CompletedAt { get; set; }
|
||||
public BundleBacktestRequestStatus Status { get; set; }
|
||||
public string BacktestRequestsJson { get; set; } = string.Empty;
|
||||
public int TotalBacktests { get; set; }
|
||||
public int CompletedBacktests { get; set; }
|
||||
public int FailedBacktests { get; set; }
|
||||
public string? ErrorMessage { get; set; }
|
||||
public string? ProgressInfo { get; set; }
|
||||
public string? CurrentBacktest { get; set; }
|
||||
public int? EstimatedTimeRemainingSeconds { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user