ISyncWithDiscriminatorApi для сущностей, у которых есть дискриминатор
This commit is contained in:
parent
25afd50793
commit
c54e9cb35c
@ -146,8 +146,21 @@ public class ChangeLogController : ControllerBase, IChangeLogApi
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[HttpGet("part")]
|
||||
[ProducesResponseType(typeof(IEnumerable<DataWithWellDepthAndSectionDto>), (int)HttpStatusCode.OK)]
|
||||
public async Task<IActionResult> GetPart(Guid idDiscriminator, DateTimeOffset dateBegin, int take = 86400, CancellationToken token = default)
|
||||
{
|
||||
var result = await repository.GetGtDate(idDiscriminator, dateBegin, token);
|
||||
|
||||
|
||||
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
|
||||
[HttpGet("datesRange")]
|
||||
[ProducesResponseType(typeof(DatesRangeDto), (int)HttpStatusCode.OK)]
|
||||
public async Task<IActionResult> GetDatesRangeAsync(Guid idDiscriminator, CancellationToken token)
|
||||
{
|
||||
var result = await repository.GetDatesRange(idDiscriminator, token);
|
||||
|
||||
return Ok(result);
|
||||
}
|
||||
}
|
||||
|
@ -256,4 +256,30 @@ public class ChangeLogRepository : IChangeLogRepository
|
||||
return entity;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<DataWithWellDepthAndSectionDto>> GetGtDate(Guid idDiscriminator, DateTimeOffset dateBegin, CancellationToken token)
|
||||
{
|
||||
var date = dateBegin.ToUniversalTime();
|
||||
var query = this.db.Set<ChangeLog>()
|
||||
.Where(e => e.IdDiscriminator == idDiscriminator)
|
||||
.Where(e => e.Creation >= date || e.Obsolete >= date);
|
||||
|
||||
var entities = await query.ToArrayAsync(token);
|
||||
|
||||
var dtos = entities.Select(e => e.Adapt<DataWithWellDepthAndSectionDto>());
|
||||
|
||||
return dtos;
|
||||
}
|
||||
|
||||
public async Task<DatesRangeDto?> GetDatesRange(Guid idDiscriminator, CancellationToken token)
|
||||
{
|
||||
var query = this.db.Set<ChangeLog>().Where(e => e.IdDiscriminator == idDiscriminator);
|
||||
var minDate = await query.MinAsync(o => o.Creation, token);
|
||||
var maxDate = await query.MaxAsync(o => o.Creation, token);
|
||||
|
||||
return new DatesRangeDto
|
||||
{
|
||||
From = minDate,
|
||||
To = maxDate
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ namespace Persistence.API;
|
||||
/// <summary>
|
||||
/// Интерфейс для работы с API журнала изменений
|
||||
/// </summary>
|
||||
public interface IChangeLogApi
|
||||
public interface IChangeLogApi : ISyncWithDiscriminatorApi<DataWithWellDepthAndSectionDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// Импорт с заменой: удаление старых строк и добавление новых
|
||||
|
@ -6,7 +6,7 @@ namespace Persistence.API;
|
||||
/// <summary>
|
||||
/// Интерфейс для API, предназначенного для синхронизации данных
|
||||
/// </summary>
|
||||
public interface ISyncApi<TDto> where TDto : class, new()
|
||||
public interface ISyncApi<TDto> where TDto : class
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить порцию записей, начиная с заданной даты
|
||||
|
28
Persistence/API/ISyncWithDiscriminatorApi.cs
Normal file
28
Persistence/API/ISyncWithDiscriminatorApi.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Persistence.Models;
|
||||
|
||||
namespace Persistence.API;
|
||||
|
||||
/// <summary>
|
||||
/// Интерфейс для API, предназначенного для синхронизации данных, у которых есть дискриминатор
|
||||
/// </summary>
|
||||
public interface ISyncWithDiscriminatorApi<TDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить порцию записей, начиная с заданной даты
|
||||
/// </summary>
|
||||
/// <param name="idDiscriminator"></param>
|
||||
/// <param name="dateBegin"></param>
|
||||
/// <param name="take">количество записей</param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IActionResult> GetPart(Guid idDiscriminator, DateTimeOffset dateBegin, int take = 24 * 60 * 60, CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Получить диапазон дат, для которых есть данные в репозитории
|
||||
/// </summary>
|
||||
/// <param name="idDiscriminator"></param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IActionResult> GetDatesRangeAsync(Guid idDiscriminator, CancellationToken token);
|
||||
}
|
@ -7,7 +7,7 @@ namespace Persistence.Repositories;
|
||||
/// Интерфейс для работы с историческими данными
|
||||
/// </summary>
|
||||
/// <typeparam name="TDto"></typeparam>
|
||||
public interface IChangeLogRepository //: ISyncRepository<TDto>
|
||||
public interface IChangeLogRepository : ISyncWithDiscriminatorRepository<DataWithWellDepthAndSectionDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// Добавление записей
|
||||
|
@ -1,17 +1,25 @@
|
||||
namespace Persistence.Repositories;
|
||||
using Persistence.Models;
|
||||
|
||||
namespace Persistence.Repositories;
|
||||
|
||||
/// <summary>
|
||||
/// Интерфейс по работе с данными
|
||||
/// </summary>
|
||||
/// <typeparam name="TDto"></typeparam>
|
||||
public interface ISyncRepository<TDto>
|
||||
where TDto : class, new()
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить данные, начиная с определенной даты
|
||||
/// </summary>
|
||||
/// <param name="dateBegin">дата начала</param>
|
||||
/// <param name="token"></param> /// <returns></returns>
|
||||
Task<IEnumerable<TDto>> GetGtDate(DateTimeOffset dateBegin, CancellationToken token);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Получить диапазон дат, для которых есть данные в репозитории
|
||||
/// </summary>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<IEnumerable<TDto>> GetGtDate(DateTimeOffset dateBegin, CancellationToken token);
|
||||
Task<DatesRangeDto?> GetDatesRange(CancellationToken token);
|
||||
}
|
||||
|
28
Persistence/Repositories/ISyncWithDiscriminatorRepository.cs
Normal file
28
Persistence/Repositories/ISyncWithDiscriminatorRepository.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using Persistence.Models;
|
||||
|
||||
namespace Persistence.Repositories;
|
||||
|
||||
/// <summary>
|
||||
/// Интерфейс по работе с данными, у которых есть дискриминатор
|
||||
/// </summary>
|
||||
/// <typeparam name="TDto"></typeparam>
|
||||
public interface ISyncWithDiscriminatorRepository<TDto>
|
||||
{
|
||||
/// <summary>
|
||||
/// Получить данные, начиная с определенной даты
|
||||
/// </summary>
|
||||
/// <param name="idDiscriminator">дискриминатор таблицы</param>
|
||||
/// <param name="dateBegin">дата начала</param>
|
||||
/// <param name="token"></param>
|
||||
/// /// <returns></returns>
|
||||
Task<IEnumerable<TDto>> GetGtDate(Guid idDiscriminator, DateTimeOffset dateBegin, CancellationToken token);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Получить диапазон дат, для которых есть данные в репозитории
|
||||
/// </summary>
|
||||
/// <param name="idDiscriminator">дискриминатор таблицы</param>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<DatesRangeDto?> GetDatesRange(Guid idDiscriminator, CancellationToken token);
|
||||
}
|
@ -19,11 +19,4 @@ public interface ITimeSeriesBaseRepository<TDto>
|
||||
double intervalSec = 600d,
|
||||
int approxPointsCount = 1024,
|
||||
CancellationToken token = default);
|
||||
|
||||
/// <summary>
|
||||
/// Получить диапазон дат, для которых есть данные в репозитории
|
||||
/// </summary>
|
||||
/// <param name="token"></param>
|
||||
/// <returns></returns>
|
||||
Task<DatesRangeDto?> GetDatesRange(CancellationToken token);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user