diff --git a/opengemini-client-api/src/main/java/io/opengemini/client/api/OpenGeminiAsyncClient.java b/opengemini-client-api/src/main/java/io/opengemini/client/api/OpenGeminiAsyncClient.java index cd87ecff..b1723698 100644 --- a/opengemini-client-api/src/main/java/io/opengemini/client/api/OpenGeminiAsyncClient.java +++ b/opengemini-client-api/src/main/java/io/opengemini/client/api/OpenGeminiAsyncClient.java @@ -108,6 +108,14 @@ public interface OpenGeminiAsyncClient extends AutoCloseable { */ CompletableFuture write(String database, String retentionPolicy, List points); + /** + * Writing via GRPC points to the database. + * + * @param database the name of the database. + * @param points the points to write. + */ + CompletableFuture writeByGrpc(String database, List points); + /** * Ping the OpenGemini server */ diff --git a/opengemini-client-common/src/main/java/io/opengemini/client/common/BaseAsyncClient.java b/opengemini-client-common/src/main/java/io/opengemini/client/common/BaseAsyncClient.java index 60cf32a4..0fbcf5b5 100644 --- a/opengemini-client-common/src/main/java/io/opengemini/client/common/BaseAsyncClient.java +++ b/opengemini-client-common/src/main/java/io/opengemini/client/common/BaseAsyncClient.java @@ -154,6 +154,15 @@ public CompletableFuture write(String database, String retentionPolicy, Li return executeWrite(database, retentionPolicy, body); } + + @Override + public CompletableFuture writeByGrpc(String database, List points) { + if (points.isEmpty()) { + return CompletableFuture.completedFuture(null); + } + return executeWriteByGrpc(database, points); + } + /** * {@inheritDoc} */ @@ -187,6 +196,15 @@ protected abstract CompletableFuture executeWrite(String database, String retentionPolicy, String lineProtocol); + /** + * The implementation class needs to implement this method to execute a write operation via an RPC call. + * + * @param database the name of the database. + * @param points the points to write. + */ + protected abstract CompletableFuture executeWriteByGrpc(String database, + List points); + /** * The implementation class needs to implement this method to execute a ping call. */ diff --git a/opengemini-client/src/main/java/io/opengemini/client/impl/OpenGeminiClient.java b/opengemini-client/src/main/java/io/opengemini/client/impl/OpenGeminiClient.java index 1957257c..d25a5473 100644 --- a/opengemini-client/src/main/java/io/opengemini/client/impl/OpenGeminiClient.java +++ b/opengemini-client/src/main/java/io/opengemini/client/impl/OpenGeminiClient.java @@ -25,6 +25,7 @@ import io.opengemini.client.api.AuthType; import io.opengemini.client.api.Configuration; import io.opengemini.client.api.OpenGeminiException; +import io.opengemini.client.api.Point; import io.opengemini.client.api.Pong; import io.opengemini.client.api.Query; import io.opengemini.client.api.QueryResult; @@ -35,6 +36,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; +import java.util.List; import java.util.Optional; import java.util.concurrent.CompletableFuture; @@ -130,6 +132,17 @@ public CompletableFuture post(String url, String body) { headers); } + /** + * Execute a write call with java GRPC Client. + * + * @param database the name of the database. + * @param points the points to write. + */ + @Override + protected CompletableFuture executeWriteByGrpc(String database, List points) { + return null; + } + @Override public void close() throws IOException { this.client.close();