tech.ydb.core.operation.StatusExtractor Maven / Gradle / Ivy
package tech.ydb.core.operation;
import java.util.List;
import java.util.function.Function;
import tech.ydb.core.Issue;
import tech.ydb.core.Result;
import tech.ydb.core.Status;
import tech.ydb.core.StatusCode;
import tech.ydb.proto.StatusCodesProtos.StatusIds;
import tech.ydb.proto.YdbIssueMessage.IssueMessage;
public class StatusExtractor implements Function, Result> {
private final Function statusMethod;
private final Function> issuesMethod;
private StatusExtractor(Function status, Function> issues) {
this.statusMethod = status;
this.issuesMethod = issues;
}
@Override
public Result apply(Result result) {
if (!result.isSuccess()) {
return result;
}
R resp = result.getValue();
Status status = Status.of(
StatusCode.fromProto(statusMethod.apply(resp)),
result.getStatus().getConsumedRu(),
Issue.fromPb(issuesMethod.apply(resp))
);
return status.isSuccess() ? Result.success(resp, status) : Result.fail(status);
}
public static StatusExtractor of(
Function statusMethod,
Function> issuerMethod
) {
return new StatusExtractor<>(statusMethod, issuerMethod);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy