using Microsoft.AspNetCore.Mvc;
using DD.Persistence.Models.Common;

namespace DD.Persistence.API;

/// <summary>
/// Интерфейс для API, предназначенного для синхронизации данных, у которых есть дискриминатор
/// </summary>
public interface ISyncWithDiscriminatorApi<TDto>
{
    /// <summary>
    /// Получить порцию записей, начиная с заданной даты 
    /// </summary>
    /// <param name="idDiscriminator"></param>
    /// <param name="dateBegin"></param>
    /// <param name="take">количество записей</param>
    /// <param name="token"></param>
    /// <returns></returns>
    Task<ActionResult<IEnumerable<TDto>>> GetPart(Guid idDiscriminator, DateTimeOffset dateBegin, int take = 24 * 60 * 60, CancellationToken token = default);

    /// <summary>
    /// Получить диапазон дат, для которых есть данные в репозитории
    /// </summary>
    /// <param name="idDiscriminator"></param>
    /// <param name="token"></param>
    /// <returns></returns>
    Task<ActionResult<DatesRangeDto>> GetDatesRangeAsync(Guid idDiscriminator, CancellationToken token);
}