Delete backtest by request id

This commit is contained in:
2025-07-18 19:34:16 +07:00
parent cb031522b4
commit fd117f9a2f
5 changed files with 39 additions and 1 deletions

View File

@@ -500,6 +500,7 @@ public class BacktestController : BaseController
/// <summary> /// <summary>
/// Deletes a specific genetic request by ID for the authenticated user. /// Deletes a specific genetic request by ID for the authenticated user.
/// Also deletes all related backtests associated with this genetic request.
/// </summary> /// </summary>
/// <param name="id">The ID of the genetic request to delete.</param> /// <param name="id">The ID of the genetic request to delete.</param>
/// <returns>An ActionResult indicating the outcome of the operation.</returns> /// <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) public async Task<ActionResult> DeleteGeneticRequest(string id)
{ {
var user = await GetUser(); var user = await GetUser();
// First, delete the genetic request
_geneticService.DeleteGeneticRequestByIdForUser(user, id); _geneticService.DeleteGeneticRequestByIdForUser(user, id);
return Ok();
// Then, delete all related backtests
var backtestsDeleted = _backtester.DeleteBacktestsByRequestId(id);
return Ok(new {
GeneticRequestDeleted = true,
RelatedBacktestsDeleted = backtestsDeleted
});
} }
/// <summary> /// <summary>

View File

@@ -14,4 +14,5 @@ public interface IBacktestRepository
void DeleteBacktestByIdForUser(User user, string id); void DeleteBacktestByIdForUser(User user, string id);
void DeleteBacktestsByIdsForUser(User user, IEnumerable<string> ids); void DeleteBacktestsByIdsForUser(User user, IEnumerable<string> ids);
void DeleteAllBacktestsForUser(User user); void DeleteAllBacktestsForUser(User user);
void DeleteBacktestsByRequestId(string requestId);
} }

View File

@@ -59,6 +59,7 @@ namespace Managing.Application.Abstractions.Services
bool DeleteBacktestByUser(User user, string id); bool DeleteBacktestByUser(User user, string id);
bool DeleteBacktestsByIdsForUser(User user, IEnumerable<string> ids); bool DeleteBacktestsByIdsForUser(User user, IEnumerable<string> ids);
bool DeleteBacktestsByUser(User user); 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"); (IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByUserPaginated(User user, int page, int pageSize, string sortBy = "score", string sortOrder = "desc");

View File

@@ -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, public (IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByUserPaginated(User user, int page,
int pageSize, string sortBy = "score", string sortOrder = "desc") int pageSize, string sortBy = "score", string sortOrder = "desc")
{ {

View File

@@ -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, public (IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByUserPaginated(User user, int page,
int pageSize, string sortBy = "score", string sortOrder = "desc") int pageSize, string sortBy = "score", string sortOrder = "desc")
{ {