-
-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Custom LINQ engine #112
base: main
Are you sure you want to change the base?
Custom LINQ engine #112
Conversation
Codecov Report
@@ Coverage Diff @@
## master #112 +/- ##
==========================================
- Coverage 91.74% 87.07% -4.68%
==========================================
Files 71 78 +7
Lines 2496 2932 +436
Branches 294 348 +54
==========================================
+ Hits 2290 2553 +263
- Misses 134 286 +152
- Partials 72 93 +21
Continue to review full report at Codecov.
|
1012af6
to
5a7e48b
Compare
Of note, attempt to support |
dceb2db
to
fb0cce4
Compare
The process now will be to add the "low hanging fruit" queries like GroupBy etc, then write translators for GeoNear and Text search. Once done, we remove the pre-stage logic as it all will be handled by the new LINQ translator system. The updated At this point, it is just a matter of weeding out the existing tests to pass, then making sure that each component is adequately tested itself. Once this is done, the next wave of changes will be writing an optimization layer for queries. This will be done directly with the |
Kickstarts #87 though a ton more work is needed
Tries to standardise behind one "MethodParser" system. Adds a whole bunch of parsing logic for many types of expressions. Major things to do: - Support projection ("new BlahBlah" as well as properties) - Support groupby - Support ThenOrderBy (though will need a post-processor or something to group statements unless I un-standardise it and have no queries-within-queries - I mean, I probably don't want that anyway)
PropertyMappingProcessor needed to ignore CanWrite so the properties can be picked up for anonymous types.
Second (or third, depending how you count it) of building an expression system base. Supports custom method, member and even expression type translators.
Negating "AndAlso" isn't the same as negating an "OrElse". The "OrElse" can use a "$nor" whereas the "AndAlso" needs to have the individual operations use "$not" around their operator expression.
61fcff1
to
4ec1b63
Compare
This kick starts the work for #87