Skip to content

Commit cb9067f

Browse files
committed
update tables
1 parent 19092ee commit cb9067f

27 files changed

+514
-600
lines changed

astra-db-java/src/main/java/com/datastax/astra/client/DataAPIClients.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,11 +177,8 @@ public static DataAPIClient astraTest(String token) {
177177
*/
178178
public static Database defaultLocalDatabase() {
179179
Database db = local().getDatabase(DEFAULT_ENDPOINT_LOCAL);
180-
DataAPIDatabaseAdmin dbAdmin = (DataAPIDatabaseAdmin) db.getDatabaseAdmin();
181-
dbAdmin.createKeyspace(DEFAULT_KEYSPACE);
180+
db.getDatabaseAdmin().createKeyspace(DEFAULT_KEYSPACE);
182181
return db;
183182
}
184183

185-
186-
187184
}

astra-db-java/src/main/java/com/datastax/astra/client/admin/AdminOptions.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,18 @@
2828
import lombok.Setter;
2929
import lombok.experimental.Accessors;
3030

31+
import static com.datastax.astra.client.databases.Database.DEFAULT_DATABASE_SERIALIZER;
32+
3133
@Setter
3234
@Accessors(fluent = true, chain = true)
3335
public class AdminOptions extends BaseOptions<AdminOptions> {
3436

37+
public AdminOptions() {
38+
this(null, null);
39+
}
40+
3541
public AdminOptions(String token, DataAPIClientOptions options) {
36-
Assert.notNull(options, "options");
37-
this.token = token;
38-
this.commandType = CommandType.DATABASE_ADMIN;
39-
this.dataAPIClientOptions = options.clone();
40-
this.serializer = new DatabaseSerializer();
42+
super(token, CommandType.DATABASE_ADMIN, DEFAULT_DATABASE_SERIALIZER, options);
4143
}
4244

4345
}

astra-db-java/src/main/java/com/datastax/astra/client/admin/AstraDBDatabaseAdmin.java

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@
2222

