package com.github.davidmoten.rx.jdbc;
import com.github.davidmoten.rx.jdbc.QueryUpdate.Builder;
import rx.Observable;
import rx.Observable.Transformer;
/**
* {@link Transformer} corresonding to {@link QueryUpdateOperation}.
*/
final class QueryUpdateTransformer<R> implements Transformer<R, Integer> {
private final Builder builder;
private final OperatorType operatorType;
/**
* Constructor.
*
* @param builder
* @param operatorType
*/
QueryUpdateTransformer(final QueryUpdate.Builder builder, final OperatorType operatorType) {
this.builder = builder;
this.operatorType = operatorType;
}
@Override
public Observable<Integer> call(Observable<R> source) {
if (operatorType == OperatorType.PARAMETER)
return builder.parameters(source).count();
else if (operatorType == OperatorType.DEPENDENCY)
// dependency
return builder.dependsOn(source).count();
else
throw new RuntimeException("does not handle " + operatorType);
}
}