Приведение в соответствие методы интерфйсов API и методы интерфейсов репозитория

This commit is contained in:
Оля Бизюкова 2024-11-12 13:36:09 +05:00
parent f008228754
commit 3c94d55caf
16 changed files with 224 additions and 148 deletions

View File

@ -1,14 +1,10 @@
using Persistence.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Persistence.Models;
namespace Persistence.API;
/// <summary>
/// Интерфейс для работы с API, предназначенного для CRUD-операций над данными
/// Интерфейс для работы с API журнала изменений
/// </summary>
public interface IApiChangeLog<TDto, TChangeLogDto>
where TDto : class, new()
@ -19,7 +15,7 @@ public interface IApiChangeLog<TDto, TChangeLogDto>
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetChangeLogCurrent(CancellationToken token);
Task<ActionResult<IEnumerable<TDto>>> GetChangeLogCurrent(CancellationToken token);
/// <summary>
/// Получение исторических данных на определенную дату
@ -27,15 +23,15 @@ public interface IApiChangeLog<TDto, TChangeLogDto>
/// <param name="historyMoment"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TChangeLogDto>> GetChangeLogForDate(DateTimeOffset historyMoment, CancellationToken token);
Task<ActionResult<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);
Task<ActionResult<int>> AddAsync(TDto dto, CancellationToken token);
/// <summary>
/// Добавить несколько записей
@ -43,7 +39,7 @@ public interface IApiChangeLog<TDto, TChangeLogDto>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> AddRangeAsync(IEnumerable<TDto> dtos, CancellationToken token);
Task<ActionResult<int>> AddRangeAsync(IEnumerable<TDto> dtos, CancellationToken token);
/// <summary>
/// Обновить одну запись
@ -51,7 +47,7 @@ public interface IApiChangeLog<TDto, TChangeLogDto>
/// <param name="dto"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> UpdateAsync(TDto dto, CancellationToken token);
Task<ActionResult<int>> UpdateAsync(TDto dto, CancellationToken token);
/// <summary>
/// Обновить несколько записей
@ -59,7 +55,7 @@ public interface IApiChangeLog<TDto, TChangeLogDto>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> UpdateRangeAsync(IEnumerable<TDto> dtos, CancellationToken token);
Task<ActionResult<int>> UpdateRangeAsync(IEnumerable<TDto> dtos, CancellationToken token);
/// <summary>
/// Удалить одну запись
@ -67,7 +63,7 @@ public interface IApiChangeLog<TDto, TChangeLogDto>
/// <param name="id"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> DeleteAsync(int id, CancellationToken token);
Task<ActionResult<int>> DeleteAsync(int id, CancellationToken token);
/// <summary>
/// Удалить несколько записей
@ -75,5 +71,5 @@ public interface IApiChangeLog<TDto, TChangeLogDto>
/// <param name="ids"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<int> DeleteRangeAsync(IEnumerable<int> ids, CancellationToken token);
Task<ActionResult<int>> DeleteRangeAsync(IEnumerable<int> ids, CancellationToken token);
}

View File

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

View File

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

View File

@ -1,14 +1,10 @@
using Persistence.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Persistence.Models;
namespace Persistence.API;
/// <summary>
/// Интерфейс для работы с API, предназначенного для синхронизации данных
/// Интерфейс для API, предназначенного для синхронизации данных
/// </summary>
public interface IApiSync<TDto> where TDto : class, new()
{
@ -19,12 +15,12 @@ public interface IApiSync<TDto> where TDto : class, new()
/// <param name="take">количество записей</param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetPartAsync(DateTimeOffset dateBegin, int take = 24 * 60 * 60, CancellationToken token = default);
Task<ActionResult<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);
Task<ActionResult<DatesRangeDto>> GetDatesRangeAsync(CancellationToken token);
}

View File

@ -1,4 +1,5 @@
using Persistence.Models;
using Microsoft.AspNetCore.Mvc;
using Persistence.Models;
using System;
using System.Collections.Generic;
using System.Linq;
@ -7,7 +8,7 @@ using System.Threading.Tasks;
namespace Persistence.API;
/// Интерфейс для работы с API, предназначенного для работы с табличными данными
/// Интерфейс для API, предназначенного для работы с табличными данными
public interface IApiTableData<TDto, TRequest>
where TDto : class, new()
where TRequest : RequestDto
@ -15,11 +16,8 @@ public interface IApiTableData<TDto, TRequest>
/// <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);
Task<ActionResult<PaginationContainer<TDto>>> GetPageAsync(TRequest request, CancellationToken token);
}

View File

@ -0,0 +1,42 @@
using Microsoft.AspNetCore.Mvc;
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 IApiTimeSeriesData<TDto>
where TDto : class, new()
{
/// <summary>
/// Получить спискок объектов, удовлетворяющий диапазон дат
/// </summary>
/// <param name="dateBegin">дата начала</param>
/// <param name="dateEnd">дата окончания</param>
/// <param name="token"></param>
/// <returns></returns>
Task<ActionResult<IEnumerable<TDto>>> GetAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token);
/// <summary>
/// Получить диапазон дат, для которых есть данные в репозитории
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
Task<ActionResult<DatesRangeDto>> GetDatesRangeAsync(CancellationToken token);
/// <summary>
/// Добавление записей
/// </summary>
/// <param name="dtos"></param>
/// <param name="token"></param>
/// <returns></returns>
Task<ActionResult<int>> InsertRange(IEnumerable<TDto> dtos, CancellationToken token);
}

View File

@ -1,4 +1,5 @@
using Persistence.Models;
using Microsoft.AspNetCore.Mvc;
using Persistence.Models;
namespace Persistence.API;
@ -8,18 +9,18 @@ namespace Persistence.API;
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);
Task<ActionResult<IEnumerable<TDto>>> GetThinnedDataAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, int approxPointsCount = 1024);
/// <summary>
/// Получить диапазон дат, для которых есть данные в репозитории
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
Task<DatesRangeDto> GetDatesRangeAsync(CancellationToken token);
Task<ActionResult<DatesRangeDto>> GetDatesRangeAsync(CancellationToken token);
}

View File

@ -1,71 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ClassDiagram MajorVersion="1" MinorVersion="1">
<Class Name="Persistence.Repositories.AbstractChangeLogRepository&lt;T, TRequest&gt;" Collapsed="true">
<Position X="7.75" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>ACCAAAAAAAAABAAQAAAABAAAAAACAAAgAAAAAABAAAE=</HashCode>
<FileName>Repositories\AbstractChangeLogRepository.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="Persistence.Repositories.AbstractTimeSeriesDataRepository&lt;T&gt;" Collapsed="true">
<Position X="10.75" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Repositories\AbstractTimeSeriesDataRepository.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" />
</Class>
<Class Name="Persistence.Services.ArchiveService" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="7.75" Y="4.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Services\ArchiveService.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Class Name="Persistence.Services.TimeSeriesDataObserverService" Collapsed="true" BaseTypeListCollapsed="true">
<Position X="11" Y="4.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Services\TimeSeriesDataObserverService.cs</FileName>
</TypeIdentifier>
<Lollipop Position="0.2" Collapsed="true" />
</Class>
<Interface Name="Persistence.Repositories.IChangeLogRepository&lt;T, TRequest&gt;">
<Position X="4.75" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>ACCAAAAAAAAABAAAAAAABAAAAAACAAAgAAAAAABAAAE=</HashCode>
<FileName>Repositories\IChangeLogRepository.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="Persistence.Repositories.ISyncRepository&lt;T&gt;" Collapsed="true">
<Position X="3.75" Y="1.5" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Repositories\ISyncRepository.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="Persistence.Repositories.ITimeSeriesDataRepository&lt;T&gt;" Collapsed="true">
<Position X="2.5" Y="2.75" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Repositories\ITimeSeriesDataRepository.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="Persistence.Services.IArchiveService" Collapsed="true">
<Position X="2.75" Y="6" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Services\IArchiveService.cs</FileName>
</TypeIdentifier>
</Interface>
<Interface Name="Persistence.Services.ITimeSeriesDataObserverService" Collapsed="true">
<Position X="4.75" Y="6" Width="1.5" />
<TypeIdentifier>
<HashCode>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode>
<FileName>Services\ITimeSeriesDataObserverService.cs</FileName>
</TypeIdentifier>
</Interface>
<Font Name="Segoe UI" Size="9" />
</ClassDiagram>

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.Models;
/// <summary>
/// Интерфейс, описывающий временные данные
/// </summary>
public interface ITimeSeriesAbstractDto
{
/// <summary>
/// временная отметка
/// </summary>
DateTimeOffset Date { get; set; }
}

