#974 Модифицировать метод Get для TimestampedValues по части применения фильтра #28

Merged
on.nemtina merged 7 commits from TimestampedValuesFilter into master 2025-02-12 15:16:09 +05:00
4 changed files with 10 additions and 10 deletions
Showing only changes of commit c904c117d8 - Show all commits

View File

@ -96,7 +96,7 @@ public static class FilterBuilder
private static Dictionary<OperationEnum, Func<int, string?, ISpecification<TEntity>>> StringSpecifications<TEntity>() private static Dictionary<OperationEnum, Func<int, string?, ISpecification<TEntity>>> StringSpecifications<TEntity>()
where TEntity : IValuesItem => new() where TEntity : IValuesItem => new()
{ {
{ OperationEnum.Equal, (int index, string? value) => new ValueEqaulSpec<TEntity>(index, value) }, { OperationEnum.Equal, (int index, string? value) => new ValueEqualSpec<TEntity>(index, value) },
{ OperationEnum.NotEqual, (int index, string? value) => new ValueNotEqualSpec<TEntity>(index, value) }, { OperationEnum.NotEqual, (int index, string? value) => new ValueNotEqualSpec<TEntity>(index, value) },
{ OperationEnum.Greate, (int index, string? value) => new ValueGreateSpec<TEntity>(index, value) }, { OperationEnum.Greate, (int index, string? value) => new ValueGreateSpec<TEntity>(index, value) },
{ OperationEnum.GreateOrEqual, (int index, string? value) => new ValueGreateOrEqualSpec<TEntity>(index, value) }, { OperationEnum.GreateOrEqual, (int index, string? value) => new ValueGreateOrEqualSpec<TEntity>(index, value) },
@ -106,7 +106,7 @@ public static class FilterBuilder
private static Dictionary<OperationEnum, Func<int, double?, ISpecification<TEntity>>> DoubleSpecifications<TEntity>() private static Dictionary<OperationEnum, Func<int, double?, ISpecification<TEntity>>> DoubleSpecifications<TEntity>()
where TEntity : IValuesItem => new() where TEntity : IValuesItem => new()
{ {
{ OperationEnum.Equal, (int index, double? value) => new ValueEqaulSpec<TEntity>(index, value) }, { OperationEnum.Equal, (int index, double? value) => new ValueEqualSpec<TEntity>(index, value) },
{ OperationEnum.NotEqual, (int index, double? value) => new ValueNotEqualSpec<TEntity>(index, value) }, { OperationEnum.NotEqual, (int index, double? value) => new ValueNotEqualSpec<TEntity>(index, value) },
{ OperationEnum.Greate, (int index, double? value) => new ValueGreateSpec<TEntity>(index, value) }, { OperationEnum.Greate, (int index, double? value) => new ValueGreateSpec<TEntity>(index, value) },
{ OperationEnum.GreateOrEqual, (int index, double? value) => new ValueGreateOrEqualSpec<TEntity>(index, value) }, { OperationEnum.GreateOrEqual, (int index, double? value) => new ValueGreateOrEqualSpec<TEntity>(index, value) },

View File

@ -61,15 +61,15 @@ public class TimestampedValuesRepository : ITimestampedValuesRepository
resultQuery = resultQuery.Any() ? resultQuery.Union(query) : query; resultQuery = resultQuery.Any() ? resultQuery.Union(query) : query;
} }
var groupedQuery = resultQuery! var groupedQuery = resultQuery!
.GroupBy(e => e!.DiscriminatorId) .GroupBy(e => e.DiscriminatorId)

Можно убрать "!"

Можно убрать "!"
.Select(g => KeyValuePair.Create( .Select(g => KeyValuePair.Create(
g.Key, g.Key,
g.OrderBy(i => i!.Timestamp).Skip(skip).Take(take)) g.OrderBy(i => i.Timestamp).Skip(skip).Take(take))
); );
var entities = await groupedQuery.ToArrayAsync(token); var entities = await groupedQuery.ToArrayAsync(token);
var result = entities.ToDictionary(k => k.Key, v => v.Value.Select(e => ( var result = entities.ToDictionary(k => k.Key, v => v.Value.Select(e => (
e!.Timestamp, e.Timestamp,

Можно убрать "!"

Можно убрать "!"
e.Values e.Values
))); )));

View File

@ -7,15 +7,15 @@ namespace DD.Persistence.Database.Specifications.ValuesItem;
/// Спецификация эквивалентности значений IValuesItem в соответствии с индексацией /// Спецификация эквивалентности значений IValuesItem в соответствии с индексацией
/// </summary> /// </summary>
/// <typeparam name="TEntity"></typeparam> /// <typeparam name="TEntity"></typeparam>
public class ValueEqaulSpec<TEntity> : Specification<TEntity> public class ValueEqualSpec<TEntity> : Specification<TEntity>
where TEntity : IValuesItem where TEntity : IValuesItem
{ {
public ValueEqaulSpec(int index, string? value) public ValueEqualSpec(int index, string? value)
{ {
Query.Where(e => Convert.ToString(e.Values[index]) == value); Query.Where(e => Convert.ToString(e.Values[index]) == value);
} }
public ValueEqaulSpec(int index, double? value) public ValueEqualSpec(int index, double? value)
{ {
Query.Where(e => Convert.ToDouble(e.Values[index]) == value); Query.Where(e => Convert.ToDouble(e.Values[index]) == value);
} }

View File

@ -56,7 +56,7 @@ public class TimestampedValuesControllerTest : BaseIntegrationTest
} }
catch (Exception ex) catch (Exception ex)
{ {
var expectedMessage = $"На сервере произошла ошибка, в результате которой он не может успешно обработать запрос"; var expectedMessage = $"На сервере произошла ошибка, в результате которой он не может успешно обработать запрос";

Кодировка полетела

Кодировка полетела
//assert //assert
Assert.Equal(expectedMessage, ex.Message); Assert.Equal(expectedMessage, ex.Message);
@ -78,7 +78,7 @@ public class TimestampedValuesControllerTest : BaseIntegrationTest
var timestampBegin = DateTimeOffset.UtcNow.AddDays(-1); var timestampBegin = DateTimeOffset.UtcNow.AddDays(-1);
var columnNames = new List<string>() { "A", "C" }; var columnNames = new List<string>() { "A", "C" };
var skip = 0; var skip = 0;
var take = 6; // Ровно столько значений будет удовлетворять фильтру (\"A\">3) (для одного дискриминатора) var take = 6; // Ровно столько значений будет удовлетворять фильтру (\"A\">3) (для одного дискриминатора)
var customFilter = "(\"A\">3)"; var customFilter = "(\"A\">3)";