tech.ydb.table.rpc.grpc.GrpcTableRpc Maven / Gradle / Ivy
package tech.ydb.table.rpc.grpc;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ScheduledExecutorService;
import javax.annotation.ParametersAreNonnullByDefault;
import javax.annotation.WillClose;
import javax.annotation.WillNotClose;
import tech.ydb.core.Result;
import tech.ydb.core.Status;
import tech.ydb.core.grpc.GrpcReadStream;
import tech.ydb.core.grpc.GrpcRequestSettings;
import tech.ydb.core.grpc.GrpcTransport;
import tech.ydb.core.operation.OperationBinder;
import tech.ydb.core.operation.StatusExtractor;
import tech.ydb.proto.table.YdbTable;
import tech.ydb.proto.table.v1.TableServiceGrpc;
import tech.ydb.table.rpc.TableRpc;
/**
* @author Sergey Polovko
*/
@ParametersAreNonnullByDefault
public final class GrpcTableRpc implements TableRpc {
private final GrpcTransport transport;
private final boolean transportOwned;
private static final StatusExtractor READ_ROWS = StatusExtractor.of(
YdbTable.ReadRowsResponse::getStatus, YdbTable.ReadRowsResponse::getIssuesList);
private GrpcTableRpc(GrpcTransport transport, boolean transportOwned) {
this.transport = transport;
this.transportOwned = transportOwned;
}
public static GrpcTableRpc useTransport(@WillNotClose GrpcTransport transport) {
return new GrpcTableRpc(transport, false);
}
public static GrpcTableRpc ownTransport(@WillClose GrpcTransport transport) {
return new GrpcTableRpc(transport, true);
}
@Override
public CompletableFuture> createSession(
YdbTable.CreateSessionRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getCreateSessionMethod(), settings, request)
.thenApply(OperationBinder.bindSync(
YdbTable.CreateSessionResponse::getOperation, YdbTable.CreateSessionResult.class
));
}
@Override
public CompletableFuture deleteSession(
YdbTable.DeleteSessionRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getDeleteSessionMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.DeleteSessionResponse::getOperation));
}
@Override
public CompletableFuture> keepAlive(
YdbTable.KeepAliveRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getKeepAliveMethod(), settings, request)
.thenApply(OperationBinder
.bindSync(YdbTable.KeepAliveResponse::getOperation, YdbTable.KeepAliveResult.class)
);
}
@Override
public CompletableFuture createTable(YdbTable.CreateTableRequest request, GrpcRequestSettings settings) {
return transport
.unaryCall(TableServiceGrpc.getCreateTableMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.CreateTableResponse::getOperation));
}
@Override
public CompletableFuture dropTable(YdbTable.DropTableRequest request, GrpcRequestSettings settings) {
return transport
.unaryCall(TableServiceGrpc.getDropTableMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.DropTableResponse::getOperation));
}
@Override
public CompletableFuture alterTable(YdbTable.AlterTableRequest request, GrpcRequestSettings settings) {
return transport
.unaryCall(TableServiceGrpc.getAlterTableMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.AlterTableResponse::getOperation));
}
@Override
public CompletableFuture copyTable(YdbTable.CopyTableRequest request, GrpcRequestSettings settings) {
return transport
.unaryCall(TableServiceGrpc.getCopyTableMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.CopyTableResponse::getOperation));
}
@Override
public CompletableFuture copyTables(YdbTable.CopyTablesRequest request, GrpcRequestSettings settings) {
return transport
.unaryCall(TableServiceGrpc.getCopyTablesMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.CopyTablesResponse::getOperation));
}
@Override
public CompletableFuture renameTables(YdbTable.RenameTablesRequest request, GrpcRequestSettings settings) {
return transport
.unaryCall(TableServiceGrpc.getRenameTablesMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.RenameTablesResponse::getOperation));
}
@Override
public CompletableFuture> describeTable(
YdbTable.DescribeTableRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getDescribeTableMethod(), settings, request)
.thenApply(OperationBinder.bindSync(
YdbTable.DescribeTableResponse::getOperation, YdbTable.DescribeTableResult.class
));
}
@Override
public CompletableFuture> explainDataQuery(
YdbTable.ExplainDataQueryRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getExplainDataQueryMethod(), settings, request)
.thenApply(OperationBinder.bindSync(
YdbTable.ExplainDataQueryResponse::getOperation, YdbTable.ExplainQueryResult.class
));
}
@Override
public CompletableFuture> prepareDataQuery(
YdbTable.PrepareDataQueryRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getPrepareDataQueryMethod(), settings, request)
.thenApply(OperationBinder.bindSync(
YdbTable.PrepareDataQueryResponse::getOperation, YdbTable.PrepareQueryResult.class
));
}
@Override
public CompletableFuture> executeDataQuery(
YdbTable.ExecuteDataQueryRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getExecuteDataQueryMethod(), settings, request)
.thenApply(OperationBinder.bindSync(
YdbTable.ExecuteDataQueryResponse::getOperation, YdbTable.ExecuteQueryResult.class
));
}
@Override
public CompletableFuture> readRows(
YdbTable.ReadRowsRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getReadRowsMethod(), settings, request)
.thenApply(READ_ROWS);
}
@Override
public CompletableFuture executeSchemeQuery(YdbTable.ExecuteSchemeQueryRequest request,
GrpcRequestSettings settings) {
return transport
.unaryCall(TableServiceGrpc.getExecuteSchemeQueryMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.ExecuteSchemeQueryResponse::getOperation));
}
@Override
public CompletableFuture> beginTransaction(
YdbTable.BeginTransactionRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getBeginTransactionMethod(), settings, request)
.thenApply(OperationBinder.bindSync(
YdbTable.BeginTransactionResponse::getOperation, YdbTable.BeginTransactionResult.class
));
}
@Override
public CompletableFuture commitTransaction(
YdbTable.CommitTransactionRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getCommitTransactionMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.CommitTransactionResponse::getOperation));
}
@Override
public CompletableFuture rollbackTransaction(
YdbTable.RollbackTransactionRequest request, GrpcRequestSettings settings
) {
return transport
.unaryCall(TableServiceGrpc.getRollbackTransactionMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.RollbackTransactionResponse::getOperation));
}
@Override
public GrpcReadStream streamReadTable(
YdbTable.ReadTableRequest request, GrpcRequestSettings settings
) {
return transport.readStreamCall(TableServiceGrpc.getStreamReadTableMethod(), settings, request);
}
@Override
public GrpcReadStream streamExecuteScanQuery(
YdbTable.ExecuteScanQueryRequest request, GrpcRequestSettings settings
) {
return transport.readStreamCall(TableServiceGrpc.getStreamExecuteScanQueryMethod(), settings, request);
}
@Override
public CompletableFuture bulkUpsert(YdbTable.BulkUpsertRequest request, GrpcRequestSettings settings) {
return transport
.unaryCall(TableServiceGrpc.getBulkUpsertMethod(), settings, request)
.thenApply(OperationBinder.bindSync(YdbTable.BulkUpsertResponse::getOperation));
}
@Override
public String getDatabase() {
return transport.getDatabase();
}
@Override
public ScheduledExecutorService getScheduler() {
return transport.getScheduler();
}
@Override
public void close() {
if (transportOwned) {
transport.close();
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy