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:
@@ -38,9 +38,28 @@ public class MoneyManagementService : IMoneyManagementService
|
||||
|
||||
if (moneyManagement == null)
|
||||
{
|
||||
request.User = user;
|
||||
await _settingsRepository.InsertMoneyManagement(request);
|
||||
return request;
|
||||
// Convert MoneyManagement to LightMoneyManagement for insertion
|
||||
var lightRequest = new LightMoneyManagement
|
||||
{
|
||||
Name = request.Name,
|
||||
Timeframe = request.Timeframe,
|
||||
StopLoss = request.StopLoss,
|
||||
TakeProfit = request.TakeProfit,
|
||||
Leverage = request.Leverage
|
||||
};
|
||||
|
||||
await _settingsRepository.InsertMoneyManagement(lightRequest, user);
|
||||
|
||||
// Return the created money management with user
|
||||
return new MoneyManagement
|
||||
{
|
||||
Name = lightRequest.Name,
|
||||
Timeframe = lightRequest.Timeframe,
|
||||
StopLoss = lightRequest.StopLoss,
|
||||
TakeProfit = lightRequest.TakeProfit,
|
||||
Leverage = lightRequest.Leverage,
|
||||
User = user
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -51,14 +70,28 @@ public class MoneyManagementService : IMoneyManagementService
|
||||
"You do not have permission to update this money management strategy.");
|
||||
}
|
||||
|
||||
moneyManagement.StopLoss = request.StopLoss;
|
||||
moneyManagement.TakeProfit = request.TakeProfit;
|
||||
moneyManagement.Leverage = request.Leverage;
|
||||
moneyManagement.Timeframe = request.Timeframe;
|
||||
moneyManagement.User = user;
|
||||
// Convert to LightMoneyManagement for update
|
||||
var lightRequest = new LightMoneyManagement
|
||||
{
|
||||
Name = request.Name,
|
||||
Timeframe = request.Timeframe,
|
||||
StopLoss = request.StopLoss,
|
||||
TakeProfit = request.TakeProfit,
|
||||
Leverage = request.Leverage
|
||||
};
|
||||
|
||||
_settingsRepository.UpdateMoneyManagement(moneyManagement);
|
||||
return moneyManagement;
|
||||
await _settingsRepository.UpdateMoneyManagementAsync(lightRequest, user);
|
||||
|
||||
// Return updated money management
|
||||
return new MoneyManagement
|
||||
{
|
||||
Name = lightRequest.Name,
|
||||
Timeframe = lightRequest.Timeframe,
|
||||
StopLoss = lightRequest.StopLoss,
|
||||
TakeProfit = lightRequest.TakeProfit,
|
||||
Leverage = lightRequest.Leverage,
|
||||
User = user
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,18 +100,18 @@ public class MoneyManagementService : IMoneyManagementService
|
||||
return await _settingsRepository.GetMoneyManagement(name);
|
||||
}
|
||||
|
||||
public IEnumerable<MoneyManagement> GetMoneyMangements(User user)
|
||||
public async Task<IEnumerable<MoneyManagement>> GetMoneyMangements(User user)
|
||||
{
|
||||
try
|
||||
{
|
||||
// Try to use user-specific repository method first
|
||||
return _settingsRepository.GetMoneyManagementsByUser(user);
|
||||
return await _settingsRepository.GetMoneyManagementsByUserAsync(user);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Fall back to filtering if user-specific endpoint is not implemented
|
||||
return _settingsRepository.GetMoneyManagements()
|
||||
.Where(mm => mm.User?.Name == user.Name);
|
||||
var allMoneyManagements = await _settingsRepository.GetMoneyManagementsAsync();
|
||||
return allMoneyManagements.Where(mm => mm.User?.Name == user.Name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,19 +139,19 @@ public class MoneyManagementService : IMoneyManagementService
|
||||
return moneyManagement;
|
||||
}
|
||||
|
||||
public bool DeleteMoneyManagement(User user, string name)
|
||||
public async Task<bool> DeleteMoneyManagement(User user, string name)
|
||||
{
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
// Try to use user-specific repository method first
|
||||
_settingsRepository.DeleteMoneyManagementByUser(user, name);
|
||||
await _settingsRepository.DeleteMoneyManagementByUserAsync(user, name);
|
||||
}
|
||||
catch
|
||||
{
|
||||
// Fall back to verifying user ownership before deletion
|
||||
var moneyManagement = _settingsRepository.GetMoneyManagement(name).Result;
|
||||
var moneyManagement = await _settingsRepository.GetMoneyManagement(name);
|
||||
|
||||
if (moneyManagement != null && moneyManagement.User?.Name != user.Name)
|
||||
{
|
||||
@@ -126,7 +159,7 @@ public class MoneyManagementService : IMoneyManagementService
|
||||
"You do not have permission to delete this money management strategy.");
|
||||
}
|
||||
|
||||
_settingsRepository.DeleteMoneyManagement(name);
|
||||
await _settingsRepository.DeleteMoneyManagementAsync(name);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -138,14 +171,14 @@ public class MoneyManagementService : IMoneyManagementService
|
||||
}
|
||||
}
|
||||
|
||||
public bool DeleteMoneyManagements(User user)
|
||||
public async Task<bool> DeleteMoneyManagements(User user)
|
||||
{
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
// Try to use user-specific repository method first
|
||||
_settingsRepository.DeleteMoneyManagementsByUser(user);
|
||||
await _settingsRepository.DeleteMoneyManagementsByUserAsync(user);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user