Postgres (#30)

* Add postgres

* Migrate users

* Migrate geneticRequest

* Try to fix Concurrent call

* Fix asyncawait

* Fix async and concurrent

* Migrate backtests

* Add cache for user by address

* Fix backtest migration

* Fix not open connection

* Fix backtest command error

* Fix concurrent

* Fix all concurrency

* Migrate TradingRepo

* Fix scenarios

* Migrate statistic repo

* Save botbackup

* Add settings et moneymanagement

* Add bot postgres

* fix a bit more backups

* Fix bot model

* Fix loading backup

* Remove cache market for read positions

* Add workers to postgre

* Fix workers api

* Reduce get Accounts for workers

* Migrate synth to postgre

* Fix backtest saved

* Remove mongodb

* botservice decorrelation

* Fix tradingbot scope call

* fix tradingbot

* fix concurrent

* Fix scope for genetics

* Fix account over requesting

* Fix bundle backtest worker

* fix a lot of things

* fix tab backtest

* Remove optimized moneymanagement

* Add light signal to not use User and too much property

* Make money management lighter

* insert indicators to awaitable

* Migrate add strategies to await

* Refactor scenario and indicator retrieval to use asynchronous methods throughout the application

* add more async await

* Add services

* Fix and clean

* Fix bot a bit

* Fix bot and add message for cooldown

* Remove fees

* Add script to deploy db

* Update dfeeploy script

* fix script

* Add idempotent script and backup

* finish script migration

* Fix did user and agent name on start bot
This commit is contained in:
Oda
2025-07-27 15:42:17 +02:00
committed by GitHub
parent 361bfbf6e8
commit 422fecea7b
294 changed files with 23953 additions and 7272 deletions

View File

@@ -8,5 +8,5 @@ public interface IAccountRepository
Task<Account> GetAccountByKeyAsync(string key);
Task InsertAccountAsync(Account account);
void DeleteAccountByName(string name);
IEnumerable<Account> GetAccounts();
Task<IEnumerable<Account>> GetAccountsAsync();
}

View File

