Add async for saving backtests
This commit is contained in:
@@ -8,6 +8,7 @@ namespace Managing.Application.Abstractions.Repositories;
|
||||
public interface IBacktestRepository
|
||||
{
|
||||
void InsertBacktestForUser(User user, Backtest result);
|
||||
Task InsertBacktestForUserAsync(User user, Backtest result);
|
||||
IEnumerable<Backtest> GetBacktestsByUser(User user);
|
||||
Task<IEnumerable<Backtest>> GetBacktestsByUserAsync(User user);
|
||||
IEnumerable<Backtest> GetBacktestsByRequestId(Guid requestId);
|
||||
|
||||
@@ -79,6 +79,7 @@ public class BacktestTradingBotGrain : Grain, IBacktestTradingBotGrain
|
||||
// Initialize wallet balance with first candle
|
||||
tradingBot.WalletBalances.Clear();
|
||||
tradingBot.WalletBalances.Add(candles.FirstOrDefault()!.Date, config.BotTradingBalance);
|
||||
var initialBalance = config.BotTradingBalance;
|
||||
|
||||
var fixedCandles = new HashSet<Candle>();
|
||||
// Process all candles following the exact pattern from GetBacktestingResult
|
||||
@@ -166,13 +167,13 @@ public class BacktestTradingBotGrain : Grain, IBacktestTradingBotGrain
|
||||
Metadata = metadata,
|
||||
StartDate = candles.FirstOrDefault()!.OpenTime,
|
||||
EndDate = candles.LastOrDefault()!.OpenTime,
|
||||
InitialBalance = tradingBot.WalletBalances.FirstOrDefault().Value,
|
||||
InitialBalance = initialBalance,
|
||||
NetPnl = finalPnl - fees,
|
||||
};
|
||||
|
||||
if (save && user != null)
|
||||
{
|
||||
_backtestRepository.InsertBacktestForUser(user, result);
|
||||
await _backtestRepository.InsertBacktestForUserAsync(user, result);
|
||||
}
|
||||
|
||||
// Send notification if backtest meets criteria
|
||||
|
||||
@@ -32,6 +32,16 @@ public class PostgreSqlBacktestRepository : IBacktestRepository
|
||||
_context.SaveChanges();
|
||||
}
|
||||
|
||||
public async Task InsertBacktestForUserAsync(User user, Backtest result)
|
||||
{
|
||||
ValidateBacktestData(result);
|
||||
result.User = user;
|
||||
|
||||
var entity = PostgreSqlMappers.Map(result);
|
||||
_context.Backtests.Add(entity);
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validates that all numeric fields in the backtest are of the correct type
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user