using Binance.TradeRobot.Model.Base;
using FreeSql.DataAnnotations;
using System;

namespace Binance.TradeRobot.Model.Db
{

    [Table(Name = "spotorder", DisableSyncStructure = true)]
    public partial class SpotOrder
    {

        [Column(DbType = "bigint", IsPrimary = true)]
        public long Id { get; set; }

        [Column(DbType = "datetime")]
        public DateTime CreateTime { get; set; }

        /// <summary>
        /// 交易所Id
        /// </summary>
        [Column(DbType = "int", MapType = typeof(int))]
        public Enums.Exchange ExchangeId { get; set; }

        /// <summary>
        /// 历史利润
        /// </summary>
        [Column(DbType = "decimal(18,8)")]
        public decimal HistoryTotalProfit { get; set; } = 0.0M;

        /// <summary>
        /// 最后交易时间
        /// </summary>
        [Column(DbType = "datetime")]
        public DateTime? LastTradeTime { get; set; }

        /// <summary>
        /// 交易策略
        /// </summary>
        [Column(DbType = "int", MapType = typeof(int))]
        public Enums.TradePolicy PolicyType { get; set; }

        /// <summary>
        /// 订单利润
        /// </summary>
        [Column(DbType = "decimal(18,8)")]
        public decimal Profit { get; set; } = 0.0M;

        [Column(DbType = "bigint")]
        public long RobotId { get; set; }


        [Column(MapType = typeof(int), DbType = "int")]
        public Enums.OrderState State { get; set; }

        [Column(MapType = typeof(int), DbType = "int")]
        public Enums.TradeDirection TradeDirection { get; set; }

        [Column(StringLength = 50, IsNullable = false)]
        public string Symbol { get; set; }

        /// <summary>
        /// 成交总额
        /// </summary>
        [Column(DbType = "decimal(18,8)")]
        public decimal TradeAmount { get; set; } = 0.0M;

        /// <summary>
        /// 交易次数
        /// </summary>
        [Column(DbType = "int")]
        public int TradeCount { get; set; } = 0;

        /// <summary>
        /// 手续费
        /// </summary>
        [Column(DbType = "decimal(18,8)")]
        public decimal TradeFee { get; set; } = 0.0M;

        /// <summary>
        /// 交易手续费单位
        /// </summary>
        [Column(StringLength = 15, IsNullable = false)]
        public string TradeFeeUnit { get; set; }

        /// <summary>
        /// 成交均价
        /// </summary>
        [Column(DbType = "decimal(18,8)")]
        public decimal TradePrice { get; set; } = 0.0M;

        /// <summary>
        /// 交易量
        /// </summary>
        [Column(DbType = "decimal(18,8)")]
        public decimal TradeQuantity { get; set; }

    }

}