40 lines
2.3 KiB
C#
40 lines
2.3 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using Managing.Common;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using static Managing.Common.Enums;
|
|
|
|
namespace Managing.Infrastructure.Databases.PostgreSql.Entities;
|
|
|
|
[Table("Users")]
|
|
[Index(nameof(Name), IsUnique = true)]
|
|
public class UserEntity
|
|
{
|
|
[Key] public int Id { get; set; }
|
|
[Required] [MaxLength(255)] public required string Name { get; set; }
|
|
[MaxLength(255)] public string? AgentName { get; set; }
|
|
public string? AvatarUrl { get; set; }
|
|
public string? TelegramChannel { get; set; }
|
|
public string? OwnerWalletAddress { get; set; }
|
|
public DateTimeOffset? LastConnectionDate { get; set; }
|
|
public bool IsAdmin { get; set; }
|
|
|
|
// User Settings - Trading Configuration
|
|
[Column(TypeName = "decimal(18,8)")] public decimal? LowEthAmountAlert { get; set; } = 1.5m; // Default: MinimumTradeEthBalanceUsd
|
|
public bool EnableAutoswap { get; set; } = false;
|
|
[Column(TypeName = "decimal(18,8)")] public decimal? AutoswapAmount { get; set; } = 3m; // Default: AutoSwapAmount
|
|
public int? MaxWaitingTimeForPositionToGetFilledSeconds { get; set; } = 600; // Default: 10 minutes (600 seconds)
|
|
[Column(TypeName = "decimal(18,8)")] public decimal? MaxTxnGasFeePerPosition { get; set; } = 1.5m; // Default: MaximumGasFeeUsd
|
|
public bool IsGmxEnabled { get; set; } = false;
|
|
[Column(TypeName = "decimal(5,2)")] public decimal? GmxSlippage { get; set; } = 0.5m; // Default: 0.5% slippage for GMX trades
|
|
|
|
// User Settings - Indicator Combo Configuration
|
|
public Confidence? MinimumConfidence { get; set; } = Confidence.Medium; // Default: Medium confidence for context indicators
|
|
[Column(TypeName = "decimal(5,4)")] public decimal? TrendStrongAgreementThreshold { get; set; } = 0.66m; // Default: 66% agreement required
|
|
[Column(TypeName = "decimal(5,4)")] public decimal? SignalAgreementThreshold { get; set; } = 0.5m; // Default: 50% agreement required
|
|
public bool? AllowSignalTrendOverride { get; set; } = true; // Default: Allow signal strategies to override trends
|
|
public TradingExchanges? DefaultExchange { get; set; } = TradingExchanges.GmxV2; // Default exchange
|
|
|
|
// Navigation properties
|
|
public virtual ICollection<AccountEntity> Accounts { get; set; } = new List<AccountEntity>();
|
|
} |