package io.reactiverse.pgclient.impl;
import io.reactiverse.pgclient.Row;
import io.reactiverse.pgclient.Tuple;
import io.reactiverse.pgclient.impl.codec.encoder.MessageEncoder;
import io.reactiverse.pgclient.impl.codec.encoder.Parse;
import java.util.List;
import java.util.stream.Collector;
public class ExtendedBatchQueryCommand<T> extends ExtendedQueryCommandBase<T> {
private final List<Tuple> params;
ExtendedBatchQueryCommand(PreparedStatement ps,
List<Tuple> params,
boolean singleton,
Collector<Row, ?, T> collector,
QueryResultHandler<T> resultHandler) {
this(ps, params, 0, null, false, singleton, collector, resultHandler);
}
private ExtendedBatchQueryCommand(PreparedStatement ps,
List<Tuple> params,
int fetch,
String portal,
boolean suspended,
boolean singleton,
Collector<Row, ?, T> collector,
QueryResultHandler<T> resultHandler) {
super(ps, fetch, portal, suspended, singleton, collector, resultHandler);
this.params = params;
}
@Override
void exec(MessageEncoder out) {
if (suspended) {
out.writeExecute(portal, fetch);
out.writeSync();
} else {
if (ps.bind.statement == 0) {
out.writeParse(new Parse(ps.sql));
}
if (params.isEmpty()) {
result = false;
} else {
for (Tuple param : params) {
out.writeBind(ps.bind, portal, (List<Object>) param);
out.writeExecute(portal, fetch);
}
}
out.writeSync();
}
}
}