View File

@ -1,15 +0,0 @@
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

@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace Persistence.Repositories;
public abstract class AbstractTimeSeriesDataRepository<TEntity, TDto> : ITimeSeriesDataRepository<TDto>
where TDto : class, new()
where TDto : class, ITimeSeriesAbstractDto
where TEntity : class, IChangeLogAbstract
{
private readonly DbContext dbContext;
@ -18,6 +18,16 @@ public abstract class AbstractTimeSeriesDataRepository<TEntity, TDto> : ITimeSer
this.dbContext = dbContext;
}
public Task<IEnumerable<TDto>> GetAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token)
{
throw new NotImplementedException();
}
public Task<DatesRangeDto> GetDatesRangeAsync(CancellationToken token)
{
throw new NotImplementedException();
}
public Task<IEnumerable<TDto>> GetGtDate(DateTimeOffset date, CancellationToken token)
{
throw new NotImplementedException();

View File

@ -0,0 +1,26 @@
using Persistence.Models;
namespace Persistence.Repositories;
/// <summary>
/// Интерфейс по работе с прореженными данными
/// </summary>
public interface IGraphDataRepository<TDto>
where TDto : class, new()
{
/// <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,45 @@
using Microsoft.AspNetCore.Mvc;
using Persistence.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Persistence.Repositories;
/// <summary>
/// Интерфейс по работе с уставками
/// </summary>
public interface ISetpointRepository
{
/// <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="idUser">ключ пользователя</param>
/// <param name="newValue">значение</param>
/// <param name="token"></param>
/// <returns></returns>
/// to do
/// id User учесть в соответствующем методе репозитория
Task<int> SaveAsync(Guid setpointKey, int idUser, object newValue, CancellationToken token);
}

View File

@ -7,10 +7,10 @@
public interface ISyncRepository<TDto>
{
/// <summary>
///
/// Получить данные, начиная с определенной даты
/// </summary>
/// <param name="date"></param>
/// <param name="dateBegin">дата начала</param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetGtDate(DateTimeOffset date, CancellationToken token);
Task<IEnumerable<TDto>> GetGtDate(DateTimeOffset dateBegin, CancellationToken token);
}

View File

@ -0,0 +1,19 @@
using Persistence.Models;
namespace Persistence.Repositories;
/// <summary>
/// Интерфейс по работе с табличными данными
/// </summary>
public interface ITableDataRepository<TDto, TRequest>
where TDto : class, new()
where TRequest : RequestDto
{
/// <summary>
/// Получить страницу списка объектов
/// </summary>
/// <param name="request">параметры фильтрации</param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetAsync(TRequest request, CancellationToken token);
}

View File

@ -1,11 +1,29 @@
namespace Persistence.Repositories;
using Persistence.Models;
namespace Persistence.Repositories;
/// <summary>
/// Интерфейс по работе с временными данными
/// </summary>
/// <typeparam name="T"></typeparam>
/// <typeparam name="TDto"></typeparam>
public interface ITimeSeriesDataRepository<TDto> : ISyncRepository<TDto>
where TDto : class, ITimeSeriesAbstractDto
{
/// <summary>
/// Получить страницу списка объектов
/// </summary>
/// <param name="dateBegin">дата начала</param>
/// <param name="dateEnd">дата окончания</param>
/// <param name="token"></param>
/// <returns></returns>
Task<IEnumerable<TDto>> GetAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token);
/// <summary>
/// Получить диапазон дат, для которых есть данные в репозитории
/// </summary>
/// <param name="token"></param>
/// <returns></returns>
Task<DatesRangeDto> GetDatesRangeAsync(CancellationToken token);
/// <summary>
/// Добавление записей
/// </summary>