diff --git a/src/EfficientDynamoDb/Condition.cs b/src/EfficientDynamoDb/Condition.cs index 62b84a98..b342cdcd 100644 --- a/src/EfficientDynamoDb/Condition.cs +++ b/src/EfficientDynamoDb/Condition.cs @@ -13,16 +13,16 @@ public class EntityFilter { internal static readonly EntityFilter Instance = new EntityFilter(); - public IAttributeFilter On(Expression> property) => Condition.On(property); + public IAttributeFilter On(Expression> property) => Condition.On(property); - public ISizeOfAttributeFilter OnSizeOf(Expression> property) => Condition.OnSizeOf(property); + public ISizeOfAttributeFilter OnSizeOf(Expression> property) => Condition.OnSizeOf(property); } public static class Condition { - public static IAttributeFilter On(Expression> property) => new AttributeFilter(property, false); + public static IAttributeFilter On(Expression> property) => new AttributeFilter(property, false); - public static ISizeOfAttributeFilter OnSizeOf(Expression> property) => - new AttributeFilter(property, true); + public static ISizeOfAttributeFilter OnSizeOf(Expression> property) => + new AttributeFilter(property, true); } } \ No newline at end of file diff --git a/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/AttributeFilter.cs b/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/AttributeFilter.cs index a19676f2..39e9e6f4 100644 --- a/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/AttributeFilter.cs +++ b/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/AttributeFilter.cs @@ -6,7 +6,7 @@ namespace EfficientDynamoDb.FluentCondition.Core.AttributeFilters { // TODO: Make two AttributeFilter implementations - default implementation is generic that forces property type as a method parameter and second one is current implementation that allows any parameter type - public class AttributeFilter : IAttributeFilter, ISizeOfAttributeFilter + public class AttributeFilter : IAttributeFilter, ISizeOfAttributeFilter { private readonly Expression _expression; private readonly bool _useSize; @@ -17,64 +17,64 @@ internal AttributeFilter(Expression expression, bool useSize) _useSize = useSize; } - public FilterBase LessThan(T value) => new FilterLessThan(_expression, _useSize, value); - public FilterBase LessThan(Expression> property) => new FilterLessThan(_expression, _useSize, property, false); - public FilterBase LessThanSizeOf(Expression> property) => new FilterLessThan(_expression, _useSize, property, true); + public FilterBase LessThan(TProperty value) => new FilterLessThan(_expression, _useSize, value); + public FilterBase LessThan(Expression> property) => new FilterLessThan(_expression, _useSize, property, false); + public FilterBase LessThanSizeOf(Expression> property) => new FilterLessThan(_expression, _useSize, property, true); - public FilterBase LessThanOrEqualTo(T value) => new FilterLessThanOrEqualTo(_expression, _useSize, value); - public FilterBase LessThanOrEqualTo(Expression> property) => new FilterLessThanOrEqualTo(_expression, _useSize, property, false); - public FilterBase LessThanOrEqualToSizeOf(Expression> property) => new FilterLessThanOrEqualTo(_expression, _useSize, property, true); + public FilterBase LessThanOrEqualTo(TProperty value) => new FilterLessThanOrEqualTo(_expression, _useSize, value); + public FilterBase LessThanOrEqualTo(Expression> property) => new FilterLessThanOrEqualTo(_expression, _useSize, property, false); + public FilterBase LessThanOrEqualToSizeOf(Expression> property) => new FilterLessThanOrEqualTo(_expression, _useSize, property, true); - public FilterBase EqualTo(T value) => new FilterEqualTo(_expression, _useSize, value); - public FilterBase EqualTo(Expression> property) => new FilterEqualTo(_expression, _useSize, property, false); - public FilterBase EqualToSizeOf(Expression> property) => new FilterEqualTo(_expression, _useSize, property, true); + public FilterBase EqualTo(TProperty value) => new FilterEqualTo(_expression, _useSize, value); + public FilterBase EqualTo(Expression> property) => new FilterEqualTo(_expression, _useSize, property, false); + public FilterBase EqualToSizeOf(Expression> property) => new FilterEqualTo(_expression, _useSize, property, true); - public FilterBase NotEqualTo(T value) => new FilterNotEqualTo(_expression, _useSize, value); - public FilterBase NotEqualTo(Expression> property) => new FilterNotEqualTo(_expression, _useSize, property, false); - public FilterBase NotEqualToSizeOf(Expression>property) => new FilterNotEqualTo(_expression, _useSize, property, true); + public FilterBase NotEqualTo(TProperty value) => new FilterNotEqualTo(_expression, _useSize, value); + public FilterBase NotEqualTo(Expression> property) => new FilterNotEqualTo(_expression, _useSize, property, false); + public FilterBase NotEqualToSizeOf(Expression>property) => new FilterNotEqualTo(_expression, _useSize, property, true); - public FilterBase GreaterThan(T value) => new FilterGreaterThan(_expression, _useSize, value); - public FilterBase GreaterThan(Expression> property) => new FilterGreaterThan(_expression, _useSize, property, false); - public FilterBase GreaterThanSizeOf(Expression> property) => new FilterGreaterThan(_expression, _useSize, property, true); + public FilterBase GreaterThan(TProperty value) => new FilterGreaterThan(_expression, _useSize, value); + public FilterBase GreaterThan(Expression> property) => new FilterGreaterThan(_expression, _useSize, property, false); + public FilterBase GreaterThanSizeOf(Expression> property) => new FilterGreaterThan(_expression, _useSize, property, true); - public FilterBase GreaterThanOrEqualTo(T value) => new FilterGreaterThanOrEqualTo(_expression, _useSize, value); - public FilterBase GreaterThanOrEqualTo(Expression> property) => new FilterGreaterThanOrEqualTo(_expression, _useSize, property, false); - public FilterBase GreaterThanOrEqualToSizeOf(Expression> property) => new FilterGreaterThanOrEqualTo(_expression, _useSize, property, true); + public FilterBase GreaterThanOrEqualTo(TProperty value) => new FilterGreaterThanOrEqualTo(_expression, _useSize, value); + public FilterBase GreaterThanOrEqualTo(Expression> property) => new FilterGreaterThanOrEqualTo(_expression, _useSize, property, false); + public FilterBase GreaterThanOrEqualToSizeOf(Expression> property) => new FilterGreaterThanOrEqualTo(_expression, _useSize, property, true); - public FilterBase Between(T min, T max) => new FilterBetweenValues(_expression, _useSize, min, max); + public FilterBase Between(TProperty min, TProperty max) => new FilterBetweenValues(_expression, _useSize, min, max); - public FilterBase Between(Expression> minProperty, TProperty max) => + public FilterBase Between(Expression> minProperty, TProperty max) => new FilterBetweenAttributeAndValue(_expression, _useSize, minProperty, false, max); - public FilterBase BetweenSizeOfAndValue(Expression> minProperty, TProperty max) => + public FilterBase BetweenSizeOfAndValue(Expression> minProperty, TProperty max) => new FilterBetweenAttributeAndValue(_expression, _useSize, minProperty, true, max); - public FilterBase Between(TProperty min, Expression> maxProperty) => + public FilterBase Between(TProperty min, Expression> maxProperty) => new FilterBetweenValueAndAttribute(_expression, _useSize, min, maxProperty, false); - public FilterBase BetweenValueAndSizeOf(TProperty min, Expression> maxProperty) => + public FilterBase BetweenValueAndSizeOf(TProperty min, Expression> maxProperty) => new FilterBetweenValueAndAttribute(_expression, _useSize, min, maxProperty, true); - public FilterBase Between(Expression> minProperty, Expression> maxProperty) => + public FilterBase Between(Expression> minProperty, Expression> maxProperty) => new FilterBetweenAttributes(_expression, _useSize, minProperty, false, maxProperty, false); - public FilterBase BetweenSizeOf(Expression> minProperty, Expression> maxProperty) => + public FilterBase BetweenSizeOf(Expression> minProperty, Expression> maxProperty) => new FilterBetweenAttributes(_expression, _useSize, minProperty, true, maxProperty, true); public FilterBase BeginsWith(string prefix) => new FilterBeginsWithValue(_expression, _useSize, prefix); - public FilterBase BeginsWith(Expression> property) => new FilterBeginsWithAttribute(_expression, _useSize, property, false); - public FilterBase BeginsWithSizeOf(Expression> property) => new FilterBeginsWithAttribute(_expression, _useSize, property, true); + public FilterBase BeginsWith(Expression> property) => new FilterBeginsWithAttribute(_expression, _useSize, property, false); + public FilterBase BeginsWithSizeOf(Expression> property) => new FilterBeginsWithAttribute(_expression, _useSize, property, true); - public FilterBase In(params T[] values) => new FilterIn(_expression, _useSize, values); - public FilterBase In(params Expression[] properties) => new FilterIn(_expression, _useSize, properties, false); - public FilterBase InSizeOf(params Expression[] properties) => new FilterIn(_expression, _useSize, properties, true); + public FilterBase In(params TProperty[] values) => new FilterIn(_expression, _useSize, values); + public FilterBase In(params Expression[] properties) => new FilterIn(_expression, _useSize, properties, false); + public FilterBase InSizeOf(params Expression[] properties) => new FilterIn(_expression, _useSize, properties, true); public FilterBase Exists() => new FilterAttributeExists(_expression); public FilterBase NotExists() => new FilterAttributeNotExists(_expression); public FilterBase Contains(T value) => new FilterContains(_expression, _useSize, value); - public FilterBase Contains(Expression> property) => new FilterContains(_expression, _useSize, property, false); - public FilterBase ContainsSizeOf(Expression> property) => new FilterContains(_expression, _useSize, property, true); + public FilterBase Contains(Expression> property) => new FilterContains(_expression, _useSize, property, false); + public FilterBase ContainsSizeOf(Expression> property) => new FilterContains(_expression, _useSize, property, true); public FilterBase OfType(AttributeType type) => new FilterAttributeType(_expression, type); } diff --git a/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/IAttributeFilter.cs b/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/IAttributeFilter.cs index 0448bb78..b7673030 100644 --- a/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/IAttributeFilter.cs +++ b/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/IAttributeFilter.cs @@ -4,54 +4,54 @@ namespace EfficientDynamoDb.FluentCondition.Core.AttributeFilters { - public interface IAttributeFilter + public interface IAttributeFilter { - public FilterBase LessThan(T value); - public FilterBase LessThan(Expression> property); - public FilterBase LessThanSizeOf(Expression> property); - - public FilterBase LessThanOrEqualTo(T value); - public FilterBase LessThanOrEqualTo(Expression> property); - public FilterBase LessThanOrEqualToSizeOf(Expression> property); - - public FilterBase EqualTo(T value); - public FilterBase EqualTo(Expression> property); - public FilterBase EqualToSizeOf(Expression> property); - - public FilterBase NotEqualTo(T value); - public FilterBase NotEqualTo(Expression> property); - public FilterBase NotEqualToSizeOf(Expression> property); - - public FilterBase GreaterThan(T value); - public FilterBase GreaterThan(Expression> property); - public FilterBase GreaterThanSizeOf(Expression> property); - - public FilterBase GreaterThanOrEqualTo(T value); - public FilterBase GreaterThanOrEqualTo(Expression> property); - public FilterBase GreaterThanOrEqualToSizeOf(Expression> property); - - public FilterBase Between(T min, T max); - public FilterBase Between(Expression> minProperty, TProperty max); - public FilterBase BetweenSizeOfAndValue(Expression> minProperty, TProperty max); - public FilterBase Between(TProperty min, Expression> maxProperty); - public FilterBase BetweenValueAndSizeOf(TProperty min, Expression> maxProperty); - public FilterBase Between(Expression> minProperty, Expression> maxProperty); - public FilterBase BetweenSizeOf(Expression> minProperty, Expression> maxProperty); + public FilterBase LessThan(TProperty value); + public FilterBase LessThan(Expression> property); + public FilterBase LessThanSizeOf(Expression> property); + + public FilterBase LessThanOrEqualTo(TProperty value); + public FilterBase LessThanOrEqualTo(Expression> property); + public FilterBase LessThanOrEqualToSizeOf(Expression> property); + + public FilterBase EqualTo(TProperty value); + public FilterBase EqualTo(Expression> property); + public FilterBase EqualToSizeOf(Expression> property); + + public FilterBase NotEqualTo(TProperty value); + public FilterBase NotEqualTo(Expression> property); + public FilterBase NotEqualToSizeOf(Expression> property); + + public FilterBase GreaterThan(TProperty value); + public FilterBase GreaterThan(Expression> property); + public FilterBase GreaterThanSizeOf(Expression> property); + + public FilterBase GreaterThanOrEqualTo(TProperty value); + public FilterBase GreaterThanOrEqualTo(Expression> property); + public FilterBase GreaterThanOrEqualToSizeOf(Expression> property); + + public FilterBase Between(TProperty min, TProperty max); + public FilterBase Between(Expression> minProperty, TProperty max); + public FilterBase BetweenSizeOfAndValue(Expression> minProperty, TProperty max); + public FilterBase Between(TProperty min, Expression> maxProperty); + public FilterBase BetweenValueAndSizeOf(TProperty min, Expression> maxProperty); + public FilterBase Between(Expression> minProperty, Expression> maxProperty); + public FilterBase BetweenSizeOf(Expression> minProperty, Expression> maxProperty); public FilterBase BeginsWith(string prefix); - public FilterBase BeginsWith(Expression> property); - public FilterBase BeginsWithSizeOf(Expression> property); + public FilterBase BeginsWith(Expression> property); + public FilterBase BeginsWithSizeOf(Expression> property); - public FilterBase In(params T[] values); - public FilterBase In(params Expression[] properties); - public FilterBase InSizeOf(params Expression[] properties); + public FilterBase In(params TProperty[] values); + public FilterBase In(params Expression[] properties); + public FilterBase InSizeOf(params Expression[] properties); public FilterBase Exists(); public FilterBase NotExists(); public FilterBase Contains(T value); - public FilterBase Contains(Expression> property); - public FilterBase ContainsSizeOf(Expression> property); + public FilterBase Contains(Expression> property); + public FilterBase ContainsSizeOf(Expression> property); public FilterBase OfType(AttributeType type); } diff --git a/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/ISizeOfAttributeFilter.cs b/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/ISizeOfAttributeFilter.cs index 2d7dcef3..74d870bc 100644 --- a/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/ISizeOfAttributeFilter.cs +++ b/src/EfficientDynamoDb/FluentCondition/Core/AttributeFilters/ISizeOfAttributeFilter.cs @@ -3,50 +3,50 @@ namespace EfficientDynamoDb.FluentCondition.Core.AttributeFilters { - public interface ISizeOfAttributeFilter + public interface ISizeOfAttributeFilter { - public FilterBase LessThan(T value); - public FilterBase LessThan(Expression> property); - public FilterBase LessThanSizeOf(Expression> property); - - public FilterBase LessThanOrEqualTo(T value); - public FilterBase LessThanOrEqualTo(Expression> property); - public FilterBase LessThanOrEqualToSizeOf(Expression> property); - - public FilterBase EqualTo(T value); - public FilterBase EqualTo(Expression> property); - public FilterBase EqualToSizeOf(Expression> property); - - public FilterBase NotEqualTo(T value); - public FilterBase NotEqualTo(Expression> property); - public FilterBase NotEqualToSizeOf(Expression> property); - - public FilterBase GreaterThan(T value); - public FilterBase GreaterThan(Expression> property); - public FilterBase GreaterThanSizeOf(Expression> property); - - public FilterBase GreaterThanOrEqualTo(T value); - public FilterBase GreaterThanOrEqualTo(Expression> property); - public FilterBase GreaterThanOrEqualToSizeOf(Expression> property); - - public FilterBase Between(T min, T max); - public FilterBase Between(Expression> minProperty, TProperty max); - public FilterBase BetweenSizeOfAndValue(Expression> minProperty, TProperty max); - public FilterBase Between(TProperty min, Expression> maxProperty); - public FilterBase BetweenValueAndSizeOf(TProperty min, Expression> maxProperty); - public FilterBase Between(Expression> minProperty, Expression> maxProperty); - public FilterBase BetweenSizeOf(Expression> minProperty, Expression> maxProperty); + public FilterBase LessThan(TProperty value); + public FilterBase LessThan(Expression> property); + public FilterBase LessThanSizeOf(Expression> property); + + public FilterBase LessThanOrEqualTo(TProperty value); + public FilterBase LessThanOrEqualTo(Expression> property); + public FilterBase LessThanOrEqualToSizeOf(Expression> property); + + public FilterBase EqualTo(TProperty value); + public FilterBase EqualTo(Expression> property); + public FilterBase EqualToSizeOf(Expression> property); + + public FilterBase NotEqualTo(TProperty value); + public FilterBase NotEqualTo(Expression> property); + public FilterBase NotEqualToSizeOf(Expression> property); + + public FilterBase GreaterThan(TProperty value); + public FilterBase GreaterThan(Expression> property); + public FilterBase GreaterThanSizeOf(Expression> property); + + public FilterBase GreaterThanOrEqualTo(TProperty value); + public FilterBase GreaterThanOrEqualTo(Expression> property); + public FilterBase GreaterThanOrEqualToSizeOf(Expression> property); + + public FilterBase Between(TProperty min, TProperty max); + public FilterBase Between(Expression> minProperty, TProperty max); + public FilterBase BetweenSizeOfAndValue(Expression> minProperty, TProperty max); + public FilterBase Between(TProperty min, Expression> maxProperty); + public FilterBase BetweenValueAndSizeOf(TProperty min, Expression> maxProperty); + public FilterBase Between(Expression> minProperty, Expression> maxProperty); + public FilterBase BetweenSizeOf(Expression> minProperty, Expression> maxProperty); public FilterBase BeginsWith(string prefix); - public FilterBase BeginsWith(Expression> property); - public FilterBase BeginsWithSizeOf(Expression> property); + public FilterBase BeginsWith(Expression> property); + public FilterBase BeginsWithSizeOf(Expression> property); - public FilterBase In(params T[] values); - public FilterBase In(params Expression[] properties); - public FilterBase InSizeOf(params Expression[] properties); + public FilterBase In(params TProperty[] values); + public FilterBase In(params Expression[] properties); + public FilterBase InSizeOf(params Expression[] properties); public FilterBase Contains(T value); - public FilterBase Contains(Expression> property); - public FilterBase ContainsSizeOf(Expression> property); + public FilterBase Contains(Expression> property); + public FilterBase ContainsSizeOf(Expression> property); } } \ No newline at end of file diff --git a/src/EfficientDynamoDb/Internal/Converters/Collections/IListDdbConverter.cs b/src/EfficientDynamoDb/Internal/Converters/Collections/IListDdbConverter.cs index 52dd8d82..93fc10fe 100644 --- a/src/EfficientDynamoDb/Internal/Converters/Collections/IListDdbConverter.cs +++ b/src/EfficientDynamoDb/Internal/Converters/Collections/IListDdbConverter.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Runtime.CompilerServices; +using System.Text.Json; using EfficientDynamoDb.Converters; using EfficientDynamoDb.DocumentModel;