using Persistence.Models;
using Persistence.Models.Requests;
using Refit;
namespace Persistence.Client.Clients;
///
/// Интерфейс для тестирования API, предназначенного для работы с записями ChangeLod
///
public interface IChangeLogClient
{
private const string BaseRoute = "/api/ChangeLog";
///
/// Импорт с заменой: удаление старых строк и добавление новых
///
///
///
///
[Post($"{BaseRoute}/replace/{{idDiscriminator}}")]
Task> ClearAndAddRange(Guid idDiscriminator, IEnumerable dtos);
///
/// Получение актуальных данных на определенную дату (с пагинацией)
///
///
///
/// параметры запроса фильтрации
/// параметры запроса пагинации
///
[Get($"{BaseRoute}/moment/{{idDiscriminator}}")]
Task>> GetByDate(
Guid idDiscriminator,
DateTimeOffset moment,
[Query] SectionPartRequest filterRequest,
[Query] PaginationRequest paginationRequest);
///
/// Получение исторических данных за определенный период времени
///
///
///
///
///
[Get($"{BaseRoute}/history/{{idDiscriminator}}")]
Task>> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd);
///
/// Добавить одну запись
///
///
///
///
[Post($"{BaseRoute}/{{idDiscriminator}}")]
Task> Add(Guid idDiscriminator, DataWithWellDepthAndSectionDto dto);
///
/// Добавить несколько записей
///
///
///
///
[Post($"{BaseRoute}/range/{{idDiscriminator}}")]
Task> AddRange(Guid idDiscriminator, IEnumerable dtos);
///
/// Обновить одну запись
///
///
///
///
[Put($"{BaseRoute}/{{idDiscriminator}}")]
Task> Update(Guid idDiscriminator, DataWithWellDepthAndSectionDto dto);
///
/// Обновить несколько записей
///
///
///
///
[Put($"{BaseRoute}/range/{{idDiscriminator}}")]
Task> UpdateRange(Guid idDiscriminator, IEnumerable dtos);
///
/// Удалить одну запись
///
///
///
[Delete($"{BaseRoute}")]
Task> Delete(Guid id);
///
/// Удалить несколько записей
///
///
///
[Delete($"{BaseRoute}/range")]
Task> DeleteRange([Body] IEnumerable ids);
///
/// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени)
///
///
///
[Get($"{BaseRoute}/datesRange")]
Task> GetDatesRange(Guid idDiscriminator);
}