using AsbCloudApp.Data;
using System.Collections.Generic;
namespace AsbCloudApp.Services;
///
/// Делегат обновления состояния задачи
///
///
public delegate void OnJobProgressDelagate(JobDto job);
///
/// Сервис прореживания архива БД.
/// Удаляет часть телеметрии.
/// Понижает частоту записей в БД с 1 запись за 1 сек до 1 запись за N сек.
///
public interface IReduceSamplingService
{
///
/// Получить все задания. Задания удаляются минимум через 10 сек после выполнения, возможно позднее.
///
/// Enumerable of JobDto or empty
IEnumerable GetJobs();
///
/// Получить состояние определенной задачи
///
///
///
JobDto? GetOrDefaultState(int idTelemetry);
///
/// Создать задачу прореживанию архива и добавить её в очередь на выполнение
///
/// телеметрия для прореживания
/// колбек процесса выполнения
/// созданная задача или задача из очереди
/// задача добавлена == true
bool TryEnqueueRediceSamplingJob(int idTelemetry, OnJobProgressDelagate onProgress, out JobDto jobDto);
}