Files
managing-apps/src/Managing.Api.Workers/Workers/PricesBaseWorker.cs
2025-04-29 01:58:50 +07:00

66 lines
1.7 KiB
C#

using Managing.Application.Workers;
using Managing.Application.Workers.Abstractions;
using static Managing.Common.Enums;
namespace Managing.Api.Workers.Workers;
public abstract class PricesBaseWorker<T> : BaseWorker<T> where T : class
{
private readonly IPricesService _pricesService;
private readonly IStatisticService _statisticService;
private readonly Timeframe _timeframe;
public PricesBaseWorker(
ILogger<T> logger,
IPricesService pricesService,
IWorkerService workerService,
IStatisticService statisticService,
TimeSpan delay,
WorkerType workerType,
Timeframe timeframe) : base(
workerType,
logger,
delay,
workerService
)
{
_pricesService = pricesService;
_statisticService = statisticService;
_timeframe = timeframe;
}
private List<Ticker> _eligibleTickers = new List<Ticker>
{
Ticker.BTC,
Ticker.ETH,
Ticker.BNB,
Ticker.DOGE,
Ticker.ADA,
Ticker.SOL,
Ticker.XRP,
Ticker.LINK,
Ticker.RENDER,
Ticker.SUI,
Ticker.GMX,
Ticker.ARB,
Ticker.PEPE,
Ticker.PENDLE,
Ticker.AAVE,
Ticker.HYPE
};
protected override async Task Run(CancellationToken cancellationToken)
{
var tickers = await _statisticService.GetTickers();
var filteredTickers = tickers
.Where(t => _eligibleTickers.Contains(t))
.ToList();
// Filter with the eligible tickers
foreach (var ticker in filteredTickers)
{
await _pricesService.UpdatePrice(TradingExchanges.Evm, ticker, _timeframe);
}
}
}