using AsbCloudApp.Data;
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace AsbCloudApp.Repositories;
///
/// Интерфейс для работы с объектами, содержащими историю изменений
///
///
///
public interface IChangeLogQueryBuilder
where TDto : IId
{
///
/// Применение запроса
///
/// Запрос
///
IChangeLogQueryBuilderWithKnownTimezone ApplyRequest(TRequest request);
///
/// Материализация записей
///
///
///
///
Task> GetData(TimeSpan offset, CancellationToken token);
///
/// Материализация записей с историей
///
///
///
///
Task>> GetChangeLogData(TimeSpan offset, CancellationToken token);
}
///
/// Интерфейс для работы с объектами, содержащими историю изменений. С известной временной зоной
///
///
///
public interface IChangeLogQueryBuilderWithKnownTimezone: IChangeLogQueryBuilder
where TDto : IId
{
///
/// Материализация записей. Временная зона определяется по запросу из последнего ApplyRequest
///
///
///
Task> GetData(CancellationToken token);
///
/// Материализация записей с историей. Временная зона определяется по запросу из последнего ApplyRequest
///
///
///
Task>> GetChangeLogData(CancellationToken token);
}