Feature/operator expression customization#7
Merged
Conversation
…nd Like with user wildcards (phases 1-3)
- CriterionCase (Default/Sensitive/Insensitive) and LikeWrap (Default/Wrap/None) enums; Case and Wrap on CriterionAttribute.
- Portable insensitive fallback: ToUpper() on both sides for Like/Contains/StartsWith/EndsWith (new CreateOperatorExpression overload).
- ICriterionOperatorExpressionFactory + CriterionOperatorContext + CriterionOperatorExpressionFactories (first-non-null-wins, registration order), flowing from DefaultSpecifierFunctionGenerator through resolutions, complex filters and the disjunction runtime path.
- Like != Contains: Contains stays literal; Like honors user % wildcards via greedy portable matching (anchors + in-order slicing with IndexOf/Substring, 5-slice cut), applied at runtime (value-dependent shape). CriterionDefaults: DefaultStringOperator (Like) and WrapLikeValue (true), read at generation time.
- Fix: DisjunctionContext passed operands inverted to CreateOperatorExpression ("value".Contains(e.Prop), value > e.Prop); now aligned with the main resolution path.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
EntityFrameworkLikeExpressionFactory emits Like string criteria as EF.Functions.Like (native LIKE; user % and _ honored by the provider), honoring wrap and Case (Insensitive -> UPPER LIKE UPPER). Registered via AddEntityFrameworkLikeOperator (TryAddEnumerable). Tree assertions + SQLite e2e parity with the portable helper. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… emission (phase 5) New multi-target package (net8/9/10; Npgsql.EntityFrameworkCore.PostgreSQL 8.0.11/9.0.4/10.0.0): NpgsqlILikeExpressionFactory emits EF.Functions.ILike for Like + Insensitive criteria; AddNpgsqlLikeOperators registers ILike before the EF Like factory (first-non-null order). Tree-assertion tests (no PG in the repo). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…updated with phase results Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Created a new demo plan for the SmartSearch WebAPI project, outlining phases, objectives, and tasks. - Added a template for AI-driven implementation plans to standardize future planning documents. - Introduced DisjunctionAttribute to facilitate grouping of filter properties in queries. - Implemented DisjunctionCriterionResolution to handle disjunction logic in filtering expressions.
…g consistency - Renamed method FirstDefaultAsync to FirstOrDefaultAsync in ISearch interface and its implementation in Search class to improve clarity and align with common naming conventions.
- Introduced domain models: OrderStatus, Product, and DTOs for Customer, OrderSummary, and Product. - Implemented manual and mapped search endpoints for customers and orders. - Created filters for customers, orders, and products, including complex filters for nested properties. - Set up operation hints for loading related entities in order queries. - Configured in-memory SQLite database for demo purposes with a deterministic seed. - Added logging configuration and OpenAPI documentation for the API. - Included a README file with usage instructions and feature coverage matrix.
- Updated ProblemsVer to 1.0.0-preview-7.0 in Directory.Build.props. - Added comprehensive AI rules for SmartProblems in problems.ai-rules.md. - Introduced detailed validation rules and patterns for SmartValidations in validations.ai-rules.md.
…n to 1.0.0-preview-8.0
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.
No description provided.