v0.3.0-beta
Pre-release
Pre-release
0.3.0-beta - 2024-04-25
Breaking Changes (Overview)
IFilterStatement- Now has an
Optionsproperty
This allows serialising to retain options applied to filters Manipulatorshas moved into the newOptionsproperty
- Now has an
IEntityManipulator- Now requires methods to manipulate Properties/Fields AND raw values
IOperation- Has new
Defaultsproperty Matchhas moved intoDefaultsSkipNullMemberCheckshas moved intoDefaultsand is now calledNullHandler
- Has new
- Operations can no longer have their null handler customised
This needs to be revisited, read the discussion - Serialisation
- To accommodate the changes above, we now serialise
Options- meaning currentManipulatorswill be lost. - Serialisation could break if the order of types was different. To prevent this there is now a default order and a
TypeTracker.FilterStatementTypesstatic property for customisation
- To accommodate the changes above, we now serialise
EqualandNotEqual- No longer do pre-emptive null checks as checking
nullis excluding actual matches
- No longer do pre-emptive null checks as checking
DoesNotContain,DoesNotEndWith,DoesNotStartWith- Now do a pre-emptive "is null OR" check as it was excluding
nulls
- Now do a pre-emptive "is null OR" check as it was excluding
Package: TopMarksDevelopment.ExpressionBuilder(* All)
Fixed
- Actually fixed the paths for the icons and the links to GitHub source code
Changed
- Compressed
icon.pngto reduce package size increase
Package: TopMarksDevelopment.ExpressionBuilder.Operations.*Not* (All Not Operations)
Changes
- Barring
NotIn, allNotoperations no longer rely on their counter operation. This was just unnecessary as the expression access was often simpler
Package: TopMarksDevelopment.ExpressionBuilder.Operations.* (All Operations)
Breaking changes
- Reflected the changes made to
IOperation:- Has new
Defaultsproperty.Matchhas moved intoDefaults.SkipNullMemberCheckshas moved intoDefaultsand is now calledNullHandler
- Has new
Package: TopMarksDevelopment.ExpressionBuilder.Api
Breaking changes
- Made changes made to
IOperation:- Has new
Defaultsproperty.Matchhas moved intoDefaults.SkipNullMemberCheckshas moved intoDefaultsand is now calledNullHandler
- Has new
Package: TopMarksDevelopment.ExpressionBuilder.Core
Breaking changes
- Serialisation could break if the order of types was different. To prevent this there is now a default order and a
TypeTracker.FilterStatementTypesstatic property for customisation
Fixed
- Calling
ToStringon a manipulator now produces with the correct output string. - Manipulators that cause an underlying type change no longer throws an exception
- Serialisation now adds core items based on the non-existence of
IFilterItemrather than based on the values in the oldProtoTypesmeaning serialisation could break in certain scenarios - Assigning an
OpenCollectionto a variable, then calling a furtherOpenCollectionandCloseCollectionin a chain would leave the variable in theOpenCollectionstate. This would apply further filters to the wrong class/property causing errors/miss-results
Package: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotContain
Breaking changes
- Tweaked null check to allow null or a match. As results are excluded if they're null
Changes
- No longer depends on
Contains
Package: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotEndWith
Breaking changes
- Tweaked null check to allow null or a match. As results are excluded if they're null
Changes
- No longer depends on
EndsWith
Package: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotStartWith
Breaking changes
- Tweaked null check to allow null or a match. As results are excluded if they're null
Changes
- No longer depends on
StartsWith
Package: TopMarksDevelopment.ExpressionBuilder.Operations.Equal
Breaking changes
- No longer does a null check first. As matching null will always return nothing
Package: TopMarksDevelopment.ExpressionBuilder.Operations.In
Fixed
- We no longer try to convert
membersto nullable types if they're already nullable
Package: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotEmpty
Breaking changes
- Tweaked null check to allow null or a match. As results are excluded if they're null
Changes
- No longer depends on
IsEmpty
Package: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotNull
Changes
- No longer depends on
IsNull
Package: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotNullOrWhiteSpace
Changes
- No longer depends on
IsNullOrWhiteSpace
Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotBetween
Breaking changes
- Tweaked null check to allow null or a match. As results are excluded if they're null
Changes
- No longer depends on
Between
Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotBetweenExclusive
Breaking changes
- Tweaked null check to allow null or a match. As results are excluded if they're null
Changes
- No longer depends on
BetweenExclusive
Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotEqual
Breaking changes
- No longer does a null check first. As results are excluded if they're null
Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotIn
Breaking changes
- Tweaked null check to allow null or a match. As results are excluded if they're null
Other (none-user facing)
Added
- Completed adding all tests for the rest of the operations. Closes: #1
- Added more tests to:
Corepackage- all the
Betweenoperations DoesNotContainoperationInoperationNotInoperationSmartSearchoperation
Changes
- To better identify and maintain tests that have been added after a fix, they have all been extracted into their own
Fix-Tests.csclass - this should be the de facto moving forward - Converted tests to the preferred
TheroyDatamethod - Removed tests that are related to the (for-now) removed
SkipNullChecksoption - Improved on
build-and-testby correcting--no-restoreto--no-buildduring the test phase
What's Changed
- Operations.In: stop unnecessary null conversion by @glenn2223 in #9
- Fixed NuGet data and compressed image by @glenn2223 in #10
- Tweaked tests by @glenn2223 in #11
- Overhaul of
IOperations and Serialisation. Plus bug fixes by @glenn2223 in #15 - v0.3.0-beta by @glenn2223 in #16
Full Changelog: v0.2.1-beta...v0.3.0-beta