diff --git a/Persistence/API/IApiChangeLog.cs b/Persistence/API/IApiChangeLog.cs
index 61af1e8..0690bf7 100644
--- a/Persistence/API/IApiChangeLog.cs
+++ b/Persistence/API/IApiChangeLog.cs
@@ -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;
///
-/// Интерфейс для работы с API, предназначенного для CRUD-операций над данными
+/// Интерфейс для работы с API журнала изменений
///
public interface IApiChangeLog
where TDto : class, new()
@@ -19,7 +15,7 @@ public interface IApiChangeLog
///
///
///
- Task> GetChangeLogCurrent(CancellationToken token);
+ Task>> GetChangeLogCurrent(CancellationToken token);
///
/// Получение исторических данных на определенную дату
@@ -27,15 +23,15 @@ public interface IApiChangeLog
///
///
///
- Task> GetChangeLogForDate(DateTimeOffset historyMoment, CancellationToken token);
-
+ Task>> GetChangeLogForDate(DateTimeOffset historyMoment, CancellationToken token);
+
///
/// Добавить одну запись
///
///
///
///
- Task AddAsync(TDto dto, CancellationToken token);
+ Task> AddAsync(TDto dto, CancellationToken token);
///
/// Добавить несколько записей
@@ -43,7 +39,7 @@ public interface IApiChangeLog
///
///
///
- Task AddRangeAsync(IEnumerable dtos, CancellationToken token);
+ Task> AddRangeAsync(IEnumerable dtos, CancellationToken token);
///
/// Обновить одну запись
@@ -51,7 +47,7 @@ public interface IApiChangeLog
///
///
///
- Task UpdateAsync(TDto dto, CancellationToken token);
+ Task> UpdateAsync(TDto dto, CancellationToken token);
///
/// Обновить несколько записей
@@ -59,7 +55,7 @@ public interface IApiChangeLog
///
///
///
- Task UpdateRangeAsync(IEnumerable dtos, CancellationToken token);
+ Task> UpdateRangeAsync(IEnumerable dtos, CancellationToken token);
///
/// Удалить одну запись
@@ -67,7 +63,7 @@ public interface IApiChangeLog
///
///
///
- Task DeleteAsync(int id, CancellationToken token);
+ Task> DeleteAsync(int id, CancellationToken token);
///
/// Удалить несколько записей
@@ -75,5 +71,5 @@ public interface IApiChangeLog
///
///
///
- Task DeleteRangeAsync(IEnumerable ids, CancellationToken token);
+ Task> DeleteRangeAsync(IEnumerable ids, CancellationToken token);
}
diff --git a/Persistence/API/IApiDictionaryElement.cs b/Persistence/API/IApiDictionaryElement.cs
index 38cc68f..de36f9e 100644
--- a/Persistence/API/IApiDictionaryElement.cs
+++ b/Persistence/API/IApiDictionaryElement.cs
@@ -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;
///
-/// Интерфейс для API, предназначенного для работы со справочниками
+/// Интерфейс для API, предназначенного для работы с элементами справочников
///
public interface IApiDictionaryElement where TDto : class, new()
{
@@ -17,7 +13,7 @@ public interface IApiDictionaryElement where TDto : class, new()
/// ключ справочника
///
///
- Task> GetDataAsync(Guid dictionaryKey, CancellationToken token);
+ Task>> GetAsync(Guid dictionaryKey, CancellationToken token);
///
/// Добавить элемент в справочник
@@ -26,7 +22,7 @@ public interface IApiDictionaryElement where TDto : class, new()
///
///
///
- Task AddAsync(Guid dictionaryKey, TDto dto, CancellationToken token);
+ Task> AddAsync(Guid dictionaryKey, TDto dto, CancellationToken token);
///
/// Изменить одну запись
@@ -36,7 +32,7 @@ public interface IApiDictionaryElement where TDto : class, new()
///
///
///
- Task UpdateAsync(Guid dictionaryKey, Guid dictionaryElementKey, TDto dto, CancellationToken token);
+ Task> UpdateAsync(Guid dictionaryKey, Guid dictionaryElementKey, TDto dto, CancellationToken token);
///
/// Удалить одну запись
@@ -45,5 +41,5 @@ public interface IApiDictionaryElement where TDto : class, new()
/// ключ элемента в справочнике
///
///
- Task DeleteAsync(Guid dictionaryKey, Guid dictionaryElementKey, CancellationToken token);
+ Task> DeleteAsync(Guid dictionaryKey, Guid dictionaryElementKey, CancellationToken token);
}
diff --git a/Persistence/API/IApiSetpoint.cs b/Persistence/API/IApiSetpoint.cs
index 6c113dd..14fa8d2 100644
--- a/Persistence/API/IApiSetpoint.cs
+++ b/Persistence/API/IApiSetpoint.cs
@@ -1,18 +1,17 @@
using Microsoft.AspNetCore.Mvc;
using Persistence.Models;
-using System.Threading.Tasks;
namespace Persistence.API;
///
-/// Интерфейс для работы с API, предназначенного для работы с уставками
+/// Интерфейс для API, предназначенного для работы с уставками
///
public interface IApiSetpoint
{
///
/// Получить актуальные значения уставок
///
- ///
+ /// ключи уставок
///
///
Task>> GetCurrentAsync(IEnumerable setpoitKeys, CancellationToken token);
@@ -20,28 +19,26 @@ public interface IApiSetpoint
///
/// Получить значения уставок за определенный момент времени
///
- ///
+ /// ключи уставок
/// дата, на которую получаем данные
///
///
- Task> GetHistoryAsync(IEnumerable setpoitKeys, DateTimeOffset historyMoment, CancellationToken token);
+ Task>> GetHistoryAsync(IEnumerable setpoitKeys, DateTimeOffset historyMoment, CancellationToken token);
///
/// Получить историю изменений значений уставок
///
- ///
+ /// ключи уставок
///
///
- Task>> GetLogAsync(IEnumerable setpoitKeys, CancellationToken token);
+ Task>>> GetLogAsync(IEnumerable setpoitKeys, CancellationToken token);
///
/// Метод сохранения уставки
///
- /// ключ операции
+ /// ключ уставки
/// значение
///
///
- /// to do
- /// id User учесть в соответствующем методе репозитория
- Task SaveAsync(Guid setpointKey, object newValue, CancellationToken token);
+ Task> SaveAsync(Guid setpointKey, object newValue, CancellationToken token);
}
diff --git a/Persistence/API/IApiSync.cs b/Persistence/API/IApiSync.cs
index 3df36b2..cb3d50d 100644
--- a/Persistence/API/IApiSync.cs
+++ b/Persistence/API/IApiSync.cs
@@ -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;
///
-/// Интерфейс для работы с API, предназначенного для синхронизации данных
+/// Интерфейс для API, предназначенного для синхронизации данных
///
public interface IApiSync where TDto : class, new()
{
@@ -19,12 +15,12 @@ public interface IApiSync where TDto : class, new()
/// количество записей
///
///
- Task> GetPartAsync(DateTimeOffset dateBegin, int take = 24 * 60 * 60, CancellationToken token = default);
+ Task>> GetPartAsync(DateTimeOffset dateBegin, int take = 24 * 60 * 60, CancellationToken token = default);
///
/// Получить диапазон дат, для которых есть данные в репозитории
///
///
///
- Task GetDatesRangeAsync(CancellationToken token);
+ Task> GetDatesRangeAsync(CancellationToken token);
}
diff --git a/Persistence/API/IApiTableData.cs b/Persistence/API/IApiTableData.cs
index bbdad57..f3f0364 100644
--- a/Persistence/API/IApiTableData.cs
+++ b/Persistence/API/IApiTableData.cs
@@ -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
where TDto : class, new()
where TRequest : RequestDto
@@ -15,11 +16,8 @@ public interface IApiTableData
///
/// Получить страницу списка объектов
///
- ///
- ///
- /// строка с настройками сортировки
/// параметры фильтрации
///
///
- Task> GetPageAsync(TRequest request, CancellationToken token);
+ Task>> GetPageAsync(TRequest request, CancellationToken token);
}
diff --git a/Persistence/API/IApiTimeSeriesData.cs b/Persistence/API/IApiTimeSeriesData.cs
new file mode 100644
index 0000000..f00aa7f
--- /dev/null
+++ b/Persistence/API/IApiTimeSeriesData.cs
@@ -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;
+
+///
+/// Интерфейс для работы с API временных данных
+///
+public interface IApiTimeSeriesData
+ where TDto : class, new()
+{
+ ///
+ /// Получить спискок объектов, удовлетворяющий диапазон дат
+ ///
+ /// дата начала
+ /// дата окончания
+ ///
+ ///
+ Task>> GetAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token);
+
+ ///
+ /// Получить диапазон дат, для которых есть данные в репозитории
+ ///
+ ///
+ ///
+ Task> GetDatesRangeAsync(CancellationToken token);
+
+ ///
+ /// Добавление записей
+ ///
+ ///
+ ///
+ ///
+ Task> InsertRange(IEnumerable dtos, CancellationToken token);
+
+
+}
diff --git a/Persistence/API/IGraphData.cs b/Persistence/API/IGraphData.cs
index ff020f1..6911412 100644
--- a/Persistence/API/IGraphData.cs
+++ b/Persistence/API/IGraphData.cs
@@ -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
{
///
- /// Получить список объектов с прореживанием
+ /// Получить список объектов с прореживанием, удовлетворящий диапазону дат
///
/// дата начала
/// дата окончания
///
///
- Task> GetThinnedDataAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, int approxPointsCount = 1024);
+ Task>> GetThinnedDataAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, int approxPointsCount = 1024);
///
/// Получить диапазон дат, для которых есть данные в репозитории
///
///
///
- Task GetDatesRangeAsync(CancellationToken token);
+ Task> GetDatesRangeAsync(CancellationToken token);
}
diff --git a/Persistence/ClassDiagram.cd b/Persistence/ClassDiagram.cd
deleted file mode 100644
index 4a6aa87..0000000
--- a/Persistence/ClassDiagram.cd
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
-
- ACCAAAAAAAAABAAQAAAABAAAAAACAAAgAAAAAABAAAE=
- Repositories\AbstractChangeLogRepository.cs
-
-
-
-
-
-
- AAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAA=
- Repositories\AbstractTimeSeriesDataRepository.cs
-
-
-
-
-
-
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
- Services\ArchiveService.cs
-
-
-
-
-
-
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
- Services\TimeSeriesDataObserverService.cs
-
-
-
-
-
-
- ACCAAAAAAAAABAAAAAAABAAAAAACAAAgAAAAAABAAAE=
- Repositories\IChangeLogRepository.cs
-
-
-
-
-
- AAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAA=
- Repositories\ISyncRepository.cs
-
-
-
-
-
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
- Repositories\ITimeSeriesDataRepository.cs
-
-
-
-
-
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
- Services\IArchiveService.cs
-
-
-
-
-
- AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
- Services\ITimeSeriesDataObserverService.cs
-
-
-
-
\ No newline at end of file
diff --git a/Persistence/Models/ITimeSeriesAbstractDto.cs b/Persistence/Models/ITimeSeriesAbstractDto.cs
new file mode 100644
index 0000000..f95fded
--- /dev/null
+++ b/Persistence/Models/ITimeSeriesAbstractDto.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Persistence.Models;
+
+///
+/// Интерфейс, описывающий временные данные
+///
+public interface ITimeSeriesAbstractDto
+{
+ ///
+ /// временная отметка
+ ///
+ DateTimeOffset Date { get; set; }
+}
diff --git a/Persistence/Models/SetpointDescriptionDto.cs b/Persistence/Models/SetpointDescriptionDto.cs
deleted file mode 100644
index 27005b0..0000000
--- a/Persistence/Models/SetpointDescriptionDto.cs
+++ /dev/null
@@ -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; }
-}
-
diff --git a/Persistence/Repositories/AbstractTimeSeriesDataRepository.cs b/Persistence/Repositories/AbstractTimeSeriesDataRepository.cs
index d42719f..c947dbc 100644
--- a/Persistence/Repositories/AbstractTimeSeriesDataRepository.cs
+++ b/Persistence/Repositories/AbstractTimeSeriesDataRepository.cs
@@ -8,7 +8,7 @@ using System.Threading.Tasks;
namespace Persistence.Repositories;
public abstract class AbstractTimeSeriesDataRepository : ITimeSeriesDataRepository
- where TDto : class, new()
+ where TDto : class, ITimeSeriesAbstractDto
where TEntity : class, IChangeLogAbstract
{
private readonly DbContext dbContext;
@@ -18,6 +18,16 @@ public abstract class AbstractTimeSeriesDataRepository : ITimeSer
this.dbContext = dbContext;
}
+ public Task> GetAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token)
+ {
+ throw new NotImplementedException();
+ }
+
+ public Task GetDatesRangeAsync(CancellationToken token)
+ {
+ throw new NotImplementedException();
+ }
+
public Task> GetGtDate(DateTimeOffset date, CancellationToken token)
{
throw new NotImplementedException();
diff --git a/Persistence/Repositories/IGraphDataRepository.cs b/Persistence/Repositories/IGraphDataRepository.cs
new file mode 100644
index 0000000..d110ffa
--- /dev/null
+++ b/Persistence/Repositories/IGraphDataRepository.cs
@@ -0,0 +1,26 @@
+using Persistence.Models;
+
+namespace Persistence.Repositories;
+
+///
+/// Интерфейс по работе с прореженными данными
+///
+public interface IGraphDataRepository
+ where TDto : class, new()
+{
+ ///
+ /// Получить список объектов с прореживанием
+ ///
+ /// дата начала
+ /// дата окончания
+ ///
+ ///
+ Task> GetThinnedDataAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, int approxPointsCount = 1024);
+
+ ///
+ /// Получить диапазон дат, для которых есть данные в репозитории
+ ///
+ ///
+ ///
+ Task GetDatesRangeAsync(CancellationToken token);
+}
diff --git a/Persistence/Repositories/ISetpointRepository.cs b/Persistence/Repositories/ISetpointRepository.cs
new file mode 100644
index 0000000..38bbbf4
--- /dev/null
+++ b/Persistence/Repositories/ISetpointRepository.cs
@@ -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;
+
+///
+/// Интерфейс по работе с уставками
+///
+public interface ISetpointRepository
+{
+
+ ///
+ /// Получить значения уставок за определенный момент времени
+ ///
+ ///
+ /// дата, на которую получаем данные
+ ///
+ ///
+ Task> GetHistoryAsync(IEnumerable setpoitKeys, DateTimeOffset historyMoment, CancellationToken token);
+
+ ///
+ /// Получить историю изменений значений уставок
+ ///
+ ///
+ ///
+ ///
+ Task>> GetLogAsync(IEnumerable setpoitKeys, CancellationToken token);
+
+ ///
+ /// Метод сохранения уставки
+ ///
+ /// ключ операции
+ /// ключ пользователя
+ /// значение
+ ///
+ ///
+ /// to do
+ /// id User учесть в соответствующем методе репозитория
+ Task SaveAsync(Guid setpointKey, int idUser, object newValue, CancellationToken token);
+}
diff --git a/Persistence/Repositories/ISyncRepository.cs b/Persistence/Repositories/ISyncRepository.cs
index d1a6026..8fea16f 100644
--- a/Persistence/Repositories/ISyncRepository.cs
+++ b/Persistence/Repositories/ISyncRepository.cs
@@ -7,10 +7,10 @@
public interface ISyncRepository
{
///
- ///
+ /// Получить данные, начиная с определенной даты
///
- ///
+ /// дата начала
///
///
- Task> GetGtDate(DateTimeOffset date, CancellationToken token);
+ Task> GetGtDate(DateTimeOffset dateBegin, CancellationToken token);
}
diff --git a/Persistence/Repositories/ITableDataRepository.cs b/Persistence/Repositories/ITableDataRepository.cs
new file mode 100644
index 0000000..22ec55c
--- /dev/null
+++ b/Persistence/Repositories/ITableDataRepository.cs
@@ -0,0 +1,19 @@
+using Persistence.Models;
+
+namespace Persistence.Repositories;
+
+///
+/// Интерфейс по работе с табличными данными
+///
+public interface ITableDataRepository
+ where TDto : class, new()
+ where TRequest : RequestDto
+{
+ ///
+ /// Получить страницу списка объектов
+ ///
+ /// параметры фильтрации
+ ///
+ ///
+ Task> GetAsync(TRequest request, CancellationToken token);
+}
diff --git a/Persistence/Repositories/ITimeSeriesDataRepository.cs b/Persistence/Repositories/ITimeSeriesDataRepository.cs
index 036b4c4..e450c87 100644
--- a/Persistence/Repositories/ITimeSeriesDataRepository.cs
+++ b/Persistence/Repositories/ITimeSeriesDataRepository.cs
@@ -1,11 +1,29 @@
-namespace Persistence.Repositories;
+using Persistence.Models;
+
+namespace Persistence.Repositories;
///
/// Интерфейс по работе с временными данными
///
-///
+///
public interface ITimeSeriesDataRepository : ISyncRepository
+ where TDto : class, ITimeSeriesAbstractDto
{
+ ///
+ /// Получить страницу списка объектов
+ ///
+ /// дата начала
+ /// дата окончания
+ ///
+ ///
+ Task> GetAsync(DateTimeOffset dateBegin, DateTimeOffset dateEnd, CancellationToken token);
+
+ ///
+ /// Получить диапазон дат, для которых есть данные в репозитории
+ ///
+ ///
+ ///
+ Task GetDatesRangeAsync(CancellationToken token);
///
/// Добавление записей
///