Apply.java

package redis.clients.jedis.search;

import redis.clients.jedis.CommandArguments;
import redis.clients.jedis.annots.Experimental;
import redis.clients.jedis.params.IParams;

import static redis.clients.jedis.search.SearchProtocol.SearchKeyword.APPLY;
import static redis.clients.jedis.search.SearchProtocol.SearchKeyword.AS;

/**
 * APPLY operation for search commands. Computes a new field based on an expression.
 */
@Experimental
public class Apply implements IParams {

  private final String expression;
  private final String alias;

  private Apply(String expression, String alias) {
    this.expression = expression;
    this.alias = alias;
  }

  /**
   * Create an APPLY operation.
   * @param expression the expression to apply
   * @return a new Apply instance
   */
  public static Apply of(String expression) {
    return new Apply(expression, null);
  }

  /**
   * Create an APPLY operation.
   * @param expression the expression to apply
   * @param alias the alias for the result
   * @return a new Apply instance
   */
  public static Apply of(String expression, String alias) {
    return new Apply(expression, alias);
  }

  @Override
  public void addParams(CommandArguments args) {
    args.add(APPLY);
    args.add(expression);
    if (alias != null) {
      args.add(AS);
      args.add(alias);
    }
  }
}