Правки по ревью #4

This commit is contained in:
Roman Efremov 2025-02-06 12:39:40 +05:00
parent 7d973ba859
commit c5da82c210
3 changed files with 24 additions and 15 deletions

View File

@ -18,7 +18,7 @@ public class DataSchemeDto : IEnumerable<SchemePropertyDto>, IEquatable<IEnumera
private IEnumerable<SchemePropertyDto> Properties { get; } = [];
/// <inheritdoc/>
public DataSchemeDto(Guid discriminatorId, SchemePropertyDto[] Properties)
public DataSchemeDto(Guid discriminatorId, IEnumerable<SchemePropertyDto> Properties)
{
DiscriminatorId = discriminatorId;
this.Properties = Properties;
@ -34,8 +34,8 @@ public class DataSchemeDto : IEnumerable<SchemePropertyDto>, IEquatable<IEnumera
/// <inheritdoc/>
public bool Equals(IEnumerable<SchemePropertyDto>? otherProperties)
{
//if (otherProperties is null)
// return false;
if (otherProperties is null)
return false;
return Properties.SequenceEqual(otherProperties);
}

View File

@ -2,6 +2,7 @@
using DD.Persistence.Repositories;
using DD.Persistence.Services;
using NSubstitute;
using System.Text.Json;
namespace DD.Persistence.Repository.Test;
public class TimestampedValuesServiceShould
@ -45,10 +46,10 @@ public class TimestampedValuesServiceShould
{
var values = new Dictionary<string, object>()
{
{ "A", i },
{ "B", i * 1.1 },
{ "C", $"Any{i}" },
{ "D", DateTimeOffset.Now },
{ "A", GetJsonFromObject(i) },
{ "B", GetJsonFromObject(i * 1.1) },
{ "C", GetJsonFromObject($"Any{i}") },
{ "D", GetJsonFromObject(DateTimeOffset.Now) }
};
yield return new TimestampedValuesDto()
@ -58,4 +59,11 @@ public class TimestampedValuesServiceShould
};
}
}
private static JsonElement GetJsonFromObject(object value)
{
var jsonString = JsonSerializer.Serialize(value);
var doc = JsonDocument.Parse(jsonString);
return doc.RootElement;
}
}

View File

@ -117,13 +117,13 @@ public class TimestampedValuesService : ITimestampedValuesService
if (dataScheme is null)
continue;
foreach (var tuple in keyValuePair.Value)
foreach (var (Timestamp, Values) in keyValuePair.Value)
{
var dto = new TimestampedValuesDto()
{
Timestamp = tuple.Timestamp.ToUniversalTime(),
Timestamp = Timestamp.ToUniversalTime(),
Values = dataScheme
.ToDictionary(k => k.PropertyName, v => tuple.Values[v.Index])
.ToDictionary(k => k.PropertyName, v => Values[v.Index])
};
result = result.Append(dto);
@ -144,11 +144,12 @@ public class TimestampedValuesService : ITimestampedValuesService
private async Task CreateDataSchemeIfNotExist(Guid discriminatorId, TimestampedValuesDto dto, CancellationToken token)
{
var valuesList = dto.Values.ToList();
var properties = valuesList.ToList().Select(e => new SchemePropertyDto() {
Index = valuesList.IndexOf(e),
var properties = valuesList.Select((e, index) => new SchemePropertyDto()
{
Index = index,
PropertyName = e.Key,
PropertyKind = ((JsonElement) e.Value).ValueKind
}).ToArray();
PropertyKind = ((JsonElement)e.Value).ValueKind
});
var dataScheme = await dataSchemeRepository.Get(discriminatorId, token);
if (dataScheme is null)
@ -172,7 +173,7 @@ public class TimestampedValuesService : ITimestampedValuesService
/// <param name="dtos"></param>
/// <param name="fieldNames">Поля, которые необходимо оставить</param>
/// <returns></returns>
private IEnumerable<TimestampedValuesDto> ReduceSetColumnsByNames(IEnumerable<TimestampedValuesDto> dtos, IEnumerable<string> fieldNames)
private static IEnumerable<TimestampedValuesDto> ReduceSetColumnsByNames(IEnumerable<TimestampedValuesDto> dtos, IEnumerable<string> fieldNames)
{
var result = dtos.Select(dto =>
{