Добавить TagBag, изменить Date на Timestamp
Some checks failed
Unit tests / test (push) Failing after 51s
Some checks failed
Unit tests / test (push) Failing after 51s
This commit is contained in:
parent
01898e84f6
commit
421ab41855
@ -1,63 +0,0 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace DD.Persistence.Database.Model;
|
||||
public class DataSaub : ITimestampedData
|
||||
{
|
||||
[Key, Column("date")]
|
||||
public DateTimeOffset Date { get; set; }
|
||||
|
||||
[Column("mode")]
|
||||
public int? Mode { get; set; }
|
||||
|
||||
[Column("user")]
|
||||
public string? User { get; set; }
|
||||
|
||||
[Column("wellDepth")]
|
||||
public double? WellDepth { get; set; }
|
||||
|
||||
[Column("bitDepth")]
|
||||
public double? BitDepth { get; set; }
|
||||
|
||||
[Column("blockPosition")]
|
||||
public double? BlockPosition { get; set; }
|
||||
|
||||
[Column("blockSpeed")]
|
||||
public double? BlockSpeed { get; set; }
|
||||
|
||||
[Column("pressure")]
|
||||
public double? Pressure { get; set; }
|
||||
|
||||
[Column("axialLoad")]
|
||||
public double? AxialLoad { get; set; }
|
||||
|
||||
[Column("hookWeight")]
|
||||
public double? HookWeight { get; set; }
|
||||
|
||||
[Column("rotorTorque")]
|
||||
public double? RotorTorque { get; set; }
|
||||
|
||||
[Column("rotorSpeed")]
|
||||
public double? RotorSpeed { get; set; }
|
||||
|
||||
[Column("flow")]
|
||||
public double? Flow { get; set; }
|
||||
|
||||
[Column("mseState")]
|
||||
public short MseState { get; set; }
|
||||
|
||||
[Column("idFeedRegulator")]
|
||||
public int IdFeedRegulator { get; set; }
|
||||
|
||||
[Column("mse")]
|
||||
public double? Mse { get; set; }
|
||||
|
||||
[Column("pump0Flow")]
|
||||
public double? Pump0Flow { get; set; }
|
||||
|
||||
[Column("pump1Flow")]
|
||||
public double? Pump1Flow { get; set; }
|
||||
|
||||
[Column("pump2Flow")]
|
||||
public double? Pump2Flow { get; set; }
|
||||
}
|
@ -4,5 +4,5 @@ public interface ITimestampedData
|
||||
/// <summary>
|
||||
/// Дата (должна быть обязательно в UTC)
|
||||
/// </summary>
|
||||
DateTimeOffset Date { get; set; }
|
||||
DateTimeOffset Timestamp { get; set; }
|
||||
}
|
||||
|
18
DD.Persistence.Database/Entity/TagBag.cs
Normal file
18
DD.Persistence.Database/Entity/TagBag.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using DD.Persistence.Database.Model;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace DD.Persistence.Database.Entity;
|
||||
|
||||
[PrimaryKey(nameof(BagId), nameof(Timestamp))]
|
||||
public class TagBag : ITimestampedData
|
||||
{
|
||||
[Comment("Временная отметка"), Key]
|
||||
public DateTimeOffset Timestamp { get; set; }
|
||||
|
||||
public Guid BagId { get; set; }
|
||||
|
||||
[Column(TypeName = "jsonb")]
|
||||
public required object[] Values { get; set; }
|
||||
}
|
@ -34,7 +34,7 @@ public class DataSaubControllerTest : TimeSeriesBaseControllerTest<DataSaub, Dat
|
||||
BitDepth = 2,
|
||||
BlockPosition = 3,
|
||||
BlockSpeed = 4,
|
||||
Date = DateTimeOffset.UtcNow,
|
||||
Timestamp = DateTimeOffset.UtcNow,
|
||||
Flow = 5,
|
||||
HookWeight = 6,
|
||||
IdFeedRegulator = 8,
|
||||
|
@ -59,7 +59,7 @@ public abstract class TimeSeriesBaseControllerTest<TEntity, TDto> : BaseIntegrat
|
||||
var datesRangeExpected = 30;
|
||||
|
||||
var entity2 = entity.Adapt<TEntity>();
|
||||
entity2.Date = entity.Date.AddDays(datesRangeExpected);
|
||||
entity2.Timestamp = entity.Timestamp.AddDays(datesRangeExpected);
|
||||
|
||||
var dbset = dbContext.Set<TEntity>();
|
||||
dbset.Add(entity);
|
||||
@ -86,7 +86,7 @@ public abstract class TimeSeriesBaseControllerTest<TEntity, TDto> : BaseIntegrat
|
||||
for (var i = 1; i <= differenceBetweenStartAndEndDays; i++)
|
||||
{
|
||||
var entity2 = entity.Adapt<TEntity>();
|
||||
entity2.Date = entity.Date.AddDays(i - 1);
|
||||
entity2.Timestamp = entity.Timestamp.AddDays(i - 1);
|
||||
|
||||
entities.Add(entity2);
|
||||
}
|
||||
@ -96,7 +96,7 @@ public abstract class TimeSeriesBaseControllerTest<TEntity, TDto> : BaseIntegrat
|
||||
|
||||
dbContext.SaveChanges();
|
||||
|
||||
var response = await timeSeriesClient.GetResampledData(entity.Date.AddMinutes(-1), differenceBetweenStartAndEndDays * 24 * 60 * 60 + 60, approxPointsCount, new CancellationToken());
|
||||
var response = await timeSeriesClient.GetResampledData(entity.Timestamp.AddMinutes(-1), differenceBetweenStartAndEndDays * 24 * 60 * 60 + 60, approxPointsCount, new CancellationToken());
|
||||
|
||||
//assert
|
||||
Assert.NotNull(response);
|
||||
|
@ -35,9 +35,9 @@ public static class DependencyInjection
|
||||
|
||||
MapsterSetup();
|
||||
|
||||
services.AddTransient<ITimeSeriesDataRepository<DataSaubDto>, TimeSeriesDataRepository<DataSaub, DataSaubDto>>();
|
||||
services.AddTransient<ITimeSeriesDataRepository<DataSaubDto>, TagBagDataRepository>();
|
||||
services.AddTransient<ISetpointRepository, SetpointRepository>();
|
||||
services.AddTransient<ITimeSeriesDataRepository<DataSaubDto>, TimeSeriesDataCachedRepository<DataSaub, DataSaubDto>>();
|
||||
//services.AddTransient<ITimeSeriesDataRepository<DataSaubDto>, TimeSeriesDataCachedRepository<DataSaub, DataSaubDto>>();
|
||||
services.AddTransient<IChangeLogRepository, ChangeLogRepository>();
|
||||
services.AddTransient<ITimestampedSetRepository, TimestampedSetRepository>();
|
||||
services.AddTransient<ITechMessagesRepository, TechMessagesRepository>();
|
||||
|
@ -71,7 +71,7 @@ public static class EFExtensionsSortBy
|
||||
/// и опционально указания направления сортировки "asc" или "desc"
|
||||
/// </param>
|
||||
/// <example>
|
||||
/// var query = query("Date desc");
|
||||
/// var query = query("Timestamp desc");
|
||||
/// </example>
|
||||
/// <returns>Запрос с примененной сортировкой</returns>
|
||||
public static IOrderedQueryable<TSource> SortBy<TSource>(
|
||||
@ -103,7 +103,7 @@ public static class EFExtensionsSortBy
|
||||
/// и опционально указания направления сортировки "asc" или "desc"
|
||||
/// </param>
|
||||
/// <example>
|
||||
/// var query = query("Date desc");
|
||||
/// var query = query("Timestamp desc");
|
||||
/// </example>
|
||||
/// <returns>Запрос с примененной сортировкой</returns>
|
||||
public static IOrderedQueryable<TSource> SortBy<TSource>(
|
||||
@ -129,7 +129,7 @@ public static class EFExtensionsSortBy
|
||||
/// и опционально указания направления сортировки "asc" или "desc"
|
||||
/// </param>
|
||||
/// <example>
|
||||
/// var query = query("Date desc");
|
||||
/// var query = query("Timestamp desc");
|
||||
/// </example>
|
||||
/// <returns>Запрос с примененной сортировкой</returns>
|
||||
public static IOrderedQueryable<TSource> ThenSortBy<TSource>(
|
||||
|
@ -5,13 +5,11 @@ using DD.Persistence.Models;
|
||||
using DD.Persistence.Repositories;
|
||||
|
||||
namespace DD.Persistence.Repository.Repositories;
|
||||
public class TimeSeriesDataRepository<TEntity, TDto> : ITimeSeriesDataRepository<TDto>
|
||||
where TEntity : class, ITimestampedData, new()
|
||||
where TDto : class, ITimeSeriesAbstractDto, new()
|
||||
public class TagBagRepository : ITimeSeriesDataRepository
|
||||
{
|
||||
private readonly DbContext db;
|
||||
|
||||
public TimeSeriesDataRepository(DbContext db)
|
||||
public TagBagRepository(DbContext db)
|
||||
{
|
||||
this.db = db;
|
||||
}
|
||||
@ -21,8 +19,8 @@ public class TimeSeriesDataRepository<TEntity, TDto> : ITimeSeriesDataRepository
|
||||
public virtual async Task<DatesRangeDto?> GetDatesRange(CancellationToken token)
|
||||
{
|
||||
var query = GetQueryReadOnly();
|
||||
var minDate = await query.MinAsync(o => o.Date, token);
|
||||
var maxDate = await query.MaxAsync(o => o.Date, token);
|
||||
var minDate = await query.MinAsync(o => o.Timestamp, token);
|
||||
var maxDate = await query.MaxAsync(o => o.Timestamp, token);
|
||||
|
||||
return new DatesRangeDto
|
||||
{
|
||||
@ -33,7 +31,7 @@ public class TimeSeriesDataRepository<TEntity, TDto> : ITimeSeriesDataRepository
|
||||
|
||||
public virtual async Task<IEnumerable<TDto>> GetGtDate(DateTimeOffset date, CancellationToken token)
|
||||
{
|
||||
var query = this.db.Set<TEntity>().Where(e => e.Date > date);
|
||||
var query = this.db.Set<TEntity>().Where(e => e.Timestamp > date);
|
||||
var entities = await query.ToArrayAsync(token);
|
||||
|
||||
var dtos = entities.Select(e => e.Adapt<TDto>());
|
||||
@ -54,7 +52,7 @@ public class TimeSeriesDataRepository<TEntity, TDto> : ITimeSeriesDataRepository
|
||||
protected async Task<IEnumerable<TDto>> GetLastAsync(int takeCount, CancellationToken token)
|
||||
{
|
||||
var query = GetQueryReadOnly()
|
||||
.OrderByDescending(e => e.Date)
|
||||
.OrderByDescending(e => e.Timestamp)
|
||||
.Take(takeCount);
|
||||
|
||||
var entities = await query.ToArrayAsync(token);
|
||||
@ -66,7 +64,7 @@ public class TimeSeriesDataRepository<TEntity, TDto> : ITimeSeriesDataRepository
|
||||
protected async Task<TDto?> GetFirstAsync(CancellationToken token)
|
||||
{
|
||||
var query = GetQueryReadOnly()
|
||||
.OrderBy(e => e.Date);
|
||||
.OrderBy(e => e.Timestamp);
|
||||
|
||||
var entity = await query.FirstOrDefaultAsync(token);
|
||||
|
Loading…
Reference in New Issue
Block a user