@@ -7,25 +7,39 @@ public interface IBacktestRepository
{
void InsertBacktestForUser(User user, Backtest result);
IEnumerable<Backtest> GetBacktestsByUser(User user);
Task<IEnumerable<Backtest>> GetBacktestsByUserAsync(User user);
IEnumerable<Backtest> GetBacktestsByRequestId(string requestId);
Task<IEnumerable<Backtest>> GetBacktestsByRequestIdAsync(string requestId);
(IEnumerable<LightBacktest> Backtests, int TotalCount) GetBacktestsByRequestIdPaginated(string requestId, int page,
int pageSize, string sortBy = "score", string sortOrder = "desc");
Task<(IEnumerable<LightBacktest> Backtests, int TotalCount)> GetBacktestsByRequestIdPaginatedAsync(string requestId,
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");
Backtest GetBacktestByIdForUser(User user, string id);
void DeleteBacktestByIdForUser(User user, string id);
void DeleteBacktestsByIdsForUser(User user, IEnumerable<string> ids);
Task<(IEnumerable<LightBacktest> Backtests, int TotalCount)> GetBacktestsByUserPaginatedAsync(User user, int page,
int pageSize, string sortBy = "score", string sortOrder = "desc");
Task<Backtest> GetBacktestByIdForUserAsync(User user, string id);
Task DeleteBacktestByIdForUserAsync(User user, string id);
Task DeleteBacktestsByIdsForUserAsync(User user, IEnumerable<string> ids);
void DeleteAllBacktestsForUser(User user);
void DeleteBacktestsByRequestId(string requestId);
Task DeleteBacktestsByRequestIdAsync(string requestId);
// Bundle backtest methods
void InsertBundleBacktestRequestForUser(User user, BundleBacktestRequest bundleRequest);
IEnumerable<BundleBacktestRequest> GetBundleBacktestRequestsByUser(User user);
Task<IEnumerable<BundleBacktestRequest>> GetBundleBacktestRequestsByUserAsync(User user);
BundleBacktestRequest? GetBundleBacktestRequestByIdForUser(User user, string id);
Task<BundleBacktestRequest?> GetBundleBacktestRequestByIdForUserAsync(User user, string id);
void UpdateBundleBacktestRequest(BundleBacktestRequest bundleRequest);
Task UpdateBundleBacktestRequestAsync(BundleBacktestRequest bundleRequest);
void DeleteBundleBacktestRequestByIdForUser(User user, string id);
Task DeleteBundleBacktestRequestByIdForUserAsync(User user, string id);
IEnumerable<BundleBacktestRequest> GetBundleBacktestRequestsByStatus(BundleBacktestRequestStatus status);
Task<IEnumerable<BundleBacktestRequest>> GetBundleBacktestRequestsByStatusAsync(BundleBacktestRequestStatus status);
}

View File

@@ -5,7 +5,8 @@ namespace Managing.Application.Abstractions.Repositories;
public interface IBotRepository
{
Task InsertBotAsync(BotBackup bot);
IEnumerable<BotBackup> GetBots();
Task<IEnumerable<BotBackup>> GetBotsAsync();
Task UpdateBackupBot(BotBackup bot);
Task DeleteBotBackup(string botName);
Task<BotBackup?> GetBotByIdentifierAsync(string identifier);
}

View File

@@ -34,7 +34,7 @@ public interface IGeneticRepository
/// Updates a genetic request
/// </summary>
/// <param name="geneticRequest">The genetic request to update</param>
void UpdateGeneticRequest(GeneticRequest geneticRequest);
Task UpdateGeneticRequestAsync(GeneticRequest geneticRequest);
/// <summary>
/// Deletes a genetic request by ID for a user
@@ -50,8 +50,9 @@ public interface IGeneticRepository
void DeleteAllGeneticRequestsForUser(User user);
/// <summary>
/// Gets all pending genetic requests across all users
/// Gets all genetic requests by status across all users
/// </summary>
/// <returns>Collection of pending genetic requests</returns>
IEnumerable<GeneticRequest> GetPendingGeneticRequests();
/// <param name="status">The status to filter by</param>
/// <returns>Collection of genetic requests</returns>
Task<List<GeneticRequest>> GetGeneticRequestsAsync(GeneticRequestStatus status);
}

View File

@@ -6,15 +6,15 @@ namespace Managing.Application.Abstractions.Repositories;
public interface ISettingsRepository
{
Task<MoneyManagement> GetMoneyManagement(string name);
Task InsertMoneyManagement(MoneyManagement request);
void UpdateMoneyManagement(MoneyManagement moneyManagement);
IEnumerable<MoneyManagement> GetMoneyManagements();
void DeleteMoneyManagement(string name);
void DeleteMoneyManagements();
Task InsertMoneyManagement(LightMoneyManagement request, User user);
Task UpdateMoneyManagementAsync(LightMoneyManagement moneyManagement, User user);
Task<IEnumerable<MoneyManagement>> GetMoneyManagementsAsync();
Task DeleteMoneyManagementAsync(string name);
Task DeleteMoneyManagementsAsync();
// User-specific operations (these should eventually replace the above methods)
Task<MoneyManagement> GetMoneyManagementByUser(User user, string name);
IEnumerable<MoneyManagement> GetMoneyManagementsByUser(User user);
void DeleteMoneyManagementByUser(User user, string name);
void DeleteMoneyManagementsByUser(User user);
}
Task<IEnumerable<MoneyManagement>> GetMoneyManagementsByUserAsync(User user);
Task DeleteMoneyManagementByUserAsync(User user, string name);
Task DeleteMoneyManagementsByUserAsync(User user);
}

View File

