Skip to content

Commit cc0865c

Browse files
committed
Adapt to nea client
1 parent 3555540 commit cc0865c

File tree

234 files changed

+1185
-13157
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

234 files changed

+1185
-13157
lines changed

astra-db-client/pom.xml

Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<modelVersion>4.0.0</modelVersion>
44
<artifactId>astra-db-client</artifactId>
5-
<name>Java Client for Astra DB</name>
5+
<name>+ astra-db-client</name>
66

77
<parent>
88
<groupId>com.datastax.astra</groupId>
@@ -11,53 +11,34 @@
1111
</parent>
1212

1313
<properties>
14-
<openai-java.version>0.18.2</openai-java.version>
15-
<langchain4j.version>0.27.0</langchain4j.version>
16-
<okhttp.version>4.12.0</okhttp.version>
17-
<okio-jvm.version>3.7.0</okio-jvm.version>
14+
<java.version>11</java.version>
1815
</properties>
1916

2017
<dependencies>
2118

19+
<!-- Core -->
2220
<dependency>
2321
<groupId>org.slf4j</groupId>
2422
<artifactId>slf4j-api</artifactId>
2523
</dependency>
26-
27-
<dependency>
28-
<groupId>com.squareup.okhttp3</groupId>
29-
<artifactId>okhttp</artifactId>
30-
<version>${okhttp.version}</version>
31-
</dependency>
32-
33-
<dependency>
34-
<groupId>com.squareup.okio</groupId>
35-
<artifactId>okio-jvm</artifactId>
36-
<version>${okio-jvm.version}</version>
37-
</dependency>
38-
3924
<dependency>
4025
<groupId>org.projectlombok</groupId>
4126
<artifactId>lombok</artifactId>
4227
</dependency>
4328

44-
<!-- DATA API -->
29+
<!-- DATA API (core) -->
4530
<dependency>
4631
<groupId>com.datastax.stargate</groupId>
4732
<artifactId>stargate-sdk-data</artifactId>
4833
</dependency>
49-
<dependency>
50-
<groupId>com.datastax.stargate</groupId>
51-
<artifactId>stargate-dataapi-client</artifactId>
52-
</dependency>
5334

5435
<!-- CQL API (CassioIO) -->
5536
<dependency>
5637
<groupId>com.datastax.oss</groupId>
5738
<artifactId>java-driver-core</artifactId>
5839
</dependency>
5940

60-
<!-- DEVOPS AI -->
41+
<!-- DEVOPS AI (admin) -->
6142
<dependency>
6243
<groupId>com.datastax.astra</groupId>
6344
<artifactId>astra-sdk-devops</artifactId>
@@ -75,40 +56,37 @@
7556
<artifactId>logback-classic</artifactId>
7657
<scope>test</scope>
7758
</dependency>
78-
79-
<dependency>
80-
<groupId>dev.langchain4j</groupId>
81-
<artifactId>langchain4j</artifactId>
82-
<version>${langchain4j.version}</version>
83-
<scope>test</scope>
84-
</dependency>
8559
<dependency>
86-
<groupId>dev.langchain4j</groupId>
87-
<artifactId>langchain4j-open-ai</artifactId>
88-
<version>${langchain4j.version}</version>
60+
<groupId>org.assertj</groupId>
61+
<artifactId>assertj-core</artifactId>
8962
<scope>test</scope>
9063
</dependency>
9164
<dependency>
92-
<groupId>dev.langchain4j</groupId>
93-
<artifactId>langchain4j-document-parser-apache-pdfbox</artifactId>
94-
<version>${langchain4j.version}</version>
65+
<groupId>com.datastax.stargate</groupId>
66+
<artifactId>stargate-sdk-data</artifactId>
67+
<version>${stargate-sdk.version}</version>
68+
<classifier>tests</classifier>
69+
<type>test-jar</type>
9570
<scope>test</scope>
9671
</dependency>
72+
9773
</dependencies>
9874

75+
<!-- Client is JDK11+ -->
9976
<build>
10077
<plugins>
10178
<plugin>
10279
<groupId>org.apache.maven.plugins</groupId>
10380
<artifactId>maven-compiler-plugin</artifactId>
10481
<configuration>
105-
<source>11</source>
106-
<target>11</target>
82+
<source>${java.version}</source>
83+
<target>${java.version}</target>
10784
</configuration>
10885
</plugin>
10986
</plugins>
11087
</build>
11188

89+
<!-- Release the client with Apache License -->
11290
<licenses>
11391
<license>
11492
<name>Apache-2.0</name>

astra-db-client/src/main/java/com/datastax/astradb/client/AstraDBAdmin.java renamed to astra-db-client/src/main/java/com/datastax/astra/db/AstraDBClient.java

Lines changed: 63 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,24 @@
1-
package com.datastax.astradb.client;
2-
3-
import com.dtsx.astra.sdk.db.AstraDBOpsClient;
4-
import com.dtsx.astra.sdk.db.DbOpsClient;
5-
import com.dtsx.astra.sdk.db.domain.CloudProviderType;
6-
import com.dtsx.astra.sdk.db.domain.Database;
7-
import com.dtsx.astra.sdk.db.domain.DatabaseCreationRequest;
8-
import com.dtsx.astra.sdk.db.domain.DatabaseStatusType;
9-
import com.dtsx.astra.sdk.db.exception.DatabaseNotFoundException;
10-
import com.dtsx.astra.sdk.utils.ApiLocator;
11-
import com.dtsx.astra.sdk.utils.Assert;
12-
import com.dtsx.astra.sdk.utils.AstraEnvironment;
13-
import com.dtsx.astra.sdk.utils.AstraRc;
14-
import io.stargate.sdk.data.DataApiClient;
15-
import io.stargate.sdk.http.RetryHttpClient;
1+
package com.datastax.astra.db;
2+
3+
4+
import com.datastax.astra.devops.db.AstraDBDevopsClient;
5+
import com.datastax.astra.devops.db.DbOpsClient;
6+
import com.datastax.astra.devops.db.domain.CloudProviderType;
7+
import com.datastax.astra.devops.db.domain.Database;
8+
import com.datastax.astra.devops.db.domain.DatabaseCreationRequest;
9+
import com.datastax.astra.devops.db.domain.DatabaseStatusType;
10+
import com.datastax.astra.devops.db.exception.DatabaseNotFoundException;
11+
import com.datastax.astra.devops.utils.ApiLocator;
12+
import com.datastax.astra.devops.utils.Assert;
13+
import com.datastax.astra.devops.utils.AstraEnvironment;
14+
import com.datastax.astra.devops.utils.AstraRc;
15+
import io.stargate.sdk.data.client.DataApiClient;
1616
import lombok.Getter;
1717
import lombok.NonNull;
1818
import lombok.extern.slf4j.Slf4j;
1919

20-
import java.io.Closeable;
21-
import java.io.IOException;
2220
import java.net.URI;
2321
import java.net.http.HttpClient;
24-
import java.net.http.HttpClient.Version;
2522
import java.net.http.HttpRequest;
2623
import java.net.http.HttpResponse;
2724
import java.net.http.HttpResponse.BodyHandlers;
@@ -36,42 +33,43 @@
3633
import static io.stargate.sdk.utils.Utils.readEnvVariable;
3734

3835
/**
39-
* Client for AstraDB at organization level (crud for databases).
36+
* Main Client for AstraDB, it implements administration and Data Api Operations.
37+
*
38+
* @see AstraDBDevopsClient Client specialized in the Devops API operations
39+
* @see DataApiClient Client specialized for Data API operation
4040
*/
4141
@Slf4j
42-
public class AstraDBAdmin implements Closeable {
42+
public class AstraDBClient {
4343

44-
public static final String USER_AGENT = "astra-db-java";
45-
46-
/** Default timeout for initiating connection. */
47-
public static final int CONNECT_TIMEOUT_SECONDS = 20;
48-
49-
/** Default cloud provider if not provided by user. (free-tier) */
44+
/** Default cloud provider. (free-tier) */
5045
public static final CloudProviderType FREE_TIER_CLOUD = CloudProviderType.GCP;
5146

52-
/** Default region if not provided by user. (free-tier) */
47+
/** Default region. (free-tier) */
5348
public static final String FREE_TIER_CLOUD_REGION = "us-east1";
5449

5550
/** Header name used to hold the Astra Token. */
5651
public static final String TOKEN_HEADER_PARAM = "X-Token";
5752

58-
/** Default keyspace name if not provided by user. */
53+
/** Default keyspace (same created by the ui). */
5954
public static final String DEFAULT_KEYSPACE = "default_keyspace";
6055

61-
/** Client for the Astra Devops Api. (crud on databases) */
62-
final AstraDBOpsClient devopsDbClient;
56+
/** Client for Astra Devops Api. */
57+
final AstraDBDevopsClient devopsDbClient;
58+
59+
/** Options to personalized http client other client options. */
60+
final AstraDBOptions astraDbOptions;
6361

64-
/** Target Astra Environment, default is PROD. */
62+
/** Astra Environment. */
6563
final AstraEnvironment env;
6664

67-
/** Astra Token used as credentials. */
65+
/** Astra Token (credentials). */
6866
@Getter
6967
final String token;
7068

71-
/** JDK11 HttpClient to interact with apis. */
69+
/** Side Http Client (use only to resume a db). */
7270
final HttpClient httpClient;
7371

74-
/** Token value read for environment variable. */
72+
/** Token read for environment variable ASTRA_DB_APPLICATION_TOKEN (if any). */
7573
static String astraConfigToken;
7674

7775
/*
@@ -86,21 +84,21 @@ public class AstraDBAdmin implements Closeable {
8684
}
8785

8886
/**
89-
* Default initialization, the token is retrieved from environment variable <code>ASTRA_DB_APPLICATION_TOKEN</code> or from
87+
* Default constructor. The token is read from environment variable <code>ASTRA_DB_APPLICATION_TOKEN</code> or
9088
* file <code>~/.astrarc</code>, section <code>default</code>, key <code>ASTRA_DB_APPLICATION_TOKEN</code>.
9189
*/
92-
public AstraDBAdmin() {
90+
public AstraDBClient() {
9391
this(astraConfigToken);
9492
}
9593

9694
/**
97-
* Initialization with an authentification token, defaulting to production environment.
95+
* Constructor with an authentification token, defaulting to production environment, and default http options.
9896
*
9997
* @param token
10098
* authentication token
10199
*/
102-
public AstraDBAdmin(String token) {
103-
this(token, AstraEnvironment.PROD);
100+
public AstraDBClient(String token) {
101+
this(token, AstraEnvironment.PROD, new AstraDBOptions());
104102
}
105103

106104
/**
@@ -110,46 +108,25 @@ public AstraDBAdmin(String token) {
110108
* authentication token
111109
* @param env
112110
* target Astra environment
111+
* @param astraDbOptions
112+
* options for AstraDb.
113113
*/
114-
public AstraDBAdmin(String token, AstraEnvironment env) {
114+
public AstraDBClient(String token, AstraEnvironment env, AstraDBOptions astraDbOptions) {
115115
this.env = env;
116116
this.token = token;
117-
this.devopsDbClient = new AstraDBOpsClient(token, env);
118-
this.httpClient = HttpClient.newBuilder()
119-
.version(Version.HTTP_2)
120-
.connectTimeout(Duration.ofSeconds(CONNECT_TIMEOUT_SECONDS))
121-
.build();
122-
String version = AstraDBAdmin.class.getPackage().getImplementationVersion();
123-
AstraDBAdmin.setCallerName(AstraDBAdmin.USER_AGENT, (null != version) ? version : "dev");
124-
}
125-
126-
// --------------------------
127-
// --- User Agent ----
128-
// --------------------------
129-
130-
/**
131-
* Allow user to set the client name
132-
*
133-
* @param callerName
134-
* client name
135-
* @param callerVersion
136-
* client version
137-
*/
138-
public static void setCallerName(String callerName, String callerVersion) {
139-
RetryHttpClient.getInstance().pushUserAgent(callerName, callerVersion);
140-
}
141-
142-
// --------------------
143-
// -- Watch ---
144-
// --------------------
145-
146-
public void watch() {
147-
throw new UnsupportedOperationException("As we connect to a HTTP apis without hooks, no watch is possible.");
117+
this.devopsDbClient = new AstraDBDevopsClient(token, env);
118+
this.astraDbOptions = astraDbOptions;
119+
120+
// Local Agent for Resume
121+
HttpClient.Builder httpClientBuilder = HttpClient.newBuilder();
122+
httpClientBuilder.version(astraDbOptions.getHttpClientOptions().getHttpVersion());
123+
httpClientBuilder.connectTimeout(Duration.ofSeconds(astraDbOptions.getHttpClientOptions().getConnectionRequestTimeoutInSeconds()));
124+
this.httpClient = httpClientBuilder.build();
148125
}
149126

150-
// --------------------
151-
// -- Keyspace ---
152-
// --------------------
127+
// -------------------------------
128+
// -- Working with Namespaces ---
129+
// -------------------------------
153130

154131
/**
155132
* Create a keyspace.
@@ -364,7 +341,7 @@ public Optional<Database> getDatabaseInformations(@NonNull UUID id) {
364341
* @return
365342
* database client
366343
*/
367-
public AstraDB getDatabase(@NonNull String databaseName) {
344+
public AstraDBDatabase getDatabase(@NonNull String databaseName) {
368345
List<Database> dbs = getDatabaseInformations(databaseName).collect(Collectors.toList());
369346
if (dbs.isEmpty()) {
370347
throw new DatabaseNotFoundException(databaseName);
@@ -387,8 +364,14 @@ public AstraDB getDatabase(@NonNull String databaseName) {
387364
* @return
388365
* database client
389366
*/
390-
public AstraDB getDatabase(UUID databaseId) {
391-
return new AstraDB(token, databaseId, null, env, AstraDBAdmin.DEFAULT_KEYSPACE);
367+
public AstraDBDatabase getDatabase(UUID databaseId) {
368+
String databaseRegion = devopsDbClient
369+
.findById(databaseId.toString())
370+
.map(db -> db.getInfo().getRegion())
371+
.orElseThrow(() -> new DatabaseNotFoundException(databaseId.toString()));
372+
return new AstraDBDatabase(
373+
new AstraDBEndpoint(databaseId, databaseRegion, env),
374+
token, AstraDBClient.DEFAULT_KEYSPACE, astraDbOptions);
392375
}
393376

394377
/**
@@ -464,7 +447,7 @@ private void resumeDb(Database db) {
464447
* database client
465448
*/
466449
public DataApiClient getDataApiClient(@NonNull String databaseName) {
467-
return getDatabase(databaseName).getApiClient();
450+
return getDatabase(databaseName).getDataApiClient();
468451
}
469452

470453
/**
@@ -476,7 +459,7 @@ public DataApiClient getDataApiClient(@NonNull String databaseName) {
476459
* database client
477460
*/
478461
public DataApiClient getDataApiClient(@NonNull UUID databaseId) {
479-
return getDatabase(databaseId).getApiClient();
462+
return getDatabase(databaseId).getDataApiClient();
480463
}
481464

482465
/**
@@ -485,15 +468,8 @@ public DataApiClient getDataApiClient(@NonNull UUID databaseId) {
485468
* @return
486469
* devops client.
487470
*/
488-
public AstraDBOpsClient getDevopsApiClient() {
471+
public AstraDBDevopsClient getDevopsApiClient() {
489472
return this.devopsDbClient;
490473
}
491474

492-
493-
/**
494-
* Close the client.
495-
*/
496-
@Override
497-
public void close() throws IOException {
498-
}
499475
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.datastax.astra.db;
2+
3+
import io.stargate.sdk.data.internal.DataApiCollectionImpl;
4+
5+
/**
6+
* Implementation of a Collection within Astra.
7+
*
8+
* @param <DOC>
9+
* working document class
10+
*/
11+
public class AstraDBCollection<DOC> extends DataApiCollectionImpl<DOC> {
12+
13+
/**
14+
* Constructor for a collection.
15+
*
16+
* @param db
17+
* database in use
18+
* @param collectionName
19+
* collection identifier
20+
* @param clazz
21+
* document class to use
22+
*/
23+
protected AstraDBCollection(AstraDBDatabase db, String collectionName, Class<DOC> clazz) {
24+
super(db, collectionName, clazz);
25+
}
26+
27+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy