Промежуточный пуш

This commit is contained in:
Olga Nemt 2024-11-08 18:24:52 +05:00
parent 65e2cb0977
commit f008228754
13 changed files with 356 additions and 0 deletions

View File

@ -0,0 +1,79 @@
using Persistence.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.API;
/// <summary>
/// Интерфейс для работы с API, предназначенного для CRUD-операций над данными
/// </summary>
public interface IApiChangeLog<TDto, TChangeLogDto>
where TDto : class, new()
where TChangeLogDto : ChangeLogDto<TDto>
{
/// <summary>
/// Получение исторических данных на текущую дату
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetChangeLogCurrent(CancellationToken token);
/// <summary>
/// Получение исторических данных на определенную дату
/// </summary>
/// <param name="historyMoment"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TChangeLogDto>> GetChangeLogForDate(DateTimeOffset historyMoment, CancellationToken token);
/// <summary>
/// Добавить одну запись
/// </summary>
/// <param name="dto"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> AddAsync(TDto dto, CancellationToken token);
/// <summary>
/// Добавить несколько записей
/// </summary>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> AddRangeAsync(IEnumerable<TDto> dtos, CancellationToken token);
/// <summary>
/// Обновить одну запись
/// </summary>
/// <param name="dto"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> UpdateAsync(TDto dto, CancellationToken token);
/// <summary>
/// Обновить несколько записей
/// </summary>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> UpdateRangeAsync(IEnumerable<TDto> dtos, CancellationToken token);
/// <summary>
/// Удалить одну запись
/// </summary>
/// <param name="id"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> DeleteAsync(int id, CancellationToken token);
/// <summary>
/// Удалить несколько записей
/// </summary>
/// <param name="ids"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> DeleteRangeAsync(IEnumerable<int> ids, CancellationToken token);
}

View File

@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.API;
/// <summary>
/// Интерфейс для API, предназначенного для работы со справочниками
/// </summary>
public interface IApiDictionaryElement<TDto> where TDto : class, new()
{
/// <summary>
/// Получить все данные справочника
/// </summary>
/// <param name="dictionaryKey">ключ справочника</param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetDataAsync(Guid dictionaryKey, CancellationToken token);
/// <summary>
/// Добавить элемент в справочник
/// </summary>
/// <param name="dictionaryKey">ключ справочника</param>
/// <param name="dto"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<Guid> AddAsync(Guid dictionaryKey, TDto dto, CancellationToken token);
/// <summary>
/// Изменить одну запись
/// </summary>
/// <param name="dictionaryKey">ключ справочника</param>
/// <param name="dictionaryElementKey">ключ элемента в справочнике</param>
/// <param name="dto"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<Guid> UpdateAsync(Guid dictionaryKey, Guid dictionaryElementKey, TDto dto, CancellationToken token);
/// <summary>
/// Удалить одну запись
/// </summary>
/// <param name="dictionaryKey">ключ справочника</param>
/// <param name="dictionaryElementKey">ключ элемента в справочнике</param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> DeleteAsync(Guid dictionaryKey, Guid dictionaryElementKey, CancellationToken token);
}

View File

@ -0,0 +1,47 @@
using Microsoft.AspNetCore.Mvc;
using Persistence.Models;
using System.Threading.Tasks;
namespace Persistence.API;
/// <summary>
/// Интерфейс для работы с API, предназначенного для работы с уставками
/// </summary>
public interface IApiSetpoint
{
/// <summary>
/// Получить актуальные значения уставок
/// </summary>
/// <param name="setpoitKeys"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<ActionResult<IEnumerable<SetpointValueDto>>> GetCurrentAsync(IEnumerable<Guid> setpoitKeys, CancellationToken token);
/// <summary>
/// Получить значения уставок за определенный момент времени
/// </summary>
/// <param name="setpoitKeys"></param>
/// <param name="historyMoment">дата, на которую получаем данные</param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<SetpointValueDto>> GetHistoryAsync(IEnumerable<Guid> setpoitKeys, DateTimeOffset historyMoment, CancellationToken token);
/// <summary>
/// Получить историю изменений значений уставок
/// </summary>
/// <param name="setpoitKeys"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<Dictionary<Guid, IEnumerable<SetpointLogDto>>> GetLogAsync(IEnumerable<Guid> setpoitKeys, CancellationToken token);
/// <summary>
/// Метод сохранения уставки
/// </summary>
/// <param name="setpointKey">ключ операции</param>
/// <param name="newValue">значение</param>
/// <param name="token"></param>
/// <returns></returns>
/// to do
/// id User учесть в соответствующем методе репозитория
Task<int> SaveAsync(Guid setpointKey, object newValue, CancellationToken token);
}

View File

@ -0,0 +1,30 @@
using Persistence.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.API;
/// <summary>
/// Интерфейс для работы с API, предназначенного для синхронизации данных
/// </summary>
public interface IApiSync<TDto> where TDto : class, new()
{
/// <summary>
/// Получить порцию записей, начиная с заданной даты
/// </summary>
/// <param name="dateBegin"></param>
/// <param name="take">количество записей</param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetPartAsync(DateTimeOffset dateBegin, int take = 24 * 60 * 60, CancellationToken token = default);
/// <summary>
/// Получить диапазон дат, для которых есть данные в репозитории
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
Task<DatesRangeDto> GetDatesRangeAsync(CancellationToken token);
}

View File

@ -0,0 +1,25 @@
using Persistence.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.API;
/// Интерфейс для работы с API, предназначенного для работы с табличными данными
public interface IApiTableData<TDto, TRequest>
where TDto : class, new()
where TRequest : RequestDto
{
/// <summary>
/// Получить страницу списка объектов
/// </summary>
/// <param name="skip"></param>
/// <param name="take"></param>
/// <param name="sortSettings">строка с настройками сортировки</param>
/// <param name="request">параметры фильтрации</param>
/// <param name="token"></param>
/// <returns></returns>
Task<PaginationContainer<TDto>> GetPageAsync(TRequest request, CancellationToken token);
}

View File

@ -0,0 +1,25 @@
using Persistence.Models;
namespace Persistence.API;
/// <summary>
/// Интерфейс для работы с API графиков
/// </summary>
public interface IGraphData<TDto>
{
/// <summary>
/// Получить список объектов с прореживанием
/// </summary>
/// <param name="dateBegin">дата начала</param>
/// <param name="dateEnd">дата окончания</param>
/// <param name="approxPointsCount"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetThinnedDataAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, int approxPointsCount = 1024);
/// <summary>
/// Получить диапазон дат, для которых есть данные в репозитории
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
Task<DatesRangeDto> GetDatesRangeAsync(CancellationToken token);
}

View File

@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.Models;
public class DatesRangeDto
{
public DateTimeOffset dateBegin { get; set; }
public DateTimeOffset dateEnd { get; set; }
}

View File

@ -0,0 +1,36 @@
namespace Persistence.Models;
/// <summary>
/// Контейнер для поддержки постраничного просмотра таблиц
/// </summary>
/// <typeparam name="T"></typeparam>
public class PaginationContainer<T>
{
/// <summary>
/// конструктор
/// </summary>
public PaginationContainer()
{
Items = Enumerable.Empty<T>();
}
/// <summary>
/// Кол-во записей пропущенных с начала таблицы в запросе от api
/// </summary>
public int Skip { get; set; }
/// <summary>
/// Кол-во записей в запросе от api
/// </summary>
public int Take { get; set; }
/// <summary>
/// Кол-во записей всего в таблице
/// </summary>
public int Count { get; set; }
/// <summary>
/// Данные
/// </summary>
public IEnumerable<T> Items { get; set; }
}

View File

@ -0,0 +1,10 @@
namespace Persistence.Models;
public class RequestDto
{
public int Skip { get; set; }
public int Take { get; set; }
public string SortSettings { get; set; } = string.Empty;
}

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.Models;
public class SetpointDescriptionDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public string Type { get; set; }
}

View File

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.Models;
public class SetpointLogDto : SetpointValueDto
{
public DateTimeOffset Edit { get; set; }
public int IdUser { get; set; }
}

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.Models;
public class SetpointValueDto
{
public int Id { get; set; }
public object Value { get; set; }
}

View File

@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.10" />
</ItemGroup>