Delete backtest by request id
This commit is contained in:
@@ -500,6 +500,7 @@ public class BacktestController : BaseController
|
||||
|
||||
/// <summary>
|
||||
/// Deletes a specific genetic request by ID for the authenticated user.
|
||||
/// Also deletes all related backtests associated with this genetic request.
|
||||
/// </summary>
|
||||
/// <param name="id">The ID of the genetic request to delete.</param>
|
||||
/// <returns>An ActionResult indicating the outcome of the operation.</returns>
|
||||
@@ -508,8 +509,17 @@ public class BacktestController : BaseController
|
||||
public async Task<ActionResult> DeleteGeneticRequest(string id)
|
||||
{
|
||||
var user = await GetUser();
|
||||
|
||||
// First, delete the genetic request
|
||||
_geneticService.DeleteGeneticRequestByIdForUser(user, id);
|
||||
return Ok();
|
||||
|
||||
// Then, delete all related backtests
|
||||
var backtestsDeleted = _backtester.DeleteBacktestsByRequestId(id);
|
||||
|
||||
return Ok(new {
|
||||
GeneticRequestDeleted = true,
|
||||
RelatedBacktestsDeleted = backtestsDeleted
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -14,4 +14,5 @@ public interface IBacktestRepository
|
||||
void DeleteBacktestByIdForUser(User user, string id);
|
||||
void DeleteBacktestsByIdsForUser(User user, IEnumerable<string> ids);
|
||||
void DeleteAllBacktestsForUser(User user);
|
||||
void DeleteBacktestsByRequestId(string requestId);
|
||||
}
|
||||
@@ -59,6 +59,7 @@ namespace Managing.Application.Abstractions.Services
|
||||
bool DeleteBacktestByUser(User user, string id);
|
||||
bool DeleteBacktestsByIdsForUser(User user, IEnumerable<string> ids);
|
||||
bool DeleteBacktestsByUser(User user);
|
||||
bool DeleteBacktestsByRequestId(string requestId);
|
||||
(IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByUserPaginated(User user, int page, int pageSize, string sortBy = "score", string sortOrder = "desc");
|
||||
|
||||
|
||||
|
||||
@@ -552,6 +552,20 @@ namespace Managing.Application.Backtesting
|
||||
}
|
||||
}
|
||||
|
||||
public bool DeleteBacktestsByRequestId(string requestId)
|
||||
{
|
||||
try
|
||||
{
|
||||
_backtestRepository.DeleteBacktestsByRequestId(requestId);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_logger.LogError(ex, "Failed to delete backtests for request ID {RequestId}", requestId);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public (IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByUserPaginated(User user, int page,
|
||||
int pageSize, string sortBy = "score", string sortOrder = "desc")
|
||||
{
|
||||
|
||||
@@ -212,6 +212,18 @@ public class BacktestRepository : IBacktestRepository
|
||||
}
|
||||
}
|
||||
|
||||
public void DeleteBacktestsByRequestId(string requestId)
|
||||
{
|
||||
var backtests = _backtestRepository.AsQueryable()
|
||||
.Where(b => b.RequestId == requestId)
|
||||
.ToList();
|
||||
|
||||
foreach (var backtest in backtests)
|
||||
{
|
||||
_backtestRepository.DeleteById(backtest.Id.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public (IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByUserPaginated(User user, int page,
|
||||
int pageSize, string sortBy = "score", string sortOrder = "desc")
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user