Releases: TopMarksDevelopment/Expression-Builder
Releases · TopMarksDevelopment/Expression-Builder
v1.0.0-rc.1
1.0.0-rc.1 - 2024-09-19
🛈 This is the first release candidate for the package. There should be minimal changes between this and the final v1.0.0 release - as such, this is considered production ready
Breaking Changes (Overview)
byte[]
and stream serialisation has changed, but is now significantly more robust (and simpler in its' implementation)- As JSON filtering hasn't changed, you can retain any filters saved in
byte[]
form. Before upgrading convert them to JSON and then upgrade and revert them back - Linked to this;
TypeTracker.DefaultFilterStatementTypes
has also been removed, as it is no longer required for serialisation
- As JSON filtering hasn't changed, you can retain any filters saved in
Changes (Overview)
- Formatted across the whole project
- Removed unused/unnecessary
using
statements
Package: TopMarksDevelopment.ExpressionBuilder.Api
Breaking Changes
IFilterCollection
/IFilterCollection<T?>
now expects anAddRange
method
Added
- Finally added all summary blocks 🎉
(Chore: do the same to all other packages)
Package: TopMarksDevelopment.ExpressionBuilder.Core
Breaking Changes
byte[]
and stream serialisation has changed, but is now significantly more robust- As JSON filtering hasn't changed, you can retain any filters saved in
byte[]
form. Before upgrading convert them to JSON and then upgrade and revert them back - Linked to this;
TypeTracker.DefaultFilterStatementTypes
has also been removed, as it is no longer required for serialisation
- As JSON filtering hasn't changed, you can retain any filters saved in
Added
- There's now a
.proto
file available here FilterCollection
andFilterCollection<T?>
include anAddRange
method - supporting API Changes- Added new members for the serialisation changes
IProtoFilterItem
interface
Used on classes that build our filter (implementing the conversion between types)IProtoConverter
interface
When your generic type is not a supported value, implementing this interface means we can still process it inbyte[]
serialisationProtoFilterStatement
class
The new class used forbyte[]
serialisation. This class does not have a generic type, so makes serialising a lot more simple and robust
Changes
- Added JSON file test and renamed JSON tests
- Removed tests associated with
TypeTracker.DefaultFilterStatementTypes
work
What's Changed
- Improve
byte[]
serialising (plus formatting, protobuf and finished API documenting) by @glenn2223 in #21 - PREP: v1.0.0-rc.1 by @glenn2223 in #22
Full Changelog: v0.4.0-beta...v1.0.0-rc.1
v0.4.0-beta
0.4.0-beta - 2024-04-26
Breaking Changes (Overview)
IFilter
now requires aCurrent
list to show the collection it's currently working on. This means that close chaining works better
Package: TopMarksDevelopment.ExpressionBuilder.Api
Breaking changes
IFilter
now requires aCurrent
list to show the collection it's currently working on. This means that close chaining works better
Added
- Added summary blocks to all the interfaces (Chore: more to do)
Package: TopMarksDevelopment.ExpressionBuilder.Core
Fixed
- Close chaining no longer carries through to the root filer.
Fixes bug introduced in v0.3.0-beta
Changes
- Implemented new
IFilter.Current
property - Added test for some deeper close chaining
(as it's not a fix, but rather a check, it's in core-tests) - Removed some summary blocks that had been moved to the
Api
package
What's Changed
- Fixed close chaining bug introduced in v0.3.0-beta by @glenn2223 in #17
- Added extra test for deep close chaining check by @glenn2223 in #18
- Added summaries to interfaces in
Api
package by @glenn2223 in #19 - v0.4.0-beta by @glenn2223 in #20
Full Changelog: v0.3.0-beta...v0.4.0-beta
v0.3.0-beta
0.3.0-beta - 2024-04-25
Breaking Changes (Overview)
IFilterStatement
- Now has an
Options
property
This allows serialising to retain options applied to filters Manipulators
has moved into the newOptions
property
- Now has an
IEntityManipulator
- Now requires methods to manipulate Properties/Fields AND raw values
IOperation
- Has new
Defaults
property Match
has moved intoDefaults
SkipNullMemberChecks
has moved intoDefaults
and 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 currentManipulators
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
- To accommodate the changes above, we now serialise
Equal
andNotEqual
- No longer do pre-emptive null checks as checking
null
is 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
null
s
- 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.png
to reduce package size increase
Package: TopMarksDevelopment.ExpressionBuilder.Operations.*Not* (All Not Operations)
Changes
- Barring
NotIn
, allNot
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 intoDefaults
.SkipNullMemberChecks
has moved intoDefaults
and is now calledNullHandler
- Has new
Package: TopMarksDevelopment.ExpressionBuilder.Api
Breaking changes
- Made changes made to
IOperation
:- Has new
Defaults
property.Match
has moved intoDefaults
.SkipNullMemberChecks
has moved intoDefaults
and 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.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 oldProtoTypes
meaning serialisation could break in certain scenarios - Assigning an
OpenCollection
to a variable, then calling a furtherOpenCollection
andCloseCollection
in a chain would leave the variable in theOpenCollection
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
- Added more tests to:
Core
package- all the
Between
operations DoesNotContain
operationIn
operationNotIn
operationSmartSearch
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
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
IOperation
s 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
v0.2.1-beta
0.2.1-beta - 2024-03-06
Package: TopMarksDevelopment.ExpressionBuilder(* All)
Fixed
- Fixed the paths for the icons and the links to GitHub source code
Changed
- Updated the copyright year for NuGet packages and
License.md
Package: TopMarksDevelopment.ExpressionBuilder.Operations.* (All Operations)
Changed
- Moved all extension methods from the
TopMarksDevelopment.ExpressionBuilder.Api
namespace toTopMarksDevelopment.ExpressionBuilder
, for easier access (not technically "breaking" as the main package is always required to operate)
v0.2.0-beta
0.2.0-beta - 2024-02-28
Breaking Changes
- Moved the
Connector
andMatches
enumerators fromTopMarksDevelopment.ExpressionBuilder.Api
toTopMarksDevelopment.ExpressionBuilder
, for easier access
Fixes
- Removed duplicated methods in the
TopMarksDevelopment.ExpressionBuilder.Api
andTopMarksDevelopment.ExpressionBuilder
namespaces. Preventing you from using an extension method if you use both namespaces
Changes
- Added GitHub
FUNDING.yml
to hopefully get some support/funding 😜 - (Non-user facing) Updated the GitHub workflows to use the current versions of
checkout
andsetup-dotnet
v0.1.0-beta
0.1.0-beta - 2024-02-28
Initial release