Re: Fluent API addition request
John Huss <[email protected]> Mon, 8 Jul 2024 15:07:55 -0500
| Newsgroups | gmane.comp.java.cayenne.devel |
|---|---|
| Message-ID | <CAOUwSGvHP9Ex1a0UT5T6fhQ-EARiCWSSKLvd6MaJ1cBzeZJYHQ@mail.gmail.com> |
FWIW, when I need something like this for the WHERE part of a query I do it with the ternary operator and a static import of ExpressionFactory (which your IDE can add for you), like: .and(yearRange != null ? APPOINTMENT_DATE.gt(yearRange) : expTrue()) I don't think there is a good alternative to handle prefetches, but this handles the WHERE clause very well in my opinion. On Mon, Jul 8, 2024 at 5:30 AM Jurgen Doll <[email protected]> wrote: > Hi All > > What about borrowing "apply" from Function/UnaryOperator ? > Then we'll have the following API added to Expression: > > /** > * Apply the provided UnaryOperator function to the current Expression. > */ > public Expression apply( UnaryOperator<Expression> op ) > { > return op.apply( this ); > } > > And the same for ObjectSelect but passing a Consumer instead: > > /** > * Apply the provided Consumer to the current ObjectSelect. > */ > public ObjectSelect<T> apply( Consumer<ObjectSelect<T>> op ) > { > op.accept( this ); > return this; > } > > In addition I'd still very much like to have "apply" API that takes a > boolean parameter as well. For simple cases this will allow user code to > be more concise without the ternary pattern clutter. > > Thoughts, tweaks, likes or objections ? > > Regards > Jurgen >