Skip to content

Commit d15c489

Browse files
authored
feat: add batch write api for adding points (#25)
1 parent 24ac4e2 commit d15c489

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

opengemini-client-jdk/src/main/java/io/opengemini/client/jdk/OpenGeminiJdkClient.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.net.http.HttpResponse;
1818
import java.nio.charset.StandardCharsets;
1919
import java.util.List;
20+
import java.util.StringJoiner;
2021
import java.util.concurrent.CompletableFuture;
2122

2223
public class OpenGeminiJdkClient extends BaseClient {
@@ -78,6 +79,14 @@ public CompletableFuture<Void> write(String database, Point point) {
7879
return httpExcute(writeUrl, Void.class, UrlConst.POST, HttpRequest.BodyPublishers.ofString(body));
7980
}
8081

82+
public CompletableFuture<Void> writeBatch(String database, List<Point> points) {
83+
String writeUrl = getWriteUrl(database);
84+
StringJoiner sj = new StringJoiner("\n");
85+
points.forEach(point -> sj.add(point.toString()));
86+
87+
return httpExcute(writeUrl, Void.class, UrlConst.POST, HttpRequest.BodyPublishers.ofString(sj.toString()));
88+
}
89+
8190
private <T> CompletableFuture<T> httpExcute(String url, Class<T> type) {
8291
return httpExcute(url, type, UrlConst.GET);
8392
}

opengemini-client-jdk/src/test/java/io/opengemini/client/jdk/OpenGeminiJdkClientTest.java

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import org.junit.jupiter.api.Test;
1212

1313
import java.time.Duration;
14+
import java.util.Arrays;
1415
import java.util.Collections;
1516
import java.util.HashMap;
1617
import java.util.List;
@@ -106,7 +107,7 @@ private Point generalTestPoint(String measurementName, int valueIndex, int field
106107
@SneakyThrows
107108
@Test
108109
void testWritePoint() {
109-
String databaseName = "write_test_database_0001";
110+
String databaseName = "write_database_0001";
110111
CompletableFuture<Void> createdb = openGeminiJdkClient.createDatabase(databaseName);
111112
createdb.get();
112113

@@ -132,7 +133,6 @@ void testWritePoint() {
132133
Assertions.assertTrue(x.getColumns().contains("tag0"));
133134
}
134135

135-
136136
@SneakyThrows
137137
@Test
138138
void testWritePointMoreFields() {
@@ -163,4 +163,35 @@ void testWritePointMoreFields() {
163163
Assertions.assertTrue(x.getColumns().contains("field29"));
164164
Assertions.assertTrue(x.getColumns().contains("tag29"));
165165
}
166+
167+
@SneakyThrows
168+
@Test
169+
void testWriteBatchPoints() {
170+
String databaseName = "writePointBatch_database_0001";
171+
CompletableFuture<Void> createdb = openGeminiJdkClient.createDatabase(databaseName);
172+
createdb.get();
173+
174+
String measurementName = "writePointBatch_measurement_0001";
175+
Point testPoint1 = generalTestPoint(measurementName, 1, 1);
176+
Point testPoint2 = generalTestPoint(measurementName, 2, 1);
177+
Point testPoint3 = generalTestPoint(measurementName, 3, 1);
178+
179+
CompletableFuture<Void> writeRsp = openGeminiJdkClient.writeBatch(
180+
databaseName, Arrays.asList(testPoint1, testPoint2, testPoint3));
181+
writeRsp.get();
182+
Thread.sleep(3000);
183+
184+
Query selectQuery = new Query("select * from " + measurementName, databaseName, "");
185+
CompletableFuture<QueryResult> rst = openGeminiJdkClient.query(selectQuery);
186+
QueryResult queryResult = rst.get();
187+
188+
CompletableFuture<Void> dropdb = openGeminiJdkClient.dropDatabase(databaseName);
189+
dropdb.get();
190+
191+
Series x = queryResult.getResults().get(0).getSeries().get(0);
192+
System.out.println(x);
193+
Assertions.assertEquals(x.getValues().size(), 3);
194+
Assertions.assertTrue(x.getColumns().contains("field0"));
195+
Assertions.assertTrue(x.getColumns().contains("tag0"));
196+
}
166197
}

0 commit comments

Comments
 (0)