using AsbCloudApp.Data.GTR;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

namespace AsbCloudApp.Repositories
{
    /// <summary>
    /// данные ГТИ
    /// </summary>
    public interface IGtrRepository        
    {
        /// <summary>
        /// добавить данные (для панели бурильщика)
        /// </summary>
        /// <param name="idTelemetry"></param>
        /// <param name="dto"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task SaveDataAsync(int idTelemetry, WitsRecordDto dto, CancellationToken token);

        /// <summary>
        /// получить  данные для клиента
        /// </summary>
        /// <param name="idWell"></param>
        /// <param name="dateBegin"></param>
        /// <param name="intervalSec"></param>
        /// <param name="approxPointsCount">кол-во элементов до которых эти данные прореживаются</param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<IEnumerable<WitsRecordDto>> GetAsync(int idWell,
            DateTime? dateBegin, double intervalSec = 600d,
            int approxPointsCount = 1024, CancellationToken token = default);

        /// <summary>
        /// получение последних данных ГТИ по record id
        /// </summary>
        /// <param name="idWell"></param>
        /// <param name="idRecord"></param>
        /// <param name="token"></param>
        /// <returns></returns>
        Task<IEnumerable<WitsItemRecordDto>> GetLastDataByRecordIdAsync(int idWell, int idRecord, CancellationToken token = default);
    }
}