2323
import com.datastax.astra.client.DataAPIDestination;
2424
import com.datastax.astra.client.core.commands.BaseOptions;
25+
import com.datastax.astra.client.core.commands.CommandType;
2526
import com.datastax.astra.client.core.options.DataAPIClientOptions;
2627
import com.datastax.astra.client.core.results.FindEmbeddingProvidersResult;
2728
import com.datastax.astra.client.databases.DatabaseOptions;
2829
import com.datastax.astra.internal.api.AstraApiEndpoint;
30+
import com.datastax.astra.internal.command.AbstractCommandRunner;
31+
import com.datastax.astra.internal.utils.Assert;
2932
import com.dtsx.astra.sdk.db.AstraDBOpsClient;
3033
import com.dtsx.astra.sdk.db.domain.Database;
3134
import com.dtsx.astra.sdk.db.exception.DatabaseNotFoundException;
@@ -40,35 +43,41 @@
4043
* Implementation of the DatabaseAdmin interface for Astra. To create the namespace the devops APi is leverage. To use this class a higher token permission is required.
4144
*/
4245
@Slf4j
43-
public class AstraDBDatabaseAdmin implements DatabaseAdmin {
44-
45-
/** Token used for the credentials. */
46-
final String token;
46+
public class AstraDBDatabaseAdmin extends AbstractCommandRunner<AdminOptions> implements DatabaseAdmin {
4747

4848
/** Token used for the credentials. */
4949
final UUID databaseId;
5050

51-
/** Data Api Options. */
52-
final DataAPIClientOptions dataAPIClientOptions;
53-
5451
/** Client for Astra Devops Api. */
5552
final AstraDBOpsClient devopsDbClient;
5653

5754
/** Database if initialized from the DB. */
58-
protected com.datastax.astra.client.databases.Database db;
55+
final com.datastax.astra.client.databases.Database db;
5956

6057
/**
6158
* Initialize a database admin from token and database id.
6259
*
6360
* @param db
6461
* target database
6562
*/
66-
public AstraDBDatabaseAdmin(com.datastax.astra.client.databases.Database db) {
67-
this.databaseId = UUID.fromString(db.getApiEndpoint().substring(8, 44));
68-
this.dataAPIClientOptions = db.getDatabaseOptions().getDataAPIClientOptions();
69-
this.token = db.getDatabaseOptions().getToken();
70-
this.db = db;
71-
this.devopsDbClient = new AstraDBOpsClient(token, dataAPIClientOptions.getAstraEnvironment());
63+
public AstraDBDatabaseAdmin(com.datastax.astra.client.databases.Database db, AdminOptions adminOptions) {
64+
Assert.notNull(db, "database");
65+
this.db = db;
66+
this.databaseId = db.getId(); // UUID.fromString(db.getApiEndpoint().substring(8, 44));
67+
this.options = adminOptions;
68+
if (adminOptions == null) {
69+
this.options = new AdminOptions();
70+
}
71+
// Using database options if no extra parameters provided
72+
if (this.options.getToken() == null) {
73+
this.options.token(db.getOptions().getToken());
74+
}
75+
if (this.options.getDataAPIClientOptions() == null) {
76+
this.options.dataAPIClientOptions(db.getOptions().getDataAPIClientOptions());
77+
}
78+
this.devopsDbClient = new AstraDBOpsClient(
79+
options.getToken(),
80+
options.getDataAPIClientOptions().getAstraEnvironment());
7281
}
7382

7483
/**
@@ -78,16 +87,16 @@ public AstraDBDatabaseAdmin(com.datastax.astra.client.databases.Database db) {
7887
* token value
7988
* @param databaseId
8089
* database identifier
81-
* @param options
90+
* @param clientOptions
8291
* options used to initialize the http client
8392
*/
84-
public AstraDBDatabaseAdmin(String token, UUID databaseId, DataAPIClientOptions options) {
85-
this.token = token;
93+
public AstraDBDatabaseAdmin(String token, UUID databaseId, DataAPIClientOptions clientOptions) {
8694
this.databaseId = databaseId;
87-
this.dataAPIClientOptions = options;
88-
this.devopsDbClient = new AstraDBOpsClient(token, options.getAstraEnvironment());
95+
this.options = new AdminOptions(token, clientOptions);
96+
this.devopsDbClient = new AstraDBOpsClient(token, options.getDataAPIClientOptions().getAstraEnvironment());
97+
8998
this.db = new com.datastax.astra.client.databases.Database(getApiEndpoint(),
90-
new DatabaseOptions(token, options));
99+
new DatabaseOptions(token, options.getDataAPIClientOptions()));
91100
}
92101

93102
/**
@@ -134,9 +143,9 @@ private static AstraEnvironment getEnvironment(DataAPIDestination destination) {
134143
* @return
135144
* the endpoint as an url.
136145
*/
137-
private String getApiEndpoint() {
146+
public String getApiEndpoint() {
138147
return new AstraApiEndpoint(databaseId,
139-
getDatabaseInformations().getInfo().getRegion(), dataAPIClientOptions.getAstraEnvironment())
148+
getDatabaseInformations().getInfo().getRegion(), options.getDataAPIClientOptions().getAstraEnvironment())
140149
.getApiEndPoint();
141150
}
142151

@@ -162,7 +171,7 @@ public com.datastax.astra.client.databases.Database getDatabase(String keyspace)
162171
* client to interact with database DML.
163172
*/
164173
public com.datastax.astra.client.databases.Database getDatabase(String keyspace, String tokenUser) {
165-
return new com.datastax.astra.client.databases.Database(getApiEndpoint(), db.getDatabaseOptions());
174+
return new com.datastax.astra.client.databases.Database(getApiEndpoint(), db.getOptions());
166175
}
167176

168177
@Override
@@ -177,9 +186,7 @@ public Set<String> listKeyspaceNames() {
177186
@Override
178187
public FindEmbeddingProvidersResult findEmbeddingProviders() {
179188
log.debug("findEmbeddingProviders");
180-
DataAPIDatabaseAdmin admin =
181-
new DataAPIDatabaseAdmin(getApiEndpoint() + "/" + db.getDatabaseOptions()
182-
.getDataAPIClientOptions().getApiVersion(), db.getDatabaseOptions());
189+
DataAPIDatabaseAdmin admin = new DataAPIDatabaseAdmin(db, this.options);
183190
return new FindEmbeddingProvidersResult(admin.findEmbeddingProviders().getEmbeddingProviders());
184191
}
185192

astra-db-java/src/main/java/com/datastax/astra/client/admin/DataAPIDatabaseAdmin.java

Lines changed: 14 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,15 @@
2020
* #L%
2121
*/
2222

23-
import com.datastax.astra.client.core.commands.Command;
2423
import com.datastax.astra.client.core.commands.BaseOptions;
24+
import com.datastax.astra.client.core.commands.Command;
2525
import com.datastax.astra.client.core.commands.CommandType;
2626
import com.datastax.astra.client.core.results.FindEmbeddingProvidersResult;
2727
import com.datastax.astra.client.core.vectorize.EmbeddingProvider;
2828
import com.datastax.astra.client.databases.Database;
29-
import com.datastax.astra.client.databases.DatabaseOptions;
3029
import com.datastax.astra.client.keyspaces.KeyspaceOptions;
3130
import com.datastax.astra.internal.api.DataAPIResponse;
3231
import com.datastax.astra.internal.command.AbstractCommandRunner;
33-
import com.datastax.astra.internal.command.CommandObserver;
3432
import com.datastax.astra.internal.serdes.DataAPISerializer;
3533
import com.datastax.astra.internal.serdes.collections.DocumentSerializer;
3634
import com.datastax.astra.internal.utils.Assert;
@@ -49,7 +47,7 @@
4947
*/
5048
@Slf4j
5149
@Getter
52-
public class DataAPIDatabaseAdmin extends AbstractCommandRunner implements DatabaseAdmin {
50+
public class DataAPIDatabaseAdmin extends AbstractCommandRunner<AdminOptions> implements DatabaseAdmin {
5351

5452
/** parameters names. */
5553
private static final String ARG_KEYSPACE = "keyspaceName";
@@ -63,27 +61,18 @@ public class DataAPIDatabaseAdmin extends AbstractCommandRunner implements Datab
6361
/**
6462
* Initialize a database admin from token and database id.
6563
*
66-
* @param apiEndpoint
67-
* api endpoint.
64+
* @param db
65+
* current database used to initialized the admin
6866
* @param options
6967
* list of options for the admin
7068
*/
71-
public DataAPIDatabaseAdmin(String apiEndpoint, DatabaseOptions options) {
72-
this(new Database(apiEndpoint, options));
73-
}
74-
75-
/**
76-
* Initialize a database admin from token and database id.
77-
*
78-
* @param db
79-
* current database instance
80-
*/
81-
public DataAPIDatabaseAdmin(Database db) {
82-
this.db = db;
83-
this.baseOptions = new BaseOptions<>(
84-
db.getDatabaseOptions().getToken(),
85-
CommandType.KEYSPACE_ADMIN,
86-
db.getDatabaseOptions().getDataAPIClientOptions());
69+
public DataAPIDatabaseAdmin(Database db, AdminOptions options) {
70+
super(db.getRootEndpoint(), options);
71+
this.options.commandType(CommandType.KEYSPACE_ADMIN);
72+
String apiVersion = options.getDataAPIClientOptions().getApiVersion();
73+
if (!db.getRootEndpoint().endsWith(apiVersion)) {
74+
this.apiEndpoint += "/" + apiVersion;
75+
}
8776
}
8877

8978
// ------------------------------------------
@@ -123,12 +112,9 @@ public Database getDatabase(String keyspace) {
123112
/** {@inheritDoc} */
124113
@Override
125114
public Database getDatabase(String keyspace, String userToken) {
126-
Assert.hasLength(keyspace, ARG_KEYSPACE);
127-
Assert.hasLength(userToken, "userToken");
128-
return new Database(db.getApiEndpoint(), db
129-
.getDatabaseOptions()
130-
.keyspace(keyspace)
131-
.token(userToken));
115+
return new Database(db.getRootEndpoint(), db.getOptions().clone()
116+
.token(userToken)
117+
.keyspace(keyspace));
132118
}
133119

134120
/** {@inheritDoc} */
@@ -170,28 +156,4 @@ public void dropKeyspace(String keyspace, BaseOptions<?> options) {
170156
log.info("Keyspace '" + green("{}") + "' has been deleted", keyspace);
171157
}
172158

173-
/** {@inheritDoc} */
174-
@Override
175-
protected String getApiEndpoint() {
176-
return db.getApiEndpoint() + "/v1";
177-
}
178-
179-
/** {@inheritDoc} */
180-
@Override
181-
protected DataAPISerializer getSerializer() {
182-
return SERIALIZER;
183-
}
184-
185-
/**
186-
* Register a listener to execute commands on the collection. Please now use {@link BaseOptions}.
187-
*
188-
* @param logger
189-
* name for the logger
190-
* @param commandObserver
191-
* class for the logger
192-
*/
193-
public void registerListener(String logger, CommandObserver commandObserver) {
194-
this.baseOptions.registerObserver(logger, commandObserver);
195-
}
196-
197159
}

0 commit comments

Comments
 (0)