package io.ebeaninternal.api;

import io.ebean.ExpressionList;
import io.ebean.Junction;
import io.ebeaninternal.server.expression.DocQueryContext;

import java.io.IOException;
import java.util.List;

Internal extension of ExpressionList.
/** * Internal extension of ExpressionList. */
public interface SpiExpressionList<T> extends ExpressionList<T>, SpiExpression {
Return the expression list as a Junction (for ElasticSearch).
/** * Return the expression list as a Junction (for ElasticSearch). */
Junction<T> toJunction();
Return the underlying list of expressions.
/** * Return the underlying list of expressions. */
List<SpiExpression> getUnderlyingList();
Return a copy of the ExpressionList with the path trimmed for filterMany() expressions.
/** * Return a copy of the ExpressionList with the path trimmed for filterMany() expressions. */
SpiExpressionList<?> trimPath(int prefixTrim);
Return true if this list is empty.
/** * Return true if this list is empty. */
boolean isEmpty();
Write the top level where expressions taking into account possible extra idEquals expression.
/** * Write the top level where expressions taking into account possible extra idEquals expression. */
void writeDocQuery(DocQueryContext context, SpiExpression idEquals) throws IOException;
Apply firstRow maxRows limits on the filterMany query.
/** * Apply firstRow maxRows limits on the filterMany query. */
default void applyRowLimits(SpiQuery<?> query) { // do nothing by default } }