@@ -6,19 +6,26 @@ public interface IStatisticRepository
{
Task InsertTopVolumeTicker(TopVolumeTicker topVolumeTicker);
IList<TopVolumeTicker> GetTopVolumeTickers(DateTime date);
Task<IList<TopVolumeTicker>> GetTopVolumeTickersAsync(DateTime date);
Task SaveSpotligthtOverview(SpotlightOverview overview);
IList<SpotlightOverview> GetSpotlightOverviews(DateTime date);
Task<IList<SpotlightOverview>> GetSpotlightOverviewsAsync(DateTime date);
void UpdateSpotlightOverview(SpotlightOverview overview);
List<Trader> GetBestTraders();
void UpdateBestTrader(Trader trader);
Task UpdateSpotlightOverviewAsync(SpotlightOverview overview);
Task<List<Trader>> GetBestTradersAsync();
Task UpdateBestTraderAsync(Trader trader);
Task InsertBestTrader(Trader trader);
Task RemoveBestTrader(Trader trader);
List<Trader> GetBadTraders();
void UpdateBadTrader(Trader trader);
Task<List<Trader>> GetBadTradersAsync();
Task UpdateBadTraderAsync(Trader trader);
Task InsertBadTrader(Trader trader);
Task RemoveBadTrader(Trader trader);
List<FundingRate> GetFundingRates();
Task<List<FundingRate>> GetFundingRatesAsync();
Task RemoveFundingRate(FundingRate oldRate);
Task InsertFundingRate(FundingRate newRate);
void UpdateFundingRate(FundingRate oldRate, FundingRate newRate);
Task UpdateFundingRateAsync(FundingRate oldRate, FundingRate newRate);
}

View File

@@ -8,27 +8,23 @@ namespace Managing.Application.Abstractions.Repositories;
public interface ITradingRepository
{
Scenario GetScenarioByName(string scenario);
void InsertSignal(Signal signal);
IEnumerable<Signal> GetSignalsByUser(User user);
Signal GetSignalByIdentifier(string identifier, User user = null);
void InsertPosition(Position position);
void UpdatePosition(Position position);
Indicator GetStrategyByName(string strategy);
void InsertScenario(Scenario scenario);
void InsertStrategy(Indicator indicator);
IEnumerable<Scenario> GetScenarios();
IEnumerable<Indicator> GetIndicators();
void DeleteScenario(string name);
void DeleteIndicator(string name);
void DeleteScenarios();
void DeleteIndicators();
Position GetPositionByIdentifier(string identifier);
IEnumerable<Position> GetPositions(PositionInitiator positionInitiator);
IEnumerable<Position> GetPositionsByStatus(PositionStatus positionStatus);
Fee GetFee(TradingExchanges exchange);
void InsertFee(Fee fee);
void UpdateFee(Fee fee);
void UpdateScenario(Scenario scenario);
void UpdateStrategy(Indicator indicator);
Task<Scenario> GetScenarioByNameAsync(string scenario);
Task<IEnumerable<Signal>> GetSignalsByUserAsync(User user);
Task<Signal> GetSignalByIdentifierAsync(string identifier, User user = null);
Task InsertPositionAsync(Position position);
Task UpdatePositionAsync(Position position);
Task<Indicator> GetStrategyByNameAsync(string strategy);
Task InsertScenarioAsync(Scenario scenario);
Task InsertStrategyAsync(Indicator indicator);
Task<IEnumerable<Scenario>> GetScenariosAsync();
Task<IEnumerable<Indicator>> GetStrategiesAsync();
Task<IEnumerable<Indicator>> GetIndicatorsAsync();
Task DeleteScenarioAsync(string name);
Task DeleteIndicatorAsync(string name);
Task<Position> GetPositionByIdentifierAsync(string identifier);
Task<IEnumerable<Position>> GetPositionsAsync(PositionInitiator positionInitiator);
Task<IEnumerable<Position>> GetPositionsByStatusAsync(PositionStatus positionStatus);
Task UpdateScenarioAsync(Scenario scenario);
Task UpdateStrategyAsync(Indicator indicator);
}

View File

@@ -8,7 +8,7 @@ public interface IWorkerRepository
Task DisableWorker(Enums.WorkerType workerType);
Task EnableWorker(Enums.WorkerType workerType);
Task<Worker> GetWorkerAsync(Enums.WorkerType workerType);
IEnumerable<Worker> GetWorkers();
Task<IEnumerable<Worker>> GetWorkers();
Task InsertWorker(Worker worker);
Task UpdateWorker(Enums.WorkerType workerType, int executionCount);
}