Price reminder and init approval
* Start price reminder grain * Add config and init grain at startup * Save init wallet when already init
This commit is contained in:
@@ -8,12 +8,13 @@ namespace Managing.Infrastructure.Databases.PostgreSql.Entities;
|
||||
public class AccountEntity
|
||||
{
|
||||
[Key] public int Id { get; set; }
|
||||
[Required] public string Name { get; set; }
|
||||
[Required] public required string Name { get; set; }
|
||||
[Required] public TradingExchanges Exchange { get; set; }
|
||||
[Required] public AccountType Type { get; set; }
|
||||
[Required] public string? Key { get; set; }
|
||||
public string? Secret { get; set; }
|
||||
[Required] public int UserId { get; set; }
|
||||
[Required] public bool IsGmxInitialized { get; set; } = false;
|
||||
|
||||
// Navigation properties
|
||||
public UserEntity? User { get; set; }
|
||||
|
||||
@@ -64,6 +64,9 @@ public class ManagingDbContext : DbContext
|
||||
entity.Property(e => e.Type)
|
||||
.IsRequired()
|
||||
.HasConversion<string>(); // Store enum as string
|
||||
entity.Property(e => e.IsGmxInitialized)
|
||||
.IsRequired()
|
||||
.HasDefaultValue(false); // Default value for new records
|
||||
|
||||
// Create unique index on account name
|
||||
entity.HasIndex(e => e.Name).IsUnique();
|
||||
|
||||
@@ -72,7 +72,7 @@ public class PostgreSqlAccountRepository : IAccountRepository
|
||||
_cacheService.SaveValue(cacheKey, account, TimeSpan.FromHours(1));
|
||||
return account;
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception)
|
||||
{
|
||||
// If there's an error, try to reset the connection
|
||||
throw;
|
||||
@@ -117,4 +117,34 @@ public class PostgreSqlAccountRepository : IAccountRepository
|
||||
_context.Accounts.Add(accountEntity);
|
||||
await _context.SaveChangesAsync().ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public async Task UpdateAccountAsync(Account account)
|
||||
{
|
||||
try
|
||||
{
|
||||
await PostgreSqlConnectionHelper.EnsureConnectionOpenAsync(_context);
|
||||
|
||||
var existingEntity = await _context.Accounts
|
||||
.AsTracking()
|
||||
.FirstOrDefaultAsync(a => a.Name == account.Name)
|
||||
.ConfigureAwait(false);
|
||||
|
||||
if (existingEntity == null)
|
||||
{
|
||||
throw new ArgumentException($"Account '{account.Name}' not found");
|
||||
}
|
||||
|
||||
// Update properties
|
||||
existingEntity.IsGmxInitialized = account.IsGmxInitialized;
|
||||
await _context.SaveChangesAsync().ConfigureAwait(false);
|
||||
|
||||
// Clear cache for this account
|
||||
var cacheKey = $"account_{account.Name}";
|
||||
_cacheService.RemoveValue(cacheKey);
|
||||
}
|
||||
finally
|
||||
{
|
||||
await PostgreSqlConnectionHelper.SafeCloseConnectionAsync(_context);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,8 @@ public static class PostgreSqlMappers
|
||||
Key = entity.Key,
|
||||
Secret = entity.Secret,
|
||||
User = entity.User != null ? Map(entity.User) : null,
|
||||
Balances = new List<Balance>() // Empty list for now, balances handled separately if needed
|
||||
Balances = new List<Balance>(), // Empty list for now, balances handled separately if needed
|
||||
IsGmxInitialized = entity.IsGmxInitialized
|
||||
};
|
||||
}
|
||||
|
||||
@@ -50,6 +51,7 @@ public static class PostgreSqlMappers
|
||||
Key = account.Key,
|
||||
Secret = account.Secret,
|
||||
UserId = account.User.Id,
|
||||
IsGmxInitialized = account.IsGmxInitialized
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user