Skip to content

Feature/operator expression customization#7

Merged
eglauko merged 13 commits into
mainfrom
feature/operator-expression-customization
Jul 19, 2026
Merged

Feature/operator expression customization#7
eglauko merged 13 commits into
mainfrom
feature/operator-expression-customization

Conversation

@eglauko

@eglauko eglauko commented Jul 19, 2026

Copy link
Copy Markdown
Member

No description provided.

eglauko and others added 13 commits July 6, 2026 19:20
…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.
@eglauko
eglauko merged commit 199be44 into main Jul 19, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant