Merged
Conversation
# 0.3.0-beta - 2024-04-25
<small>[Compare to previous release][comp:0.3.0-beta]</small>
### Breaking Changes (Overview)
- `IFilterStatement`
- Now has an `Options` property
This allows serialising to retain options applied to filters
- `Manipulators` has moved into the new `Options` property
- `IEntityManipulator`
- Now requires methods to manipulate Properties/Fields AND raw values
- `IOperation`
- Has new `Defaults` property
- `Match` has moved into `Defaults`
- `SkipNullMemberChecks` has moved into `Defaults` and is now called `NullHandler`
- Operations can no longer have their null handler customised
This needs to be revisited, read the [discussion](#14)
- Serialisation
- To accommodate the changes above, we now serialise `Options` - meaning current `Manipulators` will be lost.
- Serialisation could break if the order of types was different. To prevent this there is now a default order and a `TypeTracker.FilterStatementTypes` static property for customisation
- `Equal` and `NotEqual`
- No longer do pre-emptive null checks as checking `null` is excluding actual matches
- `DoesNotContain`, `DoesNotEndWith`, `DoesNotStartWith`
- Now do a pre-emptive "is null OR" check as it was excluding `null`s
### Package: TopMarksDevelopment.ExpressionBuilder(\* All)
#### Fixed
- Actually fixed the paths for the icons and the links to GitHub source code
#### Changed
- Compressed `icon.png` to reduce package size increase
### Package: TopMarksDevelopment.ExpressionBuilder.Operations.\*Not\* (All Not Operations)
#### Changes
- Barring `NotIn`, all `Not` operations 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 `Defaults` property. `Match` has moved into `Defaults`. `SkipNullMemberChecks` has moved into `Defaults` and is now called `NullHandler`
### Package: TopMarksDevelopment.ExpressionBuilder.Api
#### Breaking changes
- Made changes made to `IOperation`:
- Has new `Defaults` property. `Match` has moved into `Defaults`. `SkipNullMemberChecks` has moved into `Defaults` and is now called `NullHandler`
### 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.FilterStatementTypes` static property for customisation
#### Fixed
- Calling `ToString` on 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 `IFilterItem` rather than based on the values in the old `ProtoTypes` meaning serialisation could break in certain scenarios
- Assigning an `OpenCollection` to a variable, then calling a further `OpenCollection` and `CloseCollection` in a chain would leave the variable in the `OpenCollection` state. 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 `members` to 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](#1)
- Added more tests to:
- `Core` package
- all the `Between` operations
- `DoesNotContain` operation
- `In` operation
- `NotIn` operation
- `SmartSearch` operation
#### Changes
- To better identify and maintain tests that have been added after a fix, they have all been extracted into their own `Fix-Tests.cs` class - this should be the de facto moving forward
- Converted tests to the preferred `TheroyData` method
- Removed tests that are related to the (for-now) removed `SkipNullChecks` option
- Improved on `build-and-test` by correcting `--no-restore` to `--no-build` during the test phase
[comp:0.3.0-beta]: v0.2.1-beta...v0.3.0-beta
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
0.3.0-beta - 2024-04-25
Compare to previous release
Breaking Changes (Overview)
IFilterStatementOptionspropertyThis allows serialising to retain options applied to filters
Manipulatorshas moved into the newOptionspropertyIEntityManipulatorIOperationDefaultspropertyMatchhas moved intoDefaultsSkipNullMemberCheckshas moved intoDefaultsand is now calledNullHandlerThis needs to be revisited, read the discussion
Options- meaning currentManipulatorswill be lost.TypeTracker.FilterStatementTypesstatic property for customisationEqualandNotEqualnullis excluding actual matchesDoesNotContain,DoesNotEndWith,DoesNotStartWithnullsPackage: TopMarksDevelopment.ExpressionBuilder(* All)
Fixed
Changed
icon.pngto reduce package size increasePackage: TopMarksDevelopment.ExpressionBuilder.Operations.*Not* (All Not Operations)
Changes
NotIn, allNotoperations no longer rely on their counter operation. This was just unnecessary as the expression access was often simplerPackage: TopMarksDevelopment.ExpressionBuilder.Operations.* (All Operations)
Breaking changes
IOperation:Defaultsproperty.Matchhas moved intoDefaults.SkipNullMemberCheckshas moved intoDefaultsand is now calledNullHandlerPackage: TopMarksDevelopment.ExpressionBuilder.Api
Breaking changes
IOperation:Defaultsproperty.Matchhas moved intoDefaults.SkipNullMemberCheckshas moved intoDefaultsand is now calledNullHandlerPackage: TopMarksDevelopment.ExpressionBuilder.Core
Breaking changes
TypeTracker.FilterStatementTypesstatic property for customisationFixed
ToStringon a manipulator now produces with the correct output string.IFilterItemrather than based on the values in the oldProtoTypesmeaning serialisation could break in certain scenariosOpenCollectionto 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-resultsPackage: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotContain
Breaking changes
Changes
ContainsPackage: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotEndWith
Breaking changes
Changes
EndsWithPackage: TopMarksDevelopment.ExpressionBuilder.Operations.DoesNotStartWith
Breaking changes
Changes
StartsWithPackage: TopMarksDevelopment.ExpressionBuilder.Operations.Equal
Breaking changes
Package: TopMarksDevelopment.ExpressionBuilder.Operations.In
Fixed
membersto nullable types if they're already nullablePackage: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotEmpty
Breaking changes
Changes
IsEmptyPackage: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotNull
Changes
IsNullPackage: TopMarksDevelopment.ExpressionBuilder.Operations.IsNotNullOrWhiteSpace
Changes
IsNullOrWhiteSpacePackage: TopMarksDevelopment.ExpressionBuilder.Operations.NotBetween
Breaking changes
Changes
BetweenPackage: TopMarksDevelopment.ExpressionBuilder.Operations.NotBetweenExclusive
Breaking changes
Changes
BetweenExclusivePackage: TopMarksDevelopment.ExpressionBuilder.Operations.NotEqual
Breaking changes
Package: TopMarksDevelopment.ExpressionBuilder.Operations.NotIn
Breaking changes
Other (none-user facing)
Added
CorepackageBetweenoperationsDoesNotContainoperationInoperationNotInoperationSmartSearchoperationChanges
Fix-Tests.csclass - this should be the de facto moving forwardTheroyDatamethodSkipNullChecksoptionbuild-and-testby correcting--no-restoreto--no-buildduring the test phase