persistence/DD.Persistence.Client/Clients/Interfaces/Refit/IRefitChangeLogClient.cs

84 lines
3.5 KiB
C#
Raw Normal View History

using DD.Persistence.Models;
using DD.Persistence.Models.ChangeLog;
2025-01-13 17:45:49 +05:00
using DD.Persistence.Models.Common;
using DD.Persistence.Models.Requests;
using Refit;
namespace DD.Persistence.Client.Clients.Interfaces.Refit;
/// <summary>
/// Refit интерфейс для IRefitChangeLogClient
/// </summary>
public interface IRefitChangeLogClient : IRefitClient, IDisposable
{
private const string BaseRoute = "/api/ChangeLog";
/// <summary>
/// Импорт с заменой: удаление старых строк и добавление новых
/// </summary>
[Post($"{BaseRoute}/replace/{{idDiscriminator}}")]
Task<IApiResponse<int>> ClearAndAddRange(Guid idDiscriminator, IEnumerable<ChangeLogCreateRequest> dtos, string comment, CancellationToken token);
/// <summary>
/// Получение актуальных данных на определенную дату (с пагинацией)
/// </summary>
[Get($"{BaseRoute}/moment/{{idDiscriminator}}")]
Task<IApiResponse<PaginationContainer<ChangeLogBaseDto>>> GetByDate(
Guid idDiscriminator,
DateTimeOffset moment,
[Query] PaginationRequest paginationRequest,
CancellationToken token);
/// <summary>
/// Получение исторических данных за определенный период времени
/// </summary>
[Get($"{BaseRoute}/history/{{idDiscriminator}}")]
Task<IApiResponse<IEnumerable<ChangeLogDto>>> GetChangeLogForInterval(Guid idDiscriminator, DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token);
/// <summary>
/// Добавить несколько записей
/// </summary>
[Post($"{BaseRoute}/{{idDiscriminator}}")]
Task<IApiResponse<int>> AddRange(
Guid idDiscriminator,
IEnumerable<ChangeLogCreateRequest> dtos,
string comment,
CancellationToken token);
/// <summary>
/// Обновить несколько записей
/// </summary>
[Put($"{BaseRoute}")]
Task<IApiResponse<int>> UpdateRange(Guid idDiscriminator, IEnumerable<ChangeLogBaseDto> dtos, string comment, CancellationToken token);
/// <summary>
/// Удалить несколько записей
/// </summary>
[Delete($"{BaseRoute}")]
Task<IApiResponse<int>> DeleteRange(Guid idDiscriminator, [Body] IEnumerable<Guid> ids, string comment, CancellationToken token);
/// <summary>
/// Получение списка дат, в которые происходили изменения (день, месяц, год, без времени)
/// </summary>
[Get($"{BaseRoute}/datesRange/{{idDiscriminator}}")]
Task<IApiResponse<DatesRangeDto?>> GetDatesRange(Guid idDiscriminator, CancellationToken token);
/// <summary>
/// Получение статистики журнала изменений
/// </summary>
/// <param name="request"></param>
/// <param name="token"></param>
/// <returns></returns>
[Get($"{BaseRoute}/statistics")]
Task<IApiResponse<IEnumerable<StatisticsChangeLogDto>>> GetStatistics(ChangeLogQuery request, CancellationToken token);
/// <summary>
/// Получение истории по журналу изменений
/// </summary>
/// <param name="request"></param>
/// <param name="token"></param>
/// <returns></returns>
[Get($"{BaseRoute}/history")]
Task<IApiResponse<IEnumerable<ChangeLogCommitDto>>> GetHistory(ChangeLogQuery request, CancellationToken token);
}