Perhaps we just don't allow "reset" operations in the new API at all?
> On Apr 15, 2015, at 10:07 AM, Andrus Adamchik <and...@objectstyle.org> wrote: > > >> On Apr 15, 2015, at 9:57 AM, Aristedes Maniatis <a...@ish.com.au> wrote: >> 1. Before >> >> >> >> The main lack of clarity here is "lt". Is it worth having an alias "before" >> for "lt"? >> >> where(SupportPassword.EXPIRES_ON.before(new Date())). > > Wouldn't "before" only apply to dates? What if it is an Integer? > > > >> 2. Lots of AND >> >> List<Contact> users = ObjectSelect.query(Contact.class). >> where(Contact.EMAIL_ADDRESS.eq(email). >> andExp(Contact.COLLEGE.eq(college)). >> andExp(Contact.GIVEN_NAME.eq(firstName)). >> andExp(Contact.LAST_NAME.eq(lastName))). >> select(context); >> >> You can easily get lost in all those brackets, especially for more complex >> expressions than above. Would it make sense to write this: >> >> List<Contact> users = ObjectSelect.query(Contact.class). >> where(Contact.EMAIL_ADDRESS.eq(email). >> where(Contact.COLLEGE.eq(college)). >> where(Contact.GIVEN_NAME.eq(firstName)). >> where(Contact.LAST_NAME.eq(lastName))). >> select(context); > > "where" sets a new qualifier. However we also have "and" and "or" that append > to the existing one, so your example may look like this: > > List<Contact> users = ObjectSelect.query(Contact.class) > .where(Contact.EMAIL_ADDRESS.eq(email)) > .and(Contact.COLLEGE.eq(college)) > .and(Contact.GIVEN_NAME.eq(firstName)) > .or(Contact.LAST_NAME.eq(lastName))) > .select(context); > >> Also, and probably more importantly, ordering like this makes sense: >> >> List<Contact> users = >> query.order(Contact.GIVEN_NAME.asc()).order(Contact.LAST_NAME.asc()).select(context); > > Here also we have separate methods for resetting ordering and for appending > to the existing ones: > > List<Contact> users = query > .orderBy(Contact.GIVEN_NAME.asc()) > .addOrderBy(Contact.LAST_NAME.asc()) > .select(context); > > (Same with prefetching). Unfortunately this is a bit confusing, but I could > not think of another way to allow both "reset" and "append" operations. > > Andrus > > > >