using SQLite;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FLY.Thick.Blowing.Server.Model
{

    /// <summary>
    /// 原始数据库 写操作
    /// </summary>
    public class OrgHistoryDb
    {
        OrgDbModel orgDbModel;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="orgDBModel"></param>
        public void Init(OrgDbModel orgDBModel)
        {
            this.orgDbModel = orgDBModel;
        }

        /// <summary>
        /// 按时间删除原始数据库
        /// </summary>
        /// <param name="day"></param>
        public void KeepDbSize(int day)
        {
            if (day <= 2)
                day = 2;

            DateTime del_time = DateTime.Now - TimeSpan.FromDays(day);
            string det_time_str = del_time.ToStringOfSQLiteFieldType();
            List<string> sqls = new List<string>();
            sqls.Add(
                $"DELETE FROM {orgDbModel.TbSign.TableName}" +
                $" WHERE Time < {det_time_str}");

            sqls.Add(
                $"DELETE FROM {orgDbModel.TbRoll.TableName}" +
                $" WHERE Time < {det_time_str}");

            orgDbModel.sqliteHelper.QueryTran(sqls);

        }


        /// <summary>
        /// 记录 原始数据.转向信号
        /// </summary>
        /// <param name="lc_Sign"></param>
        public void AddSignData(
            Lc_Sign lc_Sign
            )
        {
            lc_Sign.ID = orgDbModel.TbSign.FreeID;

            //SQLs
            List<string> sqls = new List<string>();
            var db_Sign = OrgLc_AutoMapperProfile.Mapper.Map<Db_Sign>(lc_Sign);
            sqls.Add(SQLiteHelper.GetInsertCommandText(db_Sign));

            orgDbModel.sqliteHelper.QueryTranAsync(sqls);
        }
        /// <summary>
        /// 记录 原始数据.辊信号
        /// </summary>
        /// <param name="lc_Roll"></param>
        public void AddRollData(
            Lc_Roll lc_Roll
            )
        {
            lc_Roll.ID = orgDbModel.TbRoll.FreeID;

            //SQLs
            List<string> sqls = new List<string>();
            var db_Roll = OrgLc_AutoMapperProfile.Mapper.Map<Db_Roll>(lc_Roll);
            sqls.Add(SQLiteHelper.GetInsertCommandText(db_Roll));

            orgDbModel.sqliteHelper.QueryTranAsync(sqls);
        }

    }
}