package org.quaere.dsl; import org.quaere.expressions.Expression; import org.quaere.expressions.QueryExpression; import java.util.Comparator; public interface QueryBodyBuilder<R> extends Iterable<R> { FromClauseBuilder<R> from(String identifer); FromClauseBuilder<R> from(QueryExpressionBuilder subquery); DeclarationClauseBuilder<R> declare(String identifier); QueryBodyBuilder<R> where(String predicate); QueryBodyBuilder<R> where(Expression predicate); JoinClauseBuilder<R> join(String identifer); QueryBodyBuilder<R> orderBy(String expression); QueryBodyBuilder<R> orderBy(String expression, Comparator comparator); QueryBodyBuilder<R> orderBy(Expression expression); QueryBodyBuilder<R> orderBy(Expression expression, Comparator comparator); QueryBodyBuilder<R> orderByDescending(String expression); QueryBodyBuilder<R> orderByDescending(String expression, Comparator comparator); QueryBodyBuilder<R> orderByDescending(Expression expression); QueryBodyBuilder<R> orderByDescending(Expression expression, Comparator comparator); <R> QueryContinuationOrQueryBodyBuilder<R> select(String expression); <R> QueryContinuationOrQueryBodyBuilder<R> select(Expression expression); GroupClauseBuilder<R> group(String identifier); QueryExpression getQueryExpression(); }