All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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