Skip to content

v0.3.0-beta

Pre-release
Pre-release

Choose a tag to compare

@glenn2223 glenn2223 released this 25 Apr 14:37
· 18 commits to main since this release
989e7a0

0.3.0-beta - 2024-04-25

Compare to previous release

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
  • 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 nulls

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
  • 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

What's Changed

Full Changelog: v0.2.1-beta...v0.3.0-beta