From 242fa57aad963f3695cf8e92e023128eda99c8d3 Mon Sep 17 00:00:00 2001
From: Madhavan Sridharan The {@code DataAPIClient} is designed to simplify database interactions by providing:
+ * The {@code DataAPIClient} is designed to simplify database interactions by providing:
*
- * This design philosophy facilitates quick onboarding and ease of use while enabling advanced customizations when needed.
- *
Core Features: + *
This design philosophy facilitates quick onboarding and ease of use while enabling advanced customizations when needed.
+ * + *Example usage:
- *
- * {@code
+ * Example Usage:
+ * {@code
* DataAPIClientOptions options = new DataAPIClientOptions()
* .destination(DataAPIDestination.DSE) // Set the destination
* .httpClientOptions(new HttpClientOptions()
@@ -68,8 +67,7 @@
* .enableFeatureFlagTables() // Enable feature flag for tables
* .addDatabaseAdditionalHeader(HEADER_FEATURE_FLAG_TABLES, "true"); // Add custom headers
* DataAPIClient client = new DataAPIClient("token", options);
- * }
- *
+ * }
*/
public class DataAPIClient {
@@ -214,14 +212,13 @@ public DataAPIClient(DataAPIClientOptions options) {
* performing administrative tasks such as database creation, user management, and configuration adjustments.
* It provides a programmatic interface for managing Astra resources securely and efficiently.
*
- * This method has three variants, allowing for flexibility in token usage: + *
This method has three variants, allowing for flexibility in token usage:
*To perform administrative tasks, the token must belong to a user with sufficient privileges (e.g., Database * Administrator or Organization Administrator). If these conditions are not met, a {@code SecurityException} is thrown.
@@ -288,7 +285,7 @@ public AstraDBAdmin getAdmin(String superToken) { * with the specified Data API endpoint, supporting a wide range of data manipulation operations such as querying, * inserting, updating, and deleting data. * - *The {@code getDatabase} method has multiple variants to cater to different usage scenarios: + *
The {@code getDatabase} method has multiple variants to cater to different usage scenarios:
*By providing flexibility in how connections are established and configured, these methods simplify the process * of interacting with Cassandra databases through the Data API. They are suitable for various deployment scenarios, diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/admin/AdminOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/admin/AdminOptions.java index 69a50f99..ae314038 100644 --- a/astra-db-java/src/main/java/com/datastax/astra/client/admin/AdminOptions.java +++ b/astra-db-java/src/main/java/com/datastax/astra/client/admin/AdminOptions.java @@ -28,17 +28,52 @@ import lombok.Setter; import lombok.experimental.Accessors; +/** + * Represents the configuration options for administrative operations in the database API. + * This class extends {@link BaseOptions} to inherit common configuration options + * and provides additional functionality specific to administrative commands. + * + *
Example usage:
+ *
+ * {@code
+ * AdminOptions options = new AdminOptions()
+ * .token("your-token-here")
+ * .options(new DataAPIClientOptions())
+ * .serializer(new CustomSerializer());
+ * }
+ *
+ *
+ * Key Features:
+ *Key Features:
*Key behaviors: + *
Key behaviors:
*Example usage:
*
* {@code
* Database database = new DataAPIClient("token").getDatabase("endpoint);
@@ -413,7 +408,7 @@ public DatabaseAdmin getDatabaseAdmin(String superUserToken) {
*
*
* @return A {@link List} containing the names of all collections in this database.
- * @throws com.datastax.astra.client.exception.DataAPIException if an error occurs while retrieving the collection names.
+ * @throws com.datastax.astra.client.exceptions.DataAPIException if an error occurs while retrieving the collection names.
*/
public ListParameters:
*Example usage:
*
* {@code
* // Create list collection options
@@ -468,7 +463,7 @@ public List listCollectionNames(ListCollectionOptions listCollectionOpti
* convenient entry point for obtaining all collection definitions without any filtering or additional options.
*
*
- * Example usage:
+ * Example usage:
*
* {@code
* Database database = new DataAPIClient("token").getDatabase("endpoint);
@@ -492,13 +487,13 @@ public List listCollections() {
* for each collection that matches the provided options.
*
*
- * Parameters:
+ * Parameters:
*
* - {@code listCollectionOptions} - The {@link ListCollectionOptions} to customize the listing behavior,
* such as filtering criteria or additional query parameters. If {@code null}, all collections are returned.
*
*
- * Example usage:
+ * Example usage:
*
* {@code
* // Create options for listing collections with a specific prefix
@@ -530,7 +525,7 @@ public List listCollections(ListCollectionOptions listColl
* as querying, inserting, or updating data.
*
*
- * Example usage:
+ * Example usage:
*
* {@code
* Database database = new DataAPIClient("token").getDatabase("endpoint");
@@ -564,12 +559,12 @@ public boolean collectionExists(String collectionName) {
* such as querying, inserting, or updating documents.
*
*
- * Parameters:
+ * Parameters:
*
* - {@code collectionName} - The name of the collection to retrieve. This must not be null or empty.
*
*
- * Example usage:
+ * Example usage:
*
* {@code
* Database database = new DataAPIClient("token").getDatabase("endpoint");
@@ -594,14 +589,14 @@ public Collection getCollection(String collectionName) {
* allows for further operations on the collection, such as querying, inserting, or updating documents.
*
*
- * Parameters:
+ * Parameters:
*
* - {@code collectionName} - The name of the collection to retrieve. This must not be null or empty.
* - {@code collectionOptions} - The {@link CollectionOptions} to customize the collection behavior,
* such as setting a custom serializer or specifying additional options. If {@code null}, default options are used.
*
*
- * Example usage:
+ * Example usage:
*
* {@code
* // Create custom collection options
@@ -631,14 +626,14 @@ public Collection getCollection(String collectionName, Class documentC
* the caller to specify {@link CollectionOptions} to customize the behavior of the collection.
*
*
- * Parameters:
+ * Parameters:
*
* - {@code collectionName} - The name of the collection to retrieve. This must not be null or empty.
* - {@code collectionOptions} - A {@link CollectionOptions} object that specifies custom
* behaviors for the collection. If {@code null}, default options will be used.
*
*
- * Example usage:
+ * Example usage:
*
* {@code
*
@@ -668,7 +663,7 @@ public Collection getCollection(String collectionName, CollectionOpti
* clients to specify custom options and the type of documents in the collection.
*
*
- * Parameters:
+ * Parameters:
*
* - {@code collectionName} - The name of the collection to retrieve. This must not be null or empty.
* - {@code options} - The {@link CollectionOptions} to customize the collection behavior. Must not be null.
@@ -676,7 +671,7 @@ public Collection getCollection(String collectionName, CollectionOpti
* This enables type safety when working with the collection's documents. Must not be null.
*
*
- * Example usage:
+ * Example usage:
*
* {@code
* CollectionOptions options = new CollectionOptions()
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseOptions.java
index d89707fe..07800e3c 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseOptions.java
@@ -25,7 +25,6 @@
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.datastax.astra.internal.serdes.DatabaseSerializer;
-import com.datastax.astra.internal.utils.Assert;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseInfo.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/DatabaseInfo.java
similarity index 97%
rename from astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseInfo.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/DatabaseInfo.java
index 60b813b5..e3a160df 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseInfo.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/DatabaseInfo.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.databases;
+package com.datastax.astra.client.databases.definition;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/ClientErrorCodes.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/ClientErrorCodes.java
similarity index 97%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/ClientErrorCodes.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/ClientErrorCodes.java
index c9e9561c..ad37110a 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/ClientErrorCodes.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/ClientErrorCodes.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/CursorException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/CursorException.java
similarity index 95%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/CursorException.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/CursorException.java
index 46414c3a..fb5e8669 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/CursorException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/CursorException.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIErrorDescriptor.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIErrorDescriptor.java
similarity index 98%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIErrorDescriptor.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIErrorDescriptor.java
index d22c8b59..c6847a09 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIErrorDescriptor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIErrorDescriptor.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIException.java
similarity index 98%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIException.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIException.java
index 584cb47b..956100d5 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIException.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIHttpException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIHttpException.java
similarity index 96%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIHttpException.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIHttpException.java
index 9e6cecf5..efce652e 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIHttpException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIHttpException.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIResponseException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIResponseException.java
similarity index 99%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIResponseException.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIResponseException.java
index b60305ad..47a1838c 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPIResponseException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPIResponseException.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPITimeoutException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPITimeoutException.java
similarity index 95%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPITimeoutException.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPITimeoutException.java
index 3982eea7..86c3b9da 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/DataAPITimeoutException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/DataAPITimeoutException.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/InvalidConfigurationException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidConfigurationException.java
similarity index 87%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/InvalidConfigurationException.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidConfigurationException.java
index 4fbd424b..414a6d0d 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/InvalidConfigurationException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidConfigurationException.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
@@ -20,8 +20,8 @@
* #L%
*/
-import static com.datastax.astra.client.exception.ClientErrorCodes.CONFIG_MISSING;
-import static com.datastax.astra.client.exception.ClientErrorCodes.MISSING_ANNOTATION;
+import static com.datastax.astra.client.exceptions.ClientErrorCodes.CONFIG_MISSING;
+import static com.datastax.astra.client.exceptions.ClientErrorCodes.MISSING_ANNOTATION;
public class InvalidConfigurationException extends DataAPIException {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/InvalidEnvironmentException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidEnvironmentException.java
similarity index 91%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/InvalidEnvironmentException.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidEnvironmentException.java
index ba8ac10a..b7747593 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/InvalidEnvironmentException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/InvalidEnvironmentException.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
@@ -22,7 +22,7 @@
import com.datastax.astra.client.DataAPIDestination;
-import static com.datastax.astra.client.exception.ClientErrorCodes.ENV_RESTRICTED_ASTRA;
+import static com.datastax.astra.client.exceptions.ClientErrorCodes.ENV_RESTRICTED_ASTRA;
/**
* Exception thrown when the environment is invalid.
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/UnexpectedDataAPIResponseException.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/UnexpectedDataAPIResponseException.java
similarity index 98%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/UnexpectedDataAPIResponseException.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/UnexpectedDataAPIResponseException.java
index 5ffe7871..41a90899 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/UnexpectedDataAPIResponseException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/UnexpectedDataAPIResponseException.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/exception/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/package-info.java
similarity index 93%
rename from astra-db-java/src/main/java/com/datastax/astra/client/exception/package-info.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/exceptions/package-info.java
index ed2aae47..29eeff7d 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/exception/package-info.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/exceptions/package-info.java
@@ -1,7 +1,7 @@
/**
* Exceptions specialized checked and unchecked thrown by the client.
*/
-package com.datastax.astra.client.exception;
+package com.datastax.astra.client.exceptions;
/*-
* #%L
* Data API Java Client
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
index 03b46b6c..8fd64064 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
@@ -20,48 +20,48 @@
* #L%
*/
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.core.commands.Command;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.commands.BaseOptions;
-import com.datastax.astra.client.core.commands.CommandType;
-import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.client.core.paging.TableCursor;
+import com.datastax.astra.client.core.commands.Command;
import com.datastax.astra.client.core.paging.Page;
+import com.datastax.astra.client.core.paging.TableCursor;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.databases.options.ListIndexesOptions;
-import com.datastax.astra.client.exception.DataAPIException;
-import com.datastax.astra.client.tables.index.TableIndexDescriptor;
-import com.datastax.astra.client.tables.options.CountRowsOptions;
-import com.datastax.astra.client.tables.options.EstimatedCountRowsOptions;
-import com.datastax.astra.client.tables.options.TableDeleteManyOptions;
-import com.datastax.astra.client.tables.options.TableDeleteOneOptions;
-import com.datastax.astra.client.tables.options.TableFindOneOptions;
-import com.datastax.astra.client.tables.options.TableFindOptions;
-import com.datastax.astra.client.tables.options.TableInsertManyOptions;
-import com.datastax.astra.client.tables.results.TableInsertManyResult;
-import com.datastax.astra.client.tables.options.TableInsertOneOptions;
-import com.datastax.astra.client.tables.results.TableInsertOneResult;
-import com.datastax.astra.client.tables.options.TableUpdateOneOptions;
-import com.datastax.astra.client.tables.ddl.AlterTableOperation;
-import com.datastax.astra.client.tables.ddl.AlterTableOptions;
-import com.datastax.astra.client.tables.ddl.CreateIndexOptions;
-import com.datastax.astra.client.tables.ddl.CreateVectorIndexOptions;
+import com.datastax.astra.client.exceptions.DataAPIException;
+import com.datastax.astra.client.tables.commands.AlterTableOperation;
+import com.datastax.astra.client.tables.commands.TableUpdateOperation;
+import com.datastax.astra.client.tables.commands.options.AlterTableOptions;
+import com.datastax.astra.client.tables.commands.options.CountRowsOptions;
+import com.datastax.astra.client.tables.commands.options.CreateIndexOptions;
+import com.datastax.astra.client.tables.commands.options.CreateVectorIndexOptions;
+import com.datastax.astra.client.tables.commands.options.EstimatedCountRowsOptions;
+import com.datastax.astra.client.tables.commands.options.ListIndexesOptions;
+import com.datastax.astra.client.tables.commands.options.TableDeleteManyOptions;
+import com.datastax.astra.client.tables.commands.options.TableDeleteOneOptions;
+import com.datastax.astra.client.tables.commands.options.TableFindOneOptions;
+import com.datastax.astra.client.tables.commands.options.TableFindOptions;
+import com.datastax.astra.client.tables.commands.options.TableInsertManyOptions;
+import com.datastax.astra.client.tables.commands.options.TableInsertOneOptions;
+import com.datastax.astra.client.tables.commands.options.TableUpdateOneOptions;
+import com.datastax.astra.client.tables.commands.results.TableInsertManyResult;
+import com.datastax.astra.client.tables.commands.results.TableInsertOneResult;
+import com.datastax.astra.client.tables.commands.results.TableUpdateResult;
+import com.datastax.astra.client.tables.definition.TableDefinition;
+import com.datastax.astra.client.tables.definition.TableDescriptor;
+import com.datastax.astra.client.tables.definition.indexes.TableIndexDefinition;
+import com.datastax.astra.client.tables.definition.indexes.TableIndexDescriptor;
+import com.datastax.astra.client.tables.definition.indexes.TableVectorIndexDefinition;
+import com.datastax.astra.client.tables.definition.rows.Row;
import com.datastax.astra.client.tables.exceptions.TooManyRowsToCountException;
-import com.datastax.astra.client.tables.index.TableIndexDefinition;
-import com.datastax.astra.client.tables.index.TableVectorIndexDefinition;
-import com.datastax.astra.client.tables.mapping.EntityBeanDefinition;
import com.datastax.astra.client.tables.mapping.EntityTable;
-import com.datastax.astra.client.tables.results.TableUpdateResult;
-import com.datastax.astra.client.tables.row.Row;
-import com.datastax.astra.client.tables.row.TableUpdate;
import com.datastax.astra.internal.api.DataAPIData;
import com.datastax.astra.internal.api.DataAPIResponse;
import com.datastax.astra.internal.api.DataAPIStatus;
import com.datastax.astra.internal.command.AbstractCommandRunner;
import com.datastax.astra.internal.command.CommandObserver;
+import com.datastax.astra.internal.reflection.EntityBeanDefinition;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.datastax.astra.internal.serdes.tables.RowSerializer;
import com.datastax.astra.internal.utils.Assert;
@@ -86,8 +86,8 @@
import static com.datastax.astra.client.core.options.DataAPIClientOptions.MAX_CHUNK_SIZE;
import static com.datastax.astra.client.core.options.DataAPIClientOptions.MAX_COUNT;
import static com.datastax.astra.client.core.types.DataAPIKeywords.SORT_VECTOR;
-import static com.datastax.astra.client.exception.DataAPIException.ERROR_CODE_INTERRUPTED;
-import static com.datastax.astra.client.exception.DataAPIException.ERROR_CODE_TIMEOUT;
+import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_INTERRUPTED;
+import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_TIMEOUT;
import static com.datastax.astra.internal.utils.AnsiUtils.cyan;
import static com.datastax.astra.internal.utils.AnsiUtils.green;
import static com.datastax.astra.internal.utils.AnsiUtils.magenta;
@@ -96,7 +96,12 @@
import static com.datastax.astra.internal.utils.Assert.notNull;
/**
- * Execute commands against tables
+ * Executes commands and operations on tables.
+ *
+ * The {@code Table} class is designed to work with table entities of type {@code T}, where
+ * {@code T} represents the data model or schema associated with the table.
+ *
+ * @param the type of the table entity, representing the data model or schema
*/
@Slf4j
public class Table extends AbstractCommandRunner {
@@ -499,11 +504,11 @@ public Optional findOne(Filter filter, TableFindOneOptions findOneOptions) {
Command findOne = Command.create("findOne").withFilter(filter);
if (findOneOptions != null) {
findOne.withSort(findOneOptions.getSortArray())
- .withProjection(findOneOptions.getProjectionArray())
+ .withProjection(findOneOptions.getProjectionArray())
.withOptions(new Document()
- .appendIfNotNull(INPUT_INCLUDE_SIMILARITY, findOneOptions.includeSimilarity())
- .appendIfNotNull(INPUT_INCLUDE_SORT_VECTOR, findOneOptions.includeSortVector())
- );
+ .appendIfNotNull(INPUT_INCLUDE_SIMILARITY, findOneOptions.includeSimilarity())
+ .appendIfNotNull(INPUT_INCLUDE_SORT_VECTOR, findOneOptions.includeSortVector())
+ );
}
DataAPIData data = runCommand(findOne, findOneOptions).getData();
if (data.getDocument() == null) {
@@ -625,7 +630,7 @@ public Page findPage(Filter filter, TableFindOptions options) {
* an iterable of distinct values
public CollectionDistinctIterable distinct(String fieldName, Class resultClass) {
- return distinct(fieldName, null, resultClass);
+ return distinct(fieldName, null, resultClass);
}
/**
@@ -643,9 +648,9 @@ public CollectionDistinctIterable distinct(String fieldName, Class
* an iterable of distinct values
public CollectionDistinctIterable distinct(String fieldName, Filter filter, Class resultClass) {
- return new CollectionDistinctIterable<>(this, fieldName, filter, resultClass);
+ return new CollectionDistinctIterable<>(this, fieldName, filter, resultClass);
}
-*/
+ */
// -------------------------
// --- updateOne ----
// -------------------------
@@ -660,7 +665,7 @@ public CollectionDistinctIterable distinct(String fieldName, Filter fi
* @return
* the result of the update one operation
*/
- public TableUpdateResult updateOne(Filter filter, TableUpdate update) {
+ public TableUpdateResult updateOne(Filter filter, TableUpdateOperation update) {
return updateOne(filter, update, new TableUpdateOneOptions());
}
@@ -676,7 +681,7 @@ public TableUpdateResult updateOne(Filter filter, TableUpdate update) {
* @return
* the result of the update one operation
*/
- public TableUpdateResult updateOne(Filter filter, TableUpdate update, TableUpdateOneOptions updateOptions) {
+ public TableUpdateResult updateOne(Filter filter, TableUpdateOperation update, TableUpdateOneOptions updateOptions) {
notNull(update, ARG_UPDATE);
notNull(updateOptions, ARG_OPTIONS);
Command cmd = Command
@@ -880,7 +885,7 @@ public int countRows(int upperBound) throws TooManyRowsToCountException {
* If the number of rows counted exceeds the provided limit.
*/
public int countRows(Filter filter, int upperBound, CountRowsOptions options)
- throws TooManyRowsToCountException {
+ throws TooManyRowsToCountException {
// Argument Validation
if (upperBound < 1 || upperBound > MAX_COUNT) {
throw new IllegalArgumentException("UpperBound limit should be in between 1 and " + MAX_COUNT);
@@ -912,7 +917,7 @@ public int countRows(Filter filter, int upperBound, CountRowsOptions options)
* If the number of rows counted exceeds the provided limit.
*/
public int countRows(Filter filter, int upperBound)
- throws TooManyRowsToCountException {
+ throws TooManyRowsToCountException {
return countRows(filter, upperBound, new CountRowsOptions());
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java
index 1fb77716..e86fc844 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java
@@ -21,12 +21,7 @@
*/
import com.datastax.astra.client.core.commands.BaseOptions;
-import com.datastax.astra.client.core.commands.CommandType;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.internal.serdes.collections.DocumentSerializer;
-import com.datastax.astra.internal.serdes.tables.RowSerializer;
-import com.datastax.astra.internal.utils.Assert;
-import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionMap.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionMap.java
deleted file mode 100644
index 5ddfbc77..00000000
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionMap.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.datastax.astra.client.tables.columns;
-
-/*-
- * #%L
- * Data API Java Client
- * --
- * Copyright (C) 2024 DataStax
- * --
- * Licensed under the Apache License, Version 2.0
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.Accessors;
-
-@Getter @Setter
-public class ColumnDefinitionMap extends ColumnDefinition {
-
- private ColumnTypes keyType;
-
- private ColumnTypes valueType;
-
- public ColumnDefinitionMap() {
- super(ColumnTypes.MAP);
- }
-
- public ColumnDefinitionMap(ColumnTypes keyType, ColumnTypes valueType) {
- this();
- this.keyType = keyType;
- this.valueType = valueType;
- }
-
-}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionVector.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionVector.java
deleted file mode 100644
index 36bcf674..00000000
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionVector.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.datastax.astra.client.tables.columns;
-
-/*-
- * #%L
- * Data API Java Client
- * --
- * Copyright (C) 2024 DataStax
- * --
- * Licensed under the Apache License, Version 2.0
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
-
-import com.datastax.astra.client.core.vector.SimilarityMetric;
-import com.datastax.astra.client.core.vectorize.VectorServiceOptions;
-import lombok.Getter;
-import lombok.Setter;
-
-@Getter @Setter
-public class ColumnDefinitionVector extends ColumnDefinition {
-
- /**
- * Vector dimension.
- */
- private Integer dimension;
-
- /**
- * Similarity metric.
- */
- private SimilarityMetric metric;
-
- /**
- * Service for vectorization
- */
- private VectorServiceOptions service;
-
- public ColumnDefinitionVector() {
- super(ColumnTypes.VECTOR);
- }
-
- public ColumnDefinitionVector dimension(int dimension) {
- this.dimension = dimension;
- return this;
- }
-
- public ColumnDefinitionVector metric(SimilarityMetric m) {
- this.metric = m;
- return this;
- }
-
- public ColumnDefinitionVector service(VectorServiceOptions service) {
- this.service = service;
- return this;
- }
-
-
-
-}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnTypes.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnTypes.java
deleted file mode 100644
index 42dd391e..00000000
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnTypes.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.datastax.astra.client.tables.columns;
-
-/*-
- * #%L
- * Data API Java Client
- * --
- * Copyright (C) 2024 DataStax
- * --
- * Licensed under the Apache License, Version 2.0
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
-
-import lombok.Getter;
-
-/**
- * Column Types
- */
-public enum ColumnTypes {
-
- ASCII("ascii"),
- BIGINT("bigint"),
- BLOB("blob"),
- BOOLEAN("boolean"),
- DATE("date"),
- DECIMAL("decimal"),
- DOUBLE("double"),
- DURATION("duration"),
- FLOAT("float"),
- INET("inet"),
- INT("int"),
- LIST("list"),
- MAP("map"),
- SET("set"),
- SMALLINT("smallint"),
- TEXT("text"),
- TIME("time"),
- TIMESTAMP("timestamp"),
- TINYINT("tinyint"),
- VARINT("varint"),
- UUID("uuid"),
- UNSUPPORTED("UNSUPPORTED"),
- UNDEFINED("undefined"),
- VECTOR("vector");
-
- @Getter
- private final String value;
-
- ColumnTypes(String value) {
- this.value = value;
- }
-}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddColumns.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddColumns.java
new file mode 100644
index 00000000..3d22bf79
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddColumns.java
@@ -0,0 +1,190 @@
+package com.datastax.astra.client.tables.commands;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinition;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionList;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionMap;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionSet;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionVector;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.LinkedHashMap;
+
+/**
+ * Represents an operation to add columns to an existing table in a database schema.
+ * This class implements the {@link AlterTableOperation} interface, providing functionality
+ * to define new columns and their types for the "alter table add" operation.
+ *
+ * Example usage:
+ *
+ * {@code
+ * AlterTableAddColumns operation = new AlterTableAddColumns()
+ * .ifNotExists()
+ * .addColumn("name", ColumnTypes.TEXT)
+ * .addColumnInt("age")
+ * .addColumnMap("attributes", ColumnTypes.TEXT, ColumnTypes.TEXT);
+ * }
+ *
+ *
+ * Key Features:
+ *
+ * - Supports adding columns with various data types, including primitive, list, set, and map types.
+ * - Chainable methods for building operations fluently.
+ * - Ability to specify the "IF NOT EXISTS" clause to avoid errors if the column already exists.
+ *
+ */
+@Setter @Getter
+public final class AlterTableAddColumns implements AlterTableOperation {
+
+ /**
+ * Indicates whether the "IF NOT EXISTS" clause should be used in the operation.
+ * Defaults to {@code null}, meaning the clause is not applied.
+ */
+ Boolean ifNotExists = null;
+
+ /**
+ * A map of column names to their definitions.
+ * The map preserves the order of added columns.
+ */
+ LinkedHashMap columns = new LinkedHashMap<>();
+
+ /**
+ * Constructs a new {@code AlterTableAddColumns} instance.
+ */
+ public AlterTableAddColumns() {
+ }
+
+ /**
+ * Returns the name of this operation.
+ * Always returns "add" for this operation type.
+ *
+ * @return the operation name.
+ */
+ @Override
+ public String getOperationName() {
+ return "add";
+ }
+
+ /**
+ * Adds a column with the specified name and type to the table.
+ *
+ * @param name the name of the column.
+ * @param type the type of the column.
+ * @return the current instance for chaining.
+ */
+ public AlterTableAddColumns addColumn(String name, ColumnTypes type) {
+ columns.put(name, new ColumnDefinition(type));
+ return this;
+ }
+
+ /**
+ * Adds a column defined by a {@link ColumnDefinitionVector}.
+ *
+ * @param name the name of the column.
+ * @param cdv the column definition vector.
+ * @return the current instance for chaining.
+ */
+ public AlterTableAddColumns addColumnVector(String name, ColumnDefinitionVector cdv) {
+ columns.put(name, cdv);
+ return this;
+ }
+
+ /**
+ * Adds a column with the TEXT type.
+ *
+ * @param name the name of the column.
+ * @return the current instance for chaining.
+ */
+ public AlterTableAddColumns addColumnText(String name) {
+ return addColumn(name, ColumnTypes.TEXT);
+ }
+
+ /**
+ * Adds a column with the INT type.
+ *
+ * @param name the name of the column.
+ * @return the current instance for chaining.
+ */
+ public AlterTableAddColumns addColumnInt(String name) {
+ return addColumn(name, ColumnTypes.INT);
+ }
+
+ /**
+ * Adds a column with the BOOLEAN type.
+ *
+ * @param name the name of the column.
+ * @return the current instance for chaining.
+ */
+ public AlterTableAddColumns addColumnBoolean(String name) {
+ return addColumn(name, ColumnTypes.BOOLEAN);
+ }
+
+ /**
+ * Adds a column with the LIST type, where the list items are of the specified value type.
+ *
+ * @param name the name of the column.
+ * @param valueType the type of the values in the list.
+ * @return the current instance for chaining.
+ */
+ public AlterTableAddColumns addColumnList(String name, ColumnTypes valueType) {
+ columns.put(name, new ColumnDefinitionList(valueType));
+ return this;
+ }
+
+ /**
+ * Adds a column with the SET type, where the set items are of the specified value type.
+ *
+ * @param name the name of the column.
+ * @param valueType the type of the values in the set.
+ * @return the current instance for chaining.
+ */
+ public AlterTableAddColumns addColumnSet(String name, ColumnTypes valueType) {
+ columns.put(name, new ColumnDefinitionSet(valueType));
+ return this;
+ }
+
+ /**
+ * Adds a column with the MAP type, where the keys and values are of the specified types.
+ *
+ * @param name the name of the column.
+ * @param keyType the type of the keys in the map.
+ * @param valueType the type of the values in the map.
+ * @return the current instance for chaining.
+ */
+ public AlterTableAddColumns addColumnMap(String name, ColumnTypes keyType, ColumnTypes valueType) {
+ columns.put(name, new ColumnDefinitionMap(keyType, valueType));
+ return this;
+ }
+
+ /**
+ * Specifies that the "IF NOT EXISTS" clause should be applied to this operation.
+ *
+ * @return the current instance for chaining.
+ */
+ public AlterTableAddColumns ifNotExists() {
+ this.ifNotExists = true;
+ return this;
+ }
+}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddVectorize.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddVectorize.java
new file mode 100644
index 00000000..e006236b
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddVectorize.java
@@ -0,0 +1,112 @@
+package com.datastax.astra.client.tables.commands;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+import com.datastax.astra.client.core.vectorize.VectorServiceOptions;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Represents an operation to add vectorized columns to a table in a database schema alteration.
+ * Implements the {@link AlterTableOperation} interface to specify the "addVectorize" operation.
+ *
+ * This class allows adding columns with vectorization options and supports an optional "IF NOT EXISTS" clause.
+ *
+ *
+ * Example usage:
+ *
+ * {@code
+ * AlterTableAddVectorize addVectorize = new AlterTableAddVectorize()
+ * .ifNotExists()
+ * .addColumn("vectorColumn", new VectorServiceOptions());
+ * }
+ *
+ */
+@Setter @Getter
+public class AlterTableAddVectorize implements AlterTableOperation {
+
+ /**
+ * Flag indicating whether to include an "IF NOT EXISTS" clause in the operation.
+ * If {@code true}, the operation will not fail if the specified columns already exist.
+ */
+ private Boolean ifNotExists = null;
+
+ /**
+ * A map of column names to their respective {@link VectorServiceOptions} configurations.
+ * Represents the vectorized columns to be added to the table.
+ */
+ private Map columns = new HashMap<>();
+
+ /**
+ * Default constructor.
+ */
+ public AlterTableAddVectorize() {
+ // left blank, serialization with jackson
+ }
+
+ /**
+ * Returns the name of this operation, which is "addVectorize".
+ *
+ * @return the operation name
+ */
+ @Override
+ public String getOperationName() {
+ return "addVectorize";
+ }
+
+ /**
+ * Adds a new column with the specified name and vectorization options.
+ *
+ * @param name the name of the column to add
+ * @param def the vectorization options for the column
+ * @return this {@code AlterTableAddVectorize} instance
+ */
+ public AlterTableAddVectorize addColumn(String name, VectorServiceOptions def) {
+ columns.put(name, def);
+ return this;
+ }
+
+ /**
+ * Replaces the current column definitions with the specified map of column names and vectorization options.
+ *
+ * @param columns a map of column names to their vectorization options
+ * @return this {@code AlterTableAddVectorize} instance
+ */
+ public AlterTableAddVectorize columns(Map columns) {
+ this.columns = columns;
+ return this;
+ }
+
+ /**
+ * Enables the "IF NOT EXISTS" clause for the add operation.
+ * Ensures the operation does not fail if the specified columns already exist.
+ *
+ * @return this {@code AlterTableAddVectorize} instance
+ */
+ public AlterTableAddVectorize ifNotExists() {
+ this.ifNotExists = true;
+ return this;
+ }
+}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropColumns.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropColumns.java
new file mode 100644
index 00000000..58f72f84
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropColumns.java
@@ -0,0 +1,113 @@
+package com.datastax.astra.client.tables.commands;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * Represents an operation to drop columns from a table in a database schema alteration.
+ * Implements the {@link AlterTableOperation} interface to specify the "drop" operation.
+ *
+ * This class supports adding columns to be dropped, with an optional "if exists" clause.
+ *
+ *
+ * Example usage:
+ *
+ * {@code
+ * AlterTableDropColumns dropColumns = new AlterTableDropColumns()
+ * .ifExists()
+ * .columns("column3");
+ * }
+ *
+ */
+@Setter
+@Getter
+@NoArgsConstructor
+public final class AlterTableDropColumns implements AlterTableOperation {
+
+ /**
+ * Flag indicating whether to include an "IF EXISTS" clause in the drop operation.
+ * If {@code true}, the operation will proceed only if the specified columns exist.
+ */
+ private Boolean ifExists = null;
+
+ /**
+ * A set of column names to be dropped.
+ * Ensures that column names are stored in insertion order with no duplicates.
+ */
+ private Set columns = new LinkedHashSet<>();
+
+ /**
+ * Constructs a new {@code AlterTableDropColumns} instance with the specified column names.
+ *
+ * @param name the names of the columns to drop
+ */
+ public AlterTableDropColumns(String... name) {
+ this.columns.addAll(Arrays.asList(name));
+ }
+
+ /**
+ * Constructs a new {@code AlterTableDropColumns} instance with the specified set of column names.
+ *
+ * @param columns the set of column names to drop
+ */
+ public AlterTableDropColumns(Set columns) {
+ this.columns.addAll(columns);
+ }
+
+ /**
+ * Adds additional column names to the list of columns to drop.
+ *
+ * @param columns the names of the columns to add
+ * @return this {@code AlterTableDropColumns} instance
+ */
+ public AlterTableDropColumns columns(String... columns) {
+ this.columns.addAll(Arrays.asList(columns));
+ return this;
+ }
+
+ /**
+ * Returns the name of this operation, which is "drop".
+ *
+ * @return the operation name
+ */
+ @Override
+ public String getOperationName() {
+ return "drop";
+ }
+
+ /**
+ * Enables the "IF EXISTS" clause for the drop operation.
+ * Ensures the operation only proceeds if the specified columns exist.
+ *
+ * @return this {@code AlterTableDropColumns} instance
+ */
+ public AlterTableDropColumns ifExists() {
+ this.ifExists = true;
+ return this;
+ }
+}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropVectorize.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropVectorize.java
new file mode 100644
index 00000000..06490364
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropVectorize.java
@@ -0,0 +1,118 @@
+package com.datastax.astra.client.tables.commands;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.Arrays;
+import java.util.LinkedHashSet;
+import java.util.Set;
+
+/**
+ * Represents an operation to drop vectorized columns from a table in a database schema alteration.
+ * Implements the {@link AlterTableOperation} interface to specify the "dropVectorize" operation.
+ *
+ * This class supports specifying columns to drop and an optional "IF EXISTS" clause to
+ * ensure the operation only proceeds if the specified columns exist.
+ *
+ *
+ * Example usage:
+ *
+ * {@code
+ * AlterTableDropVectorize dropVectorize = new AlterTableDropVectorize("column1", "column2")
+ * .ifExists()
+ * .columns("column3");
+ * }
+ *
+ */
+@Setter
+@Getter
+public class AlterTableDropVectorize implements AlterTableOperation {
+
+ /**
+ * Flag indicating whether to include an "IF EXISTS" clause in the drop operation.
+ * If {@code true}, the operation will proceed only if the specified columns exist.
+ */
+ private Boolean ifExists = null;
+
+ /**
+ * A set of column names to be dropped.
+ * Ensures that column names are stored in insertion order and no duplicates are included.
+ */
+ private Set columns = new LinkedHashSet<>();
+
+ /**
+ * Default constructor. Creates an empty {@code AlterTableDropVectorize} instance.
+ */
+ public AlterTableDropVectorize() {}
+
+ /**
+ * Constructs a new {@code AlterTableDropVectorize} instance with the specified column names.
+ *
+ * @param name the names of the columns to drop
+ */
+ public AlterTableDropVectorize(String... name) {
+ this.columns.addAll(Arrays.asList(name));
+ }
+
+ /**
+ * Constructs a new {@code AlterTableDropVectorize} instance with the specified set of column names.
+ *
+ * @param columns the set of column names to drop
+ */
+ public AlterTableDropVectorize(Set columns) {
+ this.columns.addAll(columns);
+ }
+
+ /**
+ * Adds additional column names to the list of columns to drop.
+ *
+ * @param columns the names of the columns to add
+ * @return this {@code AlterTableDropVectorize} instance
+ */
+ public AlterTableDropVectorize columns(String... columns) {
+ this.columns.addAll(Arrays.asList(columns));
+ return this;
+ }
+
+ /**
+ * Enables the "IF EXISTS" clause for the drop operation.
+ * Ensures the operation only proceeds if the specified columns exist.
+ *
+ * @return this {@code AlterTableDropVectorize} instance
+ */
+ public AlterTableDropVectorize ifExists() {
+ this.ifExists = true;
+ return this;
+ }
+
+ /**
+ * Returns the name of this operation, which is "dropVectorize".
+ *
+ * @return the operation name
+ */
+ @Override
+ public String getOperationName() {
+ return "dropVectorize";
+ }
+}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableOperation.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableOperation.java
new file mode 100644
index 00000000..1ee7fb4a
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableOperation.java
@@ -0,0 +1,51 @@
+package com.datastax.astra.client.tables.commands;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
+/**
+ * Represents a generic operation to alter a database table schema.
+ * This interface provides a contract for implementing specific schema alteration operations.
+ *
+ * Implementations of this interface must define the name of the operation.
+ *
+ *
+ * Example usage:
+ *
+ * {@code
+ * AlterTableOperation operation = new AlterTableAddVectorize();
+ * String operationName = operation.getOperationName();
+ * }
+ *
+ */
+public interface AlterTableOperation {
+
+ /**
+ * Returns the name of the table alteration operation.
+ * This method is annotated with {@link com.fasterxml.jackson.annotation.JsonIgnore}
+ * to prevent serialization of the operation name in JSON outputs.
+ *
+ * @return the name of the operation
+ */
+ @JsonIgnore
+ String getOperationName();
+}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableRenameColumns.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableRenameColumns.java
similarity index 93%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableRenameColumns.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableRenameColumns.java
index 6df8925e..84e44bf0 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableRenameColumns.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableRenameColumns.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.ddl;
+package com.datastax.astra.client.tables.commands;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/row/TableUpdate.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/TableUpdateOperation.java
similarity index 78%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/row/TableUpdate.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/TableUpdateOperation.java
index 474bcb55..9d8b98d3 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/row/TableUpdate.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/TableUpdateOperation.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.row;
+package com.datastax.astra.client.tables.commands;
/*-
* #%L
@@ -20,23 +20,20 @@
* #L%
*/
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.tables.definition.rows.Row;
-import java.util.Arrays;
-import java.util.HashMap;
import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
/**
* Encore the update document
*/
-public class TableUpdate extends Row {
+public class TableUpdateOperation extends Row {
/**
* Default constructor.
*/
- public TableUpdate() {
+ public TableUpdateOperation() {
super();
}
@@ -47,7 +44,7 @@ public TableUpdate() {
* filter expression as JSON
*/
@SuppressWarnings("unchecked")
- public TableUpdate(String json) {
+ public TableUpdateOperation(String json) {
super();
this.columnMap.putAll(SERIALIZER.unMarshallBean(json, Map.class));
}
@@ -58,7 +55,7 @@ public TableUpdate(String json) {
* @param obj
* filter expression as JSON
*/
- public TableUpdate(Map obj) {
+ public TableUpdateOperation(Map obj) {
super();
this.columnMap.putAll(obj);
}
@@ -69,8 +66,8 @@ public TableUpdate(Map obj) {
* @return
* a new instance
*/
- public static TableUpdate create() {
- return new TableUpdate();
+ public static TableUpdateOperation create() {
+ return new TableUpdateOperation();
}
/**
@@ -81,7 +78,7 @@ public static TableUpdate create() {
* @return
* reference to self
*/
- public TableUpdate unset(String fieldName) {
+ public TableUpdateOperation unset(String fieldName) {
return update("$unset", fieldName, "");
}
@@ -95,7 +92,7 @@ public TableUpdate unset(String fieldName) {
* @return
* reference to self
*/
- public TableUpdate set(String key, Object value) {
+ public TableUpdateOperation set(String key, Object value) {
return update("$set", key, value);
}
@@ -108,7 +105,7 @@ public TableUpdate set(String key, Object value) {
* @return
* reference to self
*/
- public TableUpdate set(Row row) {
+ public TableUpdateOperation set(Row row) {
if (row !=null) row.getColumnMap().forEach(this::set);
return this;
}
@@ -126,7 +123,7 @@ public TableUpdate set(Row row) {
* reference to self
*/
@SuppressWarnings("unchecked")
- private TableUpdate update(String operation, String key, Object value) {
+ private TableUpdateOperation update(String operation, String key, Object value) {
columnMap.computeIfAbsent(operation, k -> new LinkedHashMap<>());
((Map) columnMap.get(operation)).put(key, value);
return this;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/AlterTableOptions.java
similarity index 92%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/AlterTableOptions.java
index fd16fda3..815b7ae4 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/AlterTableOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.ddl;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
@@ -22,9 +22,6 @@
import com.datastax.astra.client.core.commands.BaseOptions;
import com.datastax.astra.client.core.commands.CommandType;
-import lombok.Data;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/CountRowsOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CountRowsOptions.java
similarity index 94%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/options/CountRowsOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CountRowsOptions.java
index c40707e4..c1ae963a 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/CountRowsOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CountRowsOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/CreateIndexOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateIndexOptions.java
similarity index 94%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/CreateIndexOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateIndexOptions.java
index ca6f8a3a..3ea563f4 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/CreateIndexOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateIndexOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.ddl;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
@@ -21,8 +21,6 @@
*/
import com.datastax.astra.client.core.commands.BaseOptions;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/CreateTableOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateTableOptions.java
similarity index 86%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/CreateTableOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateTableOptions.java
index a676b9a6..628f433c 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/CreateTableOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateTableOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.ddl;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
@@ -22,11 +22,6 @@
import com.datastax.astra.client.core.commands.BaseOptions;
import com.datastax.astra.client.core.commands.CommandType;
-import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.internal.serdes.DataAPISerializer;
-import lombok.Data;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/CreateVectorIndexOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateVectorIndexOptions.java
similarity index 95%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/CreateVectorIndexOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateVectorIndexOptions.java
index db2f8099..e283f427 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/CreateVectorIndexOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateVectorIndexOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.ddl;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
@@ -22,7 +22,6 @@
import com.datastax.astra.client.core.commands.BaseOptions;
import lombok.Getter;
-import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/DropTableIndexOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableIndexOptions.java
similarity index 92%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/DropTableIndexOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableIndexOptions.java
index a49ad164..42509617 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/DropTableIndexOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableIndexOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.ddl;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
@@ -21,9 +21,6 @@
*/
import com.datastax.astra.client.core.commands.BaseOptions;
-import lombok.Data;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/DropTableOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableOptions.java
similarity index 89%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/DropTableOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableOptions.java
index d2173bc9..dab4e765 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/DropTableOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.ddl;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
@@ -21,10 +21,6 @@
*/
import com.datastax.astra.client.core.commands.BaseOptions;
-import com.datastax.astra.internal.serdes.tables.RowSerializer;
-import lombok.Data;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/EstimatedCountRowsOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/EstimatedCountRowsOptions.java
similarity index 94%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/options/EstimatedCountRowsOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/EstimatedCountRowsOptions.java
index 8bc36b7a..1d5cee4d 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/EstimatedCountRowsOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/EstimatedCountRowsOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/options/ListIndexesOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListIndexesOptions.java
similarity index 94%
rename from astra-db-java/src/main/java/com/datastax/astra/client/databases/options/ListIndexesOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListIndexesOptions.java
index fc0edd93..3cd9cd30 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/databases/options/ListIndexesOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListIndexesOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.databases.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/options/ListTablesOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListTablesOptions.java
similarity index 88%
rename from astra-db-java/src/main/java/com/datastax/astra/client/databases/options/ListTablesOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListTablesOptions.java
index ba4b0d76..26f4e7c9 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/databases/options/ListTablesOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListTablesOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.databases.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
@@ -23,7 +23,6 @@
import com.datastax.astra.client.core.commands.BaseOptions;
import com.datastax.astra.internal.serdes.tables.RowSerializer;
-import static com.datastax.astra.client.core.commands.CommandType.COLLECTION_ADMIN;
import static com.datastax.astra.client.core.commands.CommandType.TABLE_ADMIN;
public class ListTablesOptions extends BaseOptions {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableDeleteManyOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteManyOptions.java
similarity index 94%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableDeleteManyOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteManyOptions.java
index 493bbc42..2b6000dd 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableDeleteManyOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteManyOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableDeleteOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteOneOptions.java
similarity index 96%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableDeleteOneOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteOneOptions.java
index 56e378dc..794ab1a3 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableDeleteOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteOneOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableFindOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOneOptions.java
similarity index 97%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableFindOneOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOneOptions.java
index 26d26bc6..b7f3e0dd 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableFindOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOneOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableFindOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOptions.java
similarity index 98%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableFindOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOptions.java
index 077dfdf9..76bd9b34 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableFindOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableInsertManyOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertManyOptions.java
similarity index 97%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableInsertManyOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertManyOptions.java
index 94d97416..26f0b46b 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableInsertManyOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertManyOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableInsertOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertOneOptions.java
similarity index 94%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableInsertOneOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertOneOptions.java
index 6be7aa96..8120a369 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableInsertOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertOneOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableUpdateOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableUpdateOneOptions.java
similarity index 96%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableUpdateOneOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableUpdateOneOptions.java
index 1d6d0439..b61b963f 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/TableUpdateOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableUpdateOneOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.options;
+package com.datastax.astra.client.tables.commands.options;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/results/TableInsertManyResult.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/TableInsertManyResult.java
similarity index 91%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/results/TableInsertManyResult.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/TableInsertManyResult.java
index e9ff7dea..80792935 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/results/TableInsertManyResult.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/TableInsertManyResult.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.results;
+package com.datastax.astra.client.tables.commands.results;
/*-
* #%L
@@ -21,7 +21,7 @@
*/
-import com.datastax.astra.client.tables.columns.ColumnDefinition;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinition;
import com.datastax.astra.internal.api.DataAPIDocumentResponse;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/results/TableInsertOneResult.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/TableInsertOneResult.java
similarity index 88%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/results/TableInsertOneResult.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/TableInsertOneResult.java
index 9de9945f..952df6be 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/results/TableInsertOneResult.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/TableInsertOneResult.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.results;
+package com.datastax.astra.client.tables.commands.results;
/*-
* #%L
@@ -20,8 +20,8 @@
* #L%
*/
-import com.datastax.astra.client.tables.columns.ColumnDefinition;
-import com.datastax.astra.client.tables.row.Row;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinition;
+import com.datastax.astra.client.tables.definition.rows.Row;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/results/TableUpdateResult.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/TableUpdateResult.java
similarity index 94%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/results/TableUpdateResult.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/TableUpdateResult.java
index da841144..e97d40e3 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/results/TableUpdateResult.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/TableUpdateResult.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.results;
+package com.datastax.astra.client.tables.commands.results;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableAddColumns.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableAddColumns.java
deleted file mode 100644
index 45b04737..00000000
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableAddColumns.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package com.datastax.astra.client.tables.ddl;
-
-/*-
- * #%L
- * Data API Java Client
- * --
- * Copyright (C) 2024 DataStax
- * --
- * Licensed under the Apache License, Version 2.0
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
-
-import com.datastax.astra.client.tables.columns.ColumnDefinition;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionList;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionMap;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionSet;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionVector;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-import java.util.LinkedHashMap;
-
-@Setter @Getter
-@NoArgsConstructor
-public final class AlterTableAddColumns implements AlterTableOperation {
-
- Boolean ifNotExists = null;
-
- LinkedHashMap columns = new LinkedHashMap<>();
-
- @Override
- public String getOperationName() {
- return "add";
- }
-
- /**
- * Add a column to the table.
- *
- * @param name
- * name of the column
- * @param type
- * type of the column
- * @return
- * the current instance
- */
- public AlterTableAddColumns addColumn(String name, ColumnTypes type) {
- columns.put(name, new ColumnDefinition(type));
- return this;
- }
-
- public AlterTableAddColumns addColumnVector(String name, ColumnDefinitionVector cdv) {
- columns.put(name, cdv);
- return this;
- }
-
- public AlterTableAddColumns addColumnText(String name) {
- return addColumn(name, ColumnTypes.TEXT);
- }
-
- public AlterTableAddColumns addColumnInt(String name) {
- return addColumn(name, ColumnTypes.INT);
- }
-
- public AlterTableAddColumns addColumnBoolean(String name) {
- return addColumn(name, ColumnTypes.BOOLEAN);
- }
-
- public AlterTableAddColumns addColumnList(String name, ColumnTypes valueType) {
- columns.put(name, new ColumnDefinitionList(valueType));
- return this;
- }
-
- public AlterTableAddColumns addColumnSet(String name, ColumnTypes valueType) {
- columns.put(name, new ColumnDefinitionSet(valueType));
- return this;
- }
-
- public AlterTableAddColumns addColumnMap(String name, ColumnTypes keyType, ColumnTypes valueType) {
- columns.put(name, new ColumnDefinitionMap(keyType, valueType));
- return this;
- }
-
- public AlterTableAddColumns ifNotExists() {
- this.ifNotExists = true;
- return this;
- }
-
-}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableAddVectorize.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableAddVectorize.java
deleted file mode 100644
index 994eee9d..00000000
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableAddVectorize.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.datastax.astra.client.tables.ddl;
-
-/*-
- * #%L
- * Data API Java Client
- * --
- * Copyright (C) 2024 DataStax
- * --
- * Licensed under the Apache License, Version 2.0
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
-
-import com.datastax.astra.client.core.vectorize.VectorServiceOptions;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@NoArgsConstructor
-@Setter
-@Getter
-public class AlterTableAddVectorize implements AlterTableOperation {
-
- Boolean ifNotExists = null;
-
- Map columns = new HashMap<>();
-
- @Override
- public String getOperationName() {
- return "addVectorize";
- }
-
- public AlterTableAddVectorize addColumn(String name, VectorServiceOptions def) {
- columns.put(name, def);
- return this;
- }
-
- public AlterTableAddVectorize columns(Map columns) {
- this.columns = columns;
- return this;
- }
-
- public AlterTableAddVectorize ifNotExists() {
- this.ifNotExists = true;
- return this;
- }
-
-}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableDropColumns.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableDropColumns.java
deleted file mode 100644
index 9e63b967..00000000
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableDropColumns.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.datastax.astra.client.tables.ddl;
-
-/*-
- * #%L
- * Data API Java Client
- * --
- * Copyright (C) 2024 DataStax
- * --
- * Licensed under the Apache License, Version 2.0
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
-
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-import java.util.Arrays;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-@Setter
-@Getter
-@NoArgsConstructor
-public final class AlterTableDropColumns implements AlterTableOperation {
-
- Boolean ifExists = null;
-
- private Set columns = new LinkedHashSet<>();
-
- public AlterTableDropColumns(String... name) {
- this.columns.addAll(Arrays.asList(name));
- }
-
- public AlterTableDropColumns(Set columns) {
- this.columns.addAll(columns);
- }
-
- public AlterTableDropColumns columns(String... columns) {
- this.columns.addAll(Arrays.asList(columns));
- return this;
- }
-
- @Override
- public String getOperationName() {
- return "drop";
- }
-
- public AlterTableDropColumns ifExists() {
- this.ifExists = true;
- return this;
- }
-
-}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableDropVectorize.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableDropVectorize.java
deleted file mode 100644
index 6efe8c26..00000000
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableDropVectorize.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.datastax.astra.client.tables.ddl;
-
-/*-
- * #%L
- * Data API Java Client
- * --
- * Copyright (C) 2024 DataStax
- * --
- * Licensed under the Apache License, Version 2.0
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
-
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-import java.util.Arrays;
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-@Setter
-@Getter
-@NoArgsConstructor
-public class AlterTableDropVectorize implements AlterTableOperation {
-
- Boolean ifExists = null;
-
- Set columns = new LinkedHashSet<>();
-
- public AlterTableDropVectorize(String... name) {
- this.columns.addAll(Arrays.asList(name));
- }
-
- public AlterTableDropVectorize(Set columns) {
- this.columns.addAll(columns);
- }
-
- public AlterTableDropVectorize columns(String... columns) {
- this.columns.addAll(Arrays.asList(columns));
- return this;
- }
-
- public AlterTableDropVectorize ifExists() {
- this.ifExists = true;
- return this;
- }
-
- @Override
- public String getOperationName() {
- return "dropVectorize";
- }
-}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableOperation.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableOperation.java
deleted file mode 100644
index 302ccc99..00000000
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/ddl/AlterTableOperation.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.datastax.astra.client.tables.ddl;
-
-/*-
- * #%L
- * Data API Java Client
- * --
- * Copyright (C) 2024 DataStax
- * --
- * Licensed under the Apache License, Version 2.0
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import lombok.Getter;
-import lombok.Setter;
-
-public interface AlterTableOperation {
-
- @JsonIgnore
- String getOperationName();
-
-}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDefinition.java
similarity index 89%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/TableDefinition.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDefinition.java
index e13970d7..9fbe4372 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDefinition.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables;
+package com.datastax.astra.client.tables.definition;
/*-
* #%L
@@ -21,12 +21,12 @@
*/
import com.datastax.astra.client.core.query.Sort;
-import com.datastax.astra.client.tables.columns.ColumnDefinition;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionList;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionMap;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionSet;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionVector;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinition;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionList;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionMap;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionSet;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionVector;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
import com.datastax.astra.internal.utils.Assert;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableDescriptor.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDescriptor.java
similarity index 96%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/TableDescriptor.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDescriptor.java
index 7bce88c3..45fef2fd 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableDescriptor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDescriptor.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables;
+package com.datastax.astra.client.tables.definition;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableDuration.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDuration.java
similarity index 99%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/TableDuration.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDuration.java
index 1cc78f51..fbea2eaa 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableDuration.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDuration.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables;
+package com.datastax.astra.client.tables.definition;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TablePrimaryKey.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TablePrimaryKey.java
similarity index 95%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/TablePrimaryKey.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TablePrimaryKey.java
index 38cc4a9d..70ecbee3 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TablePrimaryKey.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TablePrimaryKey.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables;
+package com.datastax.astra.client.tables.definition;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinition.java
similarity index 93%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinition.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinition.java
index e24d9398..2d82c971 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinition.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.columns;
+package com.datastax.astra.client.tables.definition.columns;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionApiSupport.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionApiSupport.java
similarity index 93%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionApiSupport.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionApiSupport.java
index 340e56f4..60652fca 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionApiSupport.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionApiSupport.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.columns;
+package com.datastax.astra.client.tables.definition.columns;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionList.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionList.java
similarity index 91%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionList.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionList.java
index 65206dad..251c7e7f 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionList.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionList.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.columns;
+package com.datastax.astra.client.tables.definition.columns;
/*-
* #%L
@@ -22,7 +22,6 @@
import lombok.Getter;
import lombok.Setter;
-import lombok.experimental.Accessors;
@Getter @Setter
public class ColumnDefinitionList extends ColumnDefinition {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionMap.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionMap.java
new file mode 100644
index 00000000..27ccd639
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionMap.java
@@ -0,0 +1,76 @@
+package com.datastax.astra.client.tables.definition.columns;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * Represents a column definition for a map type in a database schema.
+ * Extends {@link ColumnDefinition} to include specific details about the key and value types
+ * for map columns.
+ *
+ * This class facilitates the configuration of map columns, allowing specification of
+ * the types of keys and values stored in the map.
+ *
+ *
+ * Example usage:
+ *
+ * {@code
+ * ColumnDefinitionMap mapColumn = new ColumnDefinitionMap(ColumnTypes.TEXT, ColumnTypes.INT);
+ * ColumnTypes keyType = mapColumn.getKeyType();
+ * ColumnTypes valueType = mapColumn.getValueType();
+ * }
+ *
+ */
+@Getter
+@Setter
+public class ColumnDefinitionMap extends ColumnDefinition {
+
+ /**
+ * The data type of the keys in the map.
+ */
+ private ColumnTypes keyType;
+
+ /**
+ * The data type of the values in the map.
+ */
+ private ColumnTypes valueType;
+
+ /**
+ * Constructs a new {@code ColumnDefinitionMap} instance with the column type set to {@link ColumnTypes#MAP}.
+ */
+ public ColumnDefinitionMap() {
+ super(ColumnTypes.MAP);
+ }
+
+ /**
+ * Constructs a new {@code ColumnDefinitionMap} instance with the specified key and value types.
+ *
+ * @param keyType the data type of the keys in the map
+ * @param valueType the data type of the values in the map
+ */
+ public ColumnDefinitionMap(ColumnTypes keyType, ColumnTypes valueType) {
+ this();
+ this.keyType = keyType;
+ this.valueType = valueType;
+ }
+}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionSet.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionSet.java
similarity index 91%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionSet.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionSet.java
index ab1082cd..41883950 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnDefinitionSet.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionSet.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.columns;
+package com.datastax.astra.client.tables.definition.columns;
/*-
* #%L
@@ -22,7 +22,6 @@
import lombok.Getter;
import lombok.Setter;
-import lombok.experimental.Accessors;
@Getter @Setter
public class ColumnDefinitionSet extends ColumnDefinition {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionVector.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionVector.java
new file mode 100644
index 00000000..3c64672b
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnDefinitionVector.java
@@ -0,0 +1,107 @@
+package com.datastax.astra.client.tables.definition.columns;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+import com.datastax.astra.client.core.vector.SimilarityMetric;
+import com.datastax.astra.client.core.vectorize.VectorServiceOptions;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * Represents a column definition for vector-based data.
+ * Extends {@link ColumnDefinition} to include properties and methods
+ * specific to vector data such as dimension, similarity metric, and vectorization service.
+ *
+ * This class facilitates the configuration of vector columns in a data schema.
+ *
+ *
+ * Example usage:
+ *
+ * {@code
+ * ColumnDefinitionVector vectorColumn = new ColumnDefinitionVector()
+ * .dimension(128)
+ * .metric(SimilarityMetric.COSINE);
+ * }
+ *
+ */
+@Getter
+@Setter
+public class ColumnDefinitionVector extends ColumnDefinition {
+
+ /**
+ * The dimension of the vector.
+ * Represents the number of components in the vector space.
+ */
+ private Integer dimension;
+
+ /**
+ * The similarity metric to be used for comparing vectors.
+ * Common metrics include cosine similarity, Euclidean distance, etc.
+ */
+ private SimilarityMetric metric;
+
+ /**
+ * The service options for vectorization.
+ * Configures how vectors are generated or processed.
+ */
+ private VectorServiceOptions service;
+
+ /**
+ * Constructs a new {@code ColumnDefinitionVector} instance
+ * with the column type set to {@link ColumnTypes#VECTOR}.
+ */
+ public ColumnDefinitionVector() {
+ super(ColumnTypes.VECTOR);
+ }
+
+ /**
+ * Sets the dimension of the vector and returns the updated instance.
+ *
+ * @param dimension the dimension of the vector
+ * @return this {@code ColumnDefinitionVector} instance
+ */
+ public ColumnDefinitionVector dimension(int dimension) {
+ this.dimension = dimension;
+ return this;
+ }
+
+ /**
+ * Sets the similarity metric for vector comparison and returns the updated instance.
+ *
+ * @param m the similarity metric
+ * @return this {@code ColumnDefinitionVector} instance
+ */
+ public ColumnDefinitionVector metric(SimilarityMetric m) {
+ this.metric = m;
+ return this;
+ }
+
+ /**
+ * Sets the vectorization service options and returns the updated instance.
+ *
+ * @param service the vectorization service options
+ * @return this {@code ColumnDefinitionVector} instance
+ */
+ public ColumnDefinitionVector service(VectorServiceOptions service) {
+ this.service = service;
+ return this;
+ }
+}
\ No newline at end of file
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnTypeMapper.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnTypeMapper.java
similarity index 98%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnTypeMapper.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnTypeMapper.java
index 44e10e70..f2baa421 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/columns/ColumnTypeMapper.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnTypeMapper.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.columns;
+package com.datastax.astra.client.tables.definition.columns;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnTypes.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnTypes.java
new file mode 100644
index 00000000..5eb658cd
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/ColumnTypes.java
@@ -0,0 +1,176 @@
+package com.datastax.astra.client.tables.definition.columns;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+import lombok.Getter;
+/**
+ * Represents the various column types supported in a database schema.
+ * Each column type is associated with a string representation.
+ *
+ * This enum includes common types like {@code TEXT}, {@code INT}, and {@code UUID},
+ * as well as specialized types such as {@code VECTOR} and {@code UNSUPPORTED}.
+ *
+ *
+ * Example usage:
+ *
+ * {@code
+ * ColumnTypes columnType = ColumnTypes.TEXT;
+ * String columnValue = columnType.getValue();
+ * }
+ *
+ */
+@Getter
+public enum ColumnTypes {
+
+ /**
+ * ASCII string type.
+ */
+ ASCII("ascii"),
+
+ /**
+ * 64-bit signed integer.
+ */
+ BIGINT("bigint"),
+
+ /**
+ * Binary large object (BLOB) type.
+ */
+ BLOB("blob"),
+
+ /**
+ * Boolean type, representing true or false values.
+ */
+ BOOLEAN("boolean"),
+
+ /**
+ * Date type, storing only the date part without a time zone.
+ */
+ DATE("date"),
+
+ /**
+ * Arbitrary precision decimal number.
+ */
+ DECIMAL("decimal"),
+
+ /**
+ * Double-precision floating-point number.
+ */
+ DOUBLE("double"),
+
+ /**
+ * Time duration type.
+ */
+ DURATION("duration"),
+
+ /**
+ * Single-precision floating-point number.
+ */
+ FLOAT("float"),
+
+ /**
+ * IP address type.
+ */
+ INET("inet"),
+
+ /**
+ * 32-bit signed integer.
+ */
+ INT("int"),
+
+ /**
+ * List collection type.
+ */
+ LIST("list"),
+
+ /**
+ * Map collection type, storing key-value pairs.
+ */
+ MAP("map"),
+
+ /**
+ * Set collection type, storing unique elements.
+ */
+ SET("set"),
+
+ /**
+ * 16-bit signed integer.
+ */
+ SMALLINT("smallint"),
+
+ /**
+ * Text or string type.
+ */
+ TEXT("text"),
+
+ /**
+ * Time type, storing only the time part.
+ */
+ TIME("time"),
+
+ /**
+ * Timestamp type, representing a specific date and time.
+ */
+ TIMESTAMP("timestamp"),
+
+ /**
+ * 8-bit signed integer.
+ */
+ TINYINT("tinyint"),
+
+ /**
+ * Arbitrary precision integer type.
+ */
+ VARINT("varint"),
+
+ /**
+ * Universally Unique Identifier (UUID) type.
+ */
+ UUID("uuid"),
+
+ /**
+ * Represents unsupported column types.
+ */
+ UNSUPPORTED("UNSUPPORTED"),
+
+ /**
+ * Represents an undefined column type.
+ */
+ UNDEFINED("undefined"),
+
+ /**
+ * Vector data type, typically used for machine learning or specialized computations.
+ */
+ VECTOR("vector");
+
+ /**
+ * The string representation of the column type.
+ */
+ private final String value;
+
+ /**
+ * Constructs a {@code ColumnTypes} enum constant with the specified string value.
+ *
+ * @param value the string representation of the column type
+ */
+ ColumnTypes(String value) {
+ this.value = value;
+ }
+}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableBaseIndexDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableBaseIndexDefinition.java
similarity index 93%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableBaseIndexDefinition.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableBaseIndexDefinition.java
index 374e3dae..5c2a4625 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableBaseIndexDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableBaseIndexDefinition.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.index;
+package com.datastax.astra.client.tables.definition.indexes;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDefinition.java
similarity index 91%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDefinition.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDefinition.java
index e4bc60a0..04adac92 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDefinition.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.index;
+package com.datastax.astra.client.tables.definition.indexes;
/*-
* #%L
@@ -20,9 +20,7 @@
* #L%
*/
-import lombok.Data;
import lombok.Getter;
-import lombok.NoArgsConstructor;
/**
* Index Definitions.
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDefinitionApiSupport.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDefinitionApiSupport.java
similarity index 93%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDefinitionApiSupport.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDefinitionApiSupport.java
index 8b7f6e70..5e011db5 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDefinitionApiSupport.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDefinitionApiSupport.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.index;
+package com.datastax.astra.client.tables.definition.indexes;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDefinitionOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDefinitionOptions.java
similarity index 95%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDefinitionOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDefinitionOptions.java
index e56591c1..31731d42 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDefinitionOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDefinitionOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.index;
+package com.datastax.astra.client.tables.definition.indexes;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDescriptor.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDescriptor.java
similarity index 96%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDescriptor.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDescriptor.java
index 9315ff4f..74786e73 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableIndexDescriptor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableIndexDescriptor.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.index;
+package com.datastax.astra.client.tables.definition.indexes;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableVectorIndexDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDefinition.java
similarity index 94%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableVectorIndexDefinition.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDefinition.java
index 1152ccff..27c01927 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableVectorIndexDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDefinition.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.index;
+package com.datastax.astra.client.tables.definition.indexes;
/*-
* #%L
@@ -20,7 +20,6 @@
* #L%
*/
-import lombok.Data;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableVectorIndexDefinitionOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDefinitionOptions.java
similarity index 95%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableVectorIndexDefinitionOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDefinitionOptions.java
index 4826d983..fd3fa276 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableVectorIndexDefinitionOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDefinitionOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.index;
+package com.datastax.astra.client.tables.definition.indexes;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableVectorIndexDescriptor.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDescriptor.java
similarity index 96%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableVectorIndexDescriptor.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDescriptor.java
index 8d172704..94d23ad0 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/index/TableVectorIndexDescriptor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/TableVectorIndexDescriptor.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.index;
+package com.datastax.astra.client.tables.definition.indexes;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/row/PrimaryKey.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/PrimaryKey.java
similarity index 92%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/row/PrimaryKey.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/PrimaryKey.java
index 8cb46007..571be0ff 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/row/PrimaryKey.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/PrimaryKey.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.row;
+package com.datastax.astra.client.tables.definition.rows;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/row/Row.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java
similarity index 98%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/row/Row.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java
index 7d007aff..063da771 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/row/Row.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.row;
+package com.datastax.astra.client.tables.definition.rows;
/*-
* #%L
@@ -20,10 +20,10 @@
* #L%
*/
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.types.DataAPIKeywords;
import com.datastax.astra.client.core.vector.DataAPIVector;
-import com.datastax.astra.client.tables.TableDuration;
+import com.datastax.astra.client.tables.definition.TableDuration;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.datastax.astra.internal.serdes.tables.RowSerializer;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
@@ -42,7 +42,6 @@
import java.time.Period;
import java.time.ZoneId;
import java.util.Calendar;
-import java.util.Collection;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/exceptions/TooManyRowsToCountException.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/exceptions/TooManyRowsToCountException.java
index 2e8e740e..26195a37 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/exceptions/TooManyRowsToCountException.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/exceptions/TooManyRowsToCountException.java
@@ -21,8 +21,8 @@
*/
import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.client.exception.ClientErrorCodes;
-import com.datastax.astra.client.exception.DataAPIException;
+import com.datastax.astra.client.exceptions.ClientErrorCodes;
+import com.datastax.astra.client.exceptions.DataAPIException;
/**
* Error when too many documents in the collection
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/Column.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/Column.java
index 2f697aa2..26d63844 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/Column.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/Column.java
@@ -21,7 +21,7 @@
*/
import com.datastax.astra.client.core.vector.SimilarityMetric;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/TableRowMapper.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/TableRowMapper.java
index f4da1e13..b328b454 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/TableRowMapper.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/TableRowMapper.java
@@ -20,7 +20,9 @@
* #L%
*/
-import com.datastax.astra.client.tables.row.Row;
+import com.datastax.astra.client.tables.definition.rows.Row;
+import com.datastax.astra.internal.reflection.EntityBeanDefinition;
+import com.datastax.astra.internal.reflection.EntityFieldDefinition;
public class TableRowMapper {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/CreateIndexOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/CreateIndexOptions.java
deleted file mode 100644
index 3a27d180..00000000
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/options/CreateIndexOptions.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.datastax.astra.client.tables.options;
-
-/*-
- * #%L
- * Data API Java Client
- * --
- * Copyright (C) 2024 DataStax
- * --
- * Licensed under the Apache License, Version 2.0
- * You may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
-
-public class CreateIndexOptions {
-}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIData.java b/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIData.java
index 70d15c35..a19d7456 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIData.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIData.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import lombok.Getter;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIResponse.java b/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIResponse.java
index 59c7408b..607092de 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIResponse.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIResponse.java
@@ -20,10 +20,10 @@
* #L%
*/
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.commands.Command;
-import com.datastax.astra.client.exception.DataAPIErrorDescriptor;
-import com.datastax.astra.client.exception.UnexpectedDataAPIResponseException;
+import com.datastax.astra.client.exceptions.DataAPIErrorDescriptor;
+import com.datastax.astra.client.exceptions.UnexpectedDataAPIResponseException;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.datastax.astra.internal.utils.Assert;
import com.fasterxml.jackson.annotation.JsonIgnore;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIStatus.java b/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIStatus.java
index 91724f64..59b65a6f 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIStatus.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/api/DataAPIStatus.java
@@ -20,8 +20,8 @@
* #L%
*/
-import com.datastax.astra.client.exception.DataAPIErrorDescriptor;
-import com.datastax.astra.client.tables.columns.ColumnDefinition;
+import com.datastax.astra.client.exceptions.DataAPIErrorDescriptor;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinition;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/command/AbstractCommandRunner.java b/astra-db-java/src/main/java/com/datastax/astra/internal/command/AbstractCommandRunner.java
index cfa5d10e..42fd0851 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/command/AbstractCommandRunner.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/command/AbstractCommandRunner.java
@@ -26,15 +26,13 @@
import com.datastax.astra.client.core.http.HttpClientOptions;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.client.core.options.TimeoutOptions;
-import com.datastax.astra.client.exception.DataAPIResponseException;
+import com.datastax.astra.client.exceptions.DataAPIResponseException;
import com.datastax.astra.internal.api.ApiResponseHttp;
import com.datastax.astra.internal.api.DataAPIResponse;
import com.datastax.astra.internal.http.RetryHttpClient;
import com.datastax.astra.internal.serdes.DataAPISerializer;
-import com.datastax.astra.internal.serdes.DatabaseSerializer;
import com.datastax.astra.internal.utils.Assert;
import com.datastax.astra.internal.utils.CompletableFutures;
-import com.dtsx.astra.sdk.db.domain.Database;
import com.evanlennick.retry4j.Status;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
@@ -52,7 +50,7 @@
import java.util.function.Consumer;
import java.util.stream.Collectors;
-import static com.datastax.astra.client.exception.InvalidEnvironmentException.throwErrorRestrictedAstra;
+import static com.datastax.astra.client.exceptions.InvalidEnvironmentException.throwErrorRestrictedAstra;
import static com.datastax.astra.internal.http.RetryHttpClient.CONTENT_TYPE_JSON;
import static com.datastax.astra.internal.http.RetryHttpClient.HEADER_ACCEPT;
import static com.datastax.astra.internal.http.RetryHttpClient.HEADER_AUTHORIZATION;
@@ -62,7 +60,37 @@
import static com.datastax.astra.internal.http.RetryHttpClient.HEADER_USER_AGENT;
/**
- * Execute the command and parse results throwing DataApiResponseException when needed.
+ * Abstract base class for executing commands and handling their results.
+ *
+ * This class provides a template for implementing a command runner that executes commands
+ * with specific options and parses their results. It ensures consistent error handling by
+ * throwing a {@link DataAPIResponseException} when necessary.
+ *
+ *
+ * Subclasses must implement the command execution logic as required by the specific context.
+ *
+ * @param the type of options used by the command runner, extending {@link BaseOptions}
+ *
+ * Example usage:
+ *
+ * {@code
+ * public class MyCommandRunner extends AbstractCommandRunner {
+ *
+ * @Override
+ * protected void runCommand(MyOptions options) {
+ * // Implement the command execution logic here
+ * }
+ *
+ * @Override
+ * protected void parseResults() {
+ * // Implement result parsing logic here
+ * }
+ * }
+ *
+ * MyCommandRunner runner = new MyCommandRunner();
+ * runner.execute(new MyOptions());
+ * }
+ *
*/
@Slf4j
@Getter
@@ -119,9 +147,7 @@ public abstract class AbstractCommandRunner> impl
/** Api Endpoint for the API. */
protected String apiEndpoint;
- /**
- * Default command options when not override
- */
+ /** Default command options when not override. */
protected OPTIONS options;
/**
@@ -130,6 +156,14 @@ public abstract class AbstractCommandRunner> impl
protected AbstractCommandRunner() {
}
+ /**
+ * Constructor with the API endpoint and default options.
+ *
+ * @param apiEndpoint
+ * the API endpoint
+ * @param options
+ * the default options
+ */
public AbstractCommandRunner(String apiEndpoint, OPTIONS options) {
Assert.hasLength(apiEndpoint, "apiEndpoint");
Assert.notNull(options, "options");
@@ -320,7 +354,6 @@ public DOC runCommand(Command command, BaseOptions> options, Class
* operations to execute
* @param observers
* list of observers to check
- *
*/
private void notifyASync(Consumer lambda, List observers) {
if (observers != null) {
@@ -330,12 +363,28 @@ private void notifyASync(Consumer lambda, List
}
}
+ /**
+ * Validates that the current options are configured for Astra.
+ *
+ *
+ * This method ensures that the operation is being performed in an Astra environment.
+ * If the options are not set for Astra, it throws an exception with details about the restriction.
+ *
+ *
+ * @throws IllegalStateException if the configuration is not set for Astra
+ */
protected void assertIsAstra() {
if (!options.getDataAPIClientOptions().isAstra()) {
throwErrorRestrictedAstra("getRegion", options.getDataAPIClientOptions().getDestination());
}
}
+ /**
+ * Gets the serializer currently in place to parse inputs and outputs.
+ *
+ * @return
+ * the serializer
+ */
protected DataAPISerializer getSerializer() {
return this.options.getSerializer();
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/command/LoggingCommandObserver.java b/astra-db-java/src/main/java/com/datastax/astra/internal/command/LoggingCommandObserver.java
index 0be6d790..7b445810 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/command/LoggingCommandObserver.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/command/LoggingCommandObserver.java
@@ -21,9 +21,7 @@
*/
import com.datastax.astra.internal.api.DataAPIData;
-import com.datastax.astra.client.exception.DataAPIErrorDescriptor;
-import com.datastax.astra.internal.serdes.DataAPISerializer;
-import com.datastax.astra.internal.serdes.DatabaseSerializer;
+import com.datastax.astra.client.exceptions.DataAPIErrorDescriptor;
import com.datastax.astra.internal.utils.AnsiUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/http/RetryHttpClient.java b/astra-db-java/src/main/java/com/datastax/astra/internal/http/RetryHttpClient.java
index 98b32fbd..cd9673ac 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/http/RetryHttpClient.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/http/RetryHttpClient.java
@@ -23,8 +23,8 @@
import com.datastax.astra.client.core.http.Caller;
import com.datastax.astra.client.core.http.HttpClientOptions;
import com.datastax.astra.client.core.options.TimeoutOptions;
-import com.datastax.astra.client.exception.DataAPIException;
-import com.datastax.astra.client.exception.DataAPIHttpException;
+import com.datastax.astra.client.exceptions.DataAPIException;
+import com.datastax.astra.client.exceptions.DataAPIHttpException;
import com.datastax.astra.internal.api.ApiResponseHttp;
import com.evanlennick.retry4j.CallExecutorBuilder;
import com.evanlennick.retry4j.Status;
@@ -46,7 +46,7 @@
import java.util.concurrent.Callable;
import java.util.stream.Collectors;
-import static com.datastax.astra.client.exception.DataAPIException.ERROR_CODE_HTTP;
+import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_HTTP;
/**
* Http Client using JDK11 client with a retry mechanism.
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/EntityBeanDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityBeanDefinition.java
similarity index 91%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/EntityBeanDefinition.java
rename to astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityBeanDefinition.java
index f4d1b25f..c4b6cb98 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/EntityBeanDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityBeanDefinition.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.mapping;
+package com.datastax.astra.internal.reflection;
/*-
* #%L
@@ -20,10 +20,14 @@
* #L%
*/
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.vector.SimilarityMetric;
-import com.datastax.astra.client.tables.columns.ColumnTypeMapper;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypeMapper;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
+import com.datastax.astra.client.tables.mapping.Column;
+import com.datastax.astra.client.tables.mapping.EntityTable;
+import com.datastax.astra.client.tables.mapping.PartitionBy;
+import com.datastax.astra.client.tables.mapping.PartitionSort;
import com.dtsx.astra.sdk.utils.Utils;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -44,8 +48,16 @@
import java.util.stream.Collectors;
/**
- * Bean introspector will get information of a Bean to populate fields
- * directly from the output.
+ * Provides introspection and metadata for a JavaBean entity.
+ *
+ * This class inspects a JavaBean of type {@code T} to extract and manage metadata about its properties.
+ * It is used to populate fields directly based on the output or other sources.
+ *
+ *
+ * The {@code EntityBeanDefinition} is useful in scenarios where JavaBean introspection is needed
+ * for tasks such as data mapping, serialization, or populating object fields dynamically.
+ *
+ * @param the type of the JavaBean entity being introspected
*/
@Slf4j
@Data
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/EntityFieldDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityFieldDefinition.java
similarity index 91%
rename from astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/EntityFieldDefinition.java
rename to astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityFieldDefinition.java
index ff72b856..b5867ff1 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/EntityFieldDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/EntityFieldDefinition.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.tables.mapping;
+package com.datastax.astra.internal.reflection;
/*-
* #%L
@@ -22,11 +22,10 @@
import com.datastax.astra.client.core.query.SortOrder;
import com.datastax.astra.client.core.vector.SimilarityMetric;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
import lombok.Data;
import java.lang.reflect.Method;
-import java.lang.reflect.Type;
@Data
public class EntityFieldDefinition {
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/DataAPISerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/DataAPISerializer.java
index c483c1cf..580a3e7b 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/DataAPISerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/DataAPISerializer.java
@@ -20,13 +20,13 @@
* #L%
*/
-import com.datastax.astra.client.exception.DataAPIException;
+import com.datastax.astra.client.exceptions.DataAPIException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Objects;
-import static com.datastax.astra.client.exception.DataAPIException.ERROR_CODE_SERIALIZATION;
+import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_SERIALIZATION;
/**
* Definition of a serializer for the Data API
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/DatabaseSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/DatabaseSerializer.java
index 7efc0ae4..598ee099 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/DatabaseSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/DatabaseSerializer.java
@@ -36,10 +36,10 @@
* #L%
*/
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
import com.datastax.astra.client.core.vector.DataAPIVector;
import com.datastax.astra.client.core.vector.SimilarityMetric;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
import com.datastax.astra.internal.serdes.collections.CollectionDefaultIdTypeDeserializer;
import com.datastax.astra.internal.serdes.collections.CollectionDefaultIdTypeSerializer;
import com.datastax.astra.internal.serdes.shared.DataAPIVectorDeserializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/CollectionDefaultIdTypeDeserializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/CollectionDefaultIdTypeDeserializer.java
index 8fce2e72..328190dc 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/CollectionDefaultIdTypeDeserializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/CollectionDefaultIdTypeDeserializer.java
@@ -20,8 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
-import com.datastax.astra.client.core.vector.SimilarityMetric;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/CollectionDefaultIdTypeSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/CollectionDefaultIdTypeSerializer.java
index 65dd87a0..a5117ede 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/CollectionDefaultIdTypeSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/CollectionDefaultIdTypeSerializer.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/DocumentSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/DocumentSerializer.java
index 08b1c196..35085f54 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/DocumentSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/DocumentSerializer.java
@@ -36,7 +36,7 @@
* #L%
*/
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
import com.datastax.astra.client.core.types.ObjectId;
import com.datastax.astra.client.core.types.UUIDv6;
import com.datastax.astra.client.core.types.UUIDv7;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/ColumnTypeDeserializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/ColumnTypeDeserializer.java
index 94b3594f..8e29cc7f 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/ColumnTypeDeserializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/ColumnTypeDeserializer.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.tables.columns.ColumnTypes;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/ColumnTypeSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/ColumnTypeSerializer.java
index 6fb85601..5a944805 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/ColumnTypeSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/ColumnTypeSerializer.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.tables.columns.ColumnTypes;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/RowSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/RowSerializer.java
index 44c9b83c..033e0632 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/RowSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/RowSerializer.java
@@ -38,8 +38,8 @@
import com.datastax.astra.client.core.vector.DataAPIVector;
import com.datastax.astra.client.core.vector.SimilarityMetric;
-import com.datastax.astra.client.tables.TableDuration;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
+import com.datastax.astra.client.tables.definition.TableDuration;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.datastax.astra.internal.serdes.shared.DataAPIVectorDeserializer;
import com.datastax.astra.internal.serdes.shared.DataAPIVectorSerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableDurationDeserializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableDurationDeserializer.java
index dccfe7ec..ae58ff95 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableDurationDeserializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableDurationDeserializer.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.tables.TableDuration;
+import com.datastax.astra.client.tables.definition.TableDuration;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableDurationSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableDurationSerializer.java
index 0c1a5245..b3e782c7 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableDurationSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/TableDurationSerializer.java
@@ -21,7 +21,7 @@
*/
import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.client.tables.TableDuration;
+import com.datastax.astra.client.tables.definition.TableDuration;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
diff --git a/astra-db-java/src/main/java/overview.html b/astra-db-java/src/main/java/overview.html
index 15c5c5c7..32499351 100644
--- a/astra-db-java/src/main/java/overview.html
+++ b/astra-db-java/src/main/java/overview.html
@@ -49,7 +49,7 @@ QuickStart
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.paging.FindIterable;
import java.util.List;
import static com.datastax.astra.client.model.Filters.eq;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractCollectionITTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractCollectionITTest.java
index d3aecd1c..3cef3c03 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractCollectionITTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractCollectionITTest.java
@@ -1,18 +1,18 @@
package com.datastax.astra.test.integration;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.documents.Update;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.Update;
import com.datastax.astra.client.collections.exceptions.TooManyDocumentsToCountException;
-import com.datastax.astra.client.collections.options.CollectionDeleteOneOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOneAndReplaceOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOneAndUpdateOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOneOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.options.CollectionInsertManyOptions;
-import com.datastax.astra.client.collections.results.CollectionInsertOneResult;
-import com.datastax.astra.client.collections.results.CollectionUpdateResult;
+import com.datastax.astra.client.collections.commands.options.CollectionDeleteOneOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneAndReplaceOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneAndUpdateOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionInsertManyOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertOneResult;
+import com.datastax.astra.client.collections.commands.results.CollectionUpdateResult;
import com.datastax.astra.client.core.commands.Command;
import com.datastax.astra.client.core.options.TimeoutOptions;
import com.datastax.astra.client.core.paging.CollectionCursor;
@@ -44,7 +44,7 @@
import java.util.stream.Collectors;
import java.util.stream.IntStream;
-import static com.datastax.astra.client.collections.documents.ReturnDocument.AFTER;
+import static com.datastax.astra.client.collections.commands.ReturnDocument.AFTER;
import static com.datastax.astra.client.core.options.DataAPIClientOptions.MAX_COUNT;
import static com.datastax.astra.client.core.query.Filters.eq;
import static com.datastax.astra.client.core.query.Filters.gt;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractDataAPITest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractDataAPITest.java
index 2e9f7bfd..2b5b7413 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractDataAPITest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractDataAPITest.java
@@ -5,7 +5,7 @@
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.admin.AstraDBAdmin;
import com.datastax.astra.client.admin.DatabaseAdmin;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.types.ObjectId;
import com.dtsx.astra.sdk.db.domain.CloudProviderType;
import com.dtsx.astra.sdk.utils.AstraEnvironment;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractDatabaseTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractDatabaseTest.java
index d1077c3d..281e05ef 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractDatabaseTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractDatabaseTest.java
@@ -1,27 +1,27 @@
package com.datastax.astra.test.integration;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.results.CollectionInsertManyResult;
-import com.datastax.astra.client.collections.results.CollectionInsertOneResult;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertOneResult;
import com.datastax.astra.client.core.auth.EmbeddingAPIKeyHeaderProvider;
import com.datastax.astra.client.core.commands.Command;
import com.datastax.astra.client.core.types.ObjectId;
import com.datastax.astra.client.core.types.UUIDv6;
import com.datastax.astra.client.core.types.UUIDv7;
import com.datastax.astra.client.core.vector.SimilarityMetric;
-import com.datastax.astra.client.databases.options.ListTablesOptions;
-import com.datastax.astra.client.exception.DataAPIException;
+import com.datastax.astra.client.tables.commands.options.ListTablesOptions;
+import com.datastax.astra.client.exceptions.DataAPIException;
import com.datastax.astra.client.tables.Table;
-import com.datastax.astra.client.tables.TableDefinition;
-import com.datastax.astra.client.tables.TableDescriptor;
+import com.datastax.astra.client.tables.definition.TableDefinition;
+import com.datastax.astra.client.tables.definition.TableDescriptor;
import com.datastax.astra.client.tables.TableOptions;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionVector;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
-import com.datastax.astra.client.tables.ddl.CreateTableOptions;
-import com.datastax.astra.client.tables.row.Row;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionVector;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
+import com.datastax.astra.client.tables.commands.options.CreateTableOptions;
+import com.datastax.astra.client.tables.definition.rows.Row;
import com.datastax.astra.internal.api.DataAPIResponse;
import com.datastax.astra.test.model.TableEntityGameWithAnnotation;
import com.datastax.astra.test.model.TableEntityGameWithAnnotationAllHints;
@@ -40,13 +40,12 @@
import java.util.Optional;
import java.util.UUID;
-import static com.datastax.astra.client.collections.CollectionDefaultIdTypes.OBJECT_ID;
-import static com.datastax.astra.client.collections.CollectionDefaultIdTypes.UUIDV6;
-import static com.datastax.astra.client.collections.CollectionDefaultIdTypes.UUIDV7;
+import static com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes.OBJECT_ID;
+import static com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes.UUIDV6;
+import static com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes.UUIDV7;
import static com.datastax.astra.client.core.query.Filters.eq;
import static com.datastax.astra.client.core.query.Sort.ascending;
import static com.datastax.astra.client.core.vector.SimilarityMetric.COSINE;
-import static com.datastax.astra.client.tables.ddl.DropTableOptions.IF_EXISTS;
import static java.time.Duration.ofSeconds;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractVectorizeITTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractVectorizeITTest.java
index 61491743..4fe353fc 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractVectorizeITTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/AbstractVectorizeITTest.java
@@ -1,23 +1,22 @@
package com.datastax.astra.test.integration;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
import com.datastax.astra.client.collections.CollectionOptions;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOneOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.options.CollectionInsertManyOptions;
-import com.datastax.astra.client.collections.results.CollectionInsertManyResult;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionInsertManyOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
import com.datastax.astra.client.core.auth.EmbeddingAPIKeyHeaderProvider;
import com.datastax.astra.client.core.auth.EmbeddingHeadersProvider;
-import com.datastax.astra.client.core.commands.BaseOptions;
import com.datastax.astra.client.core.paging.FindIterable;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.core.types.DataAPIKeywords;
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.client.core.vectorize.EmbeddingProvider;
-import com.datastax.astra.client.databases.options.CreateCollectionOptions;
+import com.datastax.astra.client.collections.commands.options.CreateCollectionOptions;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.TestMethodOrder;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/dev_vectorize/AstraDevVectorizeAwsBedRockITTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/dev_vectorize/AstraDevVectorizeAwsBedRockITTest.java
index 3c22794f..745cf20f 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/dev_vectorize/AstraDevVectorizeAwsBedRockITTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/dev_vectorize/AstraDevVectorizeAwsBedRockITTest.java
@@ -1,11 +1,11 @@
package com.datastax.astra.test.integration.dev_vectorize;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOneOptions;
-import com.datastax.astra.client.collections.options.CollectionInsertManyOptions;
-import com.datastax.astra.client.collections.results.CollectionInsertManyResult;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionInsertManyOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
import com.datastax.astra.client.core.auth.AWSEmbeddingHeadersProvider;
import com.datastax.astra.client.core.auth.EmbeddingHeadersProvider;
import com.datastax.astra.client.core.query.Projection;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/dev_vectorize/AstraDevVectorizeHuggingFaceDedicatedITTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/dev_vectorize/AstraDevVectorizeHuggingFaceDedicatedITTest.java
index cec08021..7e82e2e6 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/dev_vectorize/AstraDevVectorizeHuggingFaceDedicatedITTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/dev_vectorize/AstraDevVectorizeHuggingFaceDedicatedITTest.java
@@ -1,8 +1,8 @@
package com.datastax.astra.test.integration.dev_vectorize;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.auth.EmbeddingAPIKeyHeaderProvider;
import com.datastax.astra.client.core.results.FindEmbeddingProvidersResult;
import com.datastax.astra.test.integration.AbstractVectorizeITTest;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalCollectionITTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalCollectionITTest.java
index 151aaabb..7ded062d 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalCollectionITTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalCollectionITTest.java
@@ -2,21 +2,21 @@
import com.datastax.astra.client.DataAPIClients;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.collections.exceptions.TooManyDocumentsToCountException;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.options.CollectionInsertManyOptions;
-import com.datastax.astra.client.collections.options.CollectionUpdateManyOptions;
-import com.datastax.astra.client.collections.results.CollectionInsertManyResult;
-import com.datastax.astra.client.collections.results.CollectionUpdateResult;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionInsertManyOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionUpdateManyOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
+import com.datastax.astra.client.collections.commands.results.CollectionUpdateResult;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.client.core.paging.FindIterable;
import com.datastax.astra.client.core.paging.Page;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.databases.options.ListCollectionOptions;
-import com.datastax.astra.client.exception.DataAPIResponseException;
+import com.datastax.astra.client.collections.commands.options.ListCollectionOptions;
+import com.datastax.astra.client.exceptions.DataAPIResponseException;
import com.datastax.astra.test.integration.AbstractCollectionITTest;
import com.dtsx.astra.sdk.db.domain.CloudProviderType;
import com.dtsx.astra.sdk.utils.AstraEnvironment;
@@ -27,7 +27,7 @@
import java.util.List;
import java.util.Optional;
-import static com.datastax.astra.client.collections.documents.Updates.set;
+import static com.datastax.astra.client.collections.commands.Updates.set;
import static com.datastax.astra.client.core.query.Filters.and;
import static com.datastax.astra.client.core.query.Filters.eq;
import static com.datastax.astra.client.core.query.Filters.exists;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalDatabaseAdminITTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalDatabaseAdminITTest.java
index 5715ee6f..93deb636 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalDatabaseAdminITTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalDatabaseAdminITTest.java
@@ -4,7 +4,7 @@
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.admin.DataAPIDatabaseAdmin;
import com.datastax.astra.client.admin.DatabaseAdmin;
-import com.datastax.astra.client.exception.DataAPIException;
+import com.datastax.astra.client.exceptions.DataAPIException;
import com.datastax.astra.client.keyspaces.KeyspaceOptions;
import com.datastax.astra.test.integration.AbstractDatabaseAdminITTest;
import com.dtsx.astra.sdk.db.domain.CloudProviderType;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalDatabaseITTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalDatabaseITTest.java
index e7fd21c4..8f0add4f 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalDatabaseITTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalDatabaseITTest.java
@@ -8,12 +8,10 @@
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.core.auth.UsernamePasswordTokenProvider;
-import com.datastax.astra.client.exception.DataAPIException;
-import com.datastax.astra.client.exception.DataAPIResponseException;
+import com.datastax.astra.client.exceptions.DataAPIException;
import com.datastax.astra.client.core.commands.Command;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.http.HttpProxy;
-import com.datastax.astra.client.exception.UnexpectedDataAPIResponseException;
import com.datastax.astra.test.integration.AbstractDatabaseTest;
import com.dtsx.astra.sdk.db.domain.CloudProviderType;
import com.dtsx.astra.sdk.utils.AstraEnvironment;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalTableITTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalTableITTest.java
index 225351dc..2dd0e51c 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalTableITTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/integration/local/LocalTableITTest.java
@@ -16,30 +16,30 @@
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.databases.DatabaseOptions;
import com.datastax.astra.client.tables.Table;
-import com.datastax.astra.client.tables.TableDefinition;
-import com.datastax.astra.client.tables.TableDuration;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionVector;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
-import com.datastax.astra.client.tables.ddl.AlterTableAddColumns;
-import com.datastax.astra.client.tables.ddl.AlterTableAddVectorize;
-import com.datastax.astra.client.tables.ddl.AlterTableDropColumns;
-import com.datastax.astra.client.tables.ddl.AlterTableDropVectorize;
-import com.datastax.astra.client.tables.ddl.CreateIndexOptions;
-import com.datastax.astra.client.tables.ddl.CreateTableOptions;
-import com.datastax.astra.client.tables.ddl.CreateVectorIndexOptions;
-import com.datastax.astra.client.tables.ddl.DropTableIndexOptions;
-import com.datastax.astra.client.tables.index.TableIndexDefinition;
-import com.datastax.astra.client.tables.index.TableIndexDefinitionOptions;
-import com.datastax.astra.client.tables.index.TableVectorIndexDefinition;
-import com.datastax.astra.client.tables.index.TableVectorIndexDefinitionOptions;
-import com.datastax.astra.client.tables.options.TableFindOneOptions;
-import com.datastax.astra.client.tables.options.TableFindOptions;
-import com.datastax.astra.client.tables.options.TableInsertManyOptions;
-import com.datastax.astra.client.tables.results.TableInsertManyResult;
-import com.datastax.astra.client.tables.results.TableInsertOneResult;
-import com.datastax.astra.client.tables.results.TableUpdateResult;
-import com.datastax.astra.client.tables.row.Row;
-import com.datastax.astra.client.tables.row.TableUpdate;
+import com.datastax.astra.client.tables.definition.TableDefinition;
+import com.datastax.astra.client.tables.definition.TableDuration;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionVector;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
+import com.datastax.astra.client.tables.commands.AlterTableAddColumns;
+import com.datastax.astra.client.tables.commands.AlterTableAddVectorize;
+import com.datastax.astra.client.tables.commands.AlterTableDropColumns;
+import com.datastax.astra.client.tables.commands.AlterTableDropVectorize;
+import com.datastax.astra.client.tables.commands.options.CreateIndexOptions;
+import com.datastax.astra.client.tables.commands.options.CreateTableOptions;
+import com.datastax.astra.client.tables.commands.options.CreateVectorIndexOptions;
+import com.datastax.astra.client.tables.commands.options.DropTableIndexOptions;
+import com.datastax.astra.client.tables.definition.indexes.TableIndexDefinition;
+import com.datastax.astra.client.tables.definition.indexes.TableIndexDefinitionOptions;
+import com.datastax.astra.client.tables.definition.indexes.TableVectorIndexDefinition;
+import com.datastax.astra.client.tables.definition.indexes.TableVectorIndexDefinitionOptions;
+import com.datastax.astra.client.tables.commands.options.TableFindOneOptions;
+import com.datastax.astra.client.tables.commands.options.TableFindOptions;
+import com.datastax.astra.client.tables.commands.options.TableInsertManyOptions;
+import com.datastax.astra.client.tables.commands.results.TableInsertManyResult;
+import com.datastax.astra.client.tables.commands.results.TableInsertOneResult;
+import com.datastax.astra.client.tables.commands.results.TableUpdateResult;
+import com.datastax.astra.client.tables.definition.rows.Row;
+import com.datastax.astra.client.tables.commands.TableUpdateOperation;
import com.datastax.astra.internal.serdes.tables.RowSerializer;
import com.datastax.astra.test.integration.AbstractTableITTest;
import com.datastax.astra.test.model.TableCompositeAnnotatedRow;
@@ -71,8 +71,8 @@
import static com.datastax.astra.client.core.query.Sort.ascending;
import static com.datastax.astra.client.core.query.Sort.descending;
import static com.datastax.astra.client.core.vector.SimilarityMetric.COSINE;
-import static com.datastax.astra.client.tables.ddl.CreateTableOptions.IF_NOT_EXISTS;
-import static com.datastax.astra.client.tables.ddl.DropTableOptions.IF_EXISTS;
+import static com.datastax.astra.client.tables.commands.options.CreateTableOptions.IF_NOT_EXISTS;
+import static com.datastax.astra.client.tables.commands.options.DropTableOptions.IF_EXISTS;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
/**
@@ -673,7 +673,7 @@ public void should_updateOne() {
assertThat(table.findOne(johnFilter)).isPresent();
// Update the document
- TableUpdateResult birthday = table.updateOne(johnFilter, TableUpdate.create()
+ TableUpdateResult birthday = table.updateOne(johnFilter, TableUpdateOperation.create()
.set("age", 43));
//.updateMul(Map.of("price", 1.1d)));
Assertions.assertThat(birthday.getMatchedCount()).isEqualTo(1);
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/model/TableCompositeAnnotatedRow.java b/astra-db-java/src/test/java/com/datastax/astra/test/model/TableCompositeAnnotatedRow.java
index 5f6b39d0..9712cf91 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/model/TableCompositeAnnotatedRow.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/model/TableCompositeAnnotatedRow.java
@@ -7,8 +7,8 @@
import lombok.Data;
import lombok.NoArgsConstructor;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.INT;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.TEXT;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.INT;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.TEXT;
@Data
@EntityTable("table_composite_pk_annotated")
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/model/TableEntityGameWithAnnotationAllHints.java b/astra-db-java/src/test/java/com/datastax/astra/test/model/TableEntityGameWithAnnotationAllHints.java
index 6b604bf2..d0e1fcb3 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/model/TableEntityGameWithAnnotationAllHints.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/model/TableEntityGameWithAnnotationAllHints.java
@@ -14,12 +14,12 @@
import java.time.Instant;
import java.util.Set;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.INT;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.SET;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.TEXT;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.TIMESTAMP;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.UUID;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.VECTOR;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.INT;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.SET;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.TEXT;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.TIMESTAMP;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.UUID;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.VECTOR;
@Data
@EntityTable("game_ann1")
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/model/TableSimpleAnnotatedRow.java b/astra-db-java/src/test/java/com/datastax/astra/test/model/TableSimpleAnnotatedRow.java
index 87ba6812..809c0b26 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/model/TableSimpleAnnotatedRow.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/model/TableSimpleAnnotatedRow.java
@@ -9,9 +9,9 @@
import lombok.Data;
import static com.datastax.astra.client.core.query.SortOrder.ASCENDING;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.BOOLEAN;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.INT;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.TEXT;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.BOOLEAN;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.INT;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.TEXT;
@Data
@Builder
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/unit/DataAPIExceptionsTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/unit/DataAPIExceptionsTest.java
index 9f75b01a..57a36fc9 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/unit/DataAPIExceptionsTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/unit/DataAPIExceptionsTest.java
@@ -1,6 +1,6 @@
package com.datastax.astra.test.unit;
-import com.datastax.astra.client.exception.UnexpectedDataAPIResponseException;
+import com.datastax.astra.client.exceptions.UnexpectedDataAPIResponseException;
import com.datastax.astra.client.core.commands.Command;
import com.datastax.astra.internal.api.DataAPIResponse;
import org.junit.jupiter.api.Test;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/unit/DataApiOptionsTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/unit/DataApiOptionsTest.java
index a251f522..59c6f164 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/unit/DataApiOptionsTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/unit/DataApiOptionsTest.java
@@ -2,29 +2,29 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.DataAPIDestination;
-import com.datastax.astra.client.collections.documents.ReturnDocument;
+import com.datastax.astra.client.collections.commands.ReturnDocument;
import com.datastax.astra.client.core.http.HttpClientOptions;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.client.collections.options.CollectionDeleteOneOptions;
-import com.datastax.astra.client.collections.results.CollectionDeleteResult;
-import com.datastax.astra.client.collections.options.CollectionFindOneAndDeleteOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOneAndReplaceOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOneAndUpdateOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOneOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.options.CollectionInsertManyOptions;
-import com.datastax.astra.client.collections.results.CollectionInsertOneResult;
-import com.datastax.astra.client.collections.options.CollectionReplaceOneOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionDeleteOneOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionDeleteResult;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneAndDeleteOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneAndReplaceOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneAndUpdateOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionInsertManyOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertOneResult;
+import com.datastax.astra.client.collections.commands.options.CollectionReplaceOneOptions;
import com.datastax.astra.client.core.options.TimeoutOptions;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.core.vector.SimilarityMetric;
-import com.datastax.astra.client.collections.documents.Update;
-import com.datastax.astra.client.collections.options.UpdateOneOptions;
-import com.datastax.astra.client.collections.documents.Updates;
+import com.datastax.astra.client.collections.commands.Update;
+import com.datastax.astra.client.collections.commands.options.UpdateOneOptions;
+import com.datastax.astra.client.collections.commands.Updates;
import com.datastax.astra.client.core.vector.VectorOptions;
import com.datastax.astra.client.core.vectorize.VectorServiceOptions;
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
-import com.datastax.astra.client.collections.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
import com.datastax.astra.client.core.http.HttpProxy;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.FilterOperator;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/unit/DocumentSerializationTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/unit/DocumentSerializationTest.java
index 0298de7e..4537d6e5 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/unit/DocumentSerializationTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/unit/DocumentSerializationTest.java
@@ -1,8 +1,8 @@
package com.datastax.astra.test.unit;
-import com.datastax.astra.client.collections.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
import com.datastax.astra.client.core.commands.Command;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.internal.serdes.collections.DocumentSerializer;
import org.junit.jupiter.api.Test;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/unit/FiltersTest.java b/astra-db-java/src/test/java/com/datastax/astra/test/unit/FiltersTest.java
index 56463daa..0f9ba6ff 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/unit/FiltersTest.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/unit/FiltersTest.java
@@ -1,6 +1,6 @@
package com.datastax.astra.test.unit;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
import com.datastax.astra.client.core.query.Projection;
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/unit/QuickStartTablesLocal.java b/astra-db-java/src/test/java/com/datastax/astra/test/unit/QuickStartTablesLocal.java
index e8252268..35608641 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/unit/QuickStartTablesLocal.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/unit/QuickStartTablesLocal.java
@@ -4,12 +4,12 @@
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.tables.Table;
-import com.datastax.astra.client.tables.TableDefinition;
-import com.datastax.astra.client.tables.results.TableInsertOneResult;
+import com.datastax.astra.client.tables.definition.TableDefinition;
+import com.datastax.astra.client.tables.commands.results.TableInsertOneResult;
import com.datastax.astra.client.tables.mapping.Column;
import com.datastax.astra.client.tables.mapping.EntityTable;
import com.datastax.astra.client.tables.mapping.PartitionBy;
-import com.datastax.astra.client.tables.row.Row;
+import com.datastax.astra.client.tables.definition.rows.Row;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -18,9 +18,9 @@
import java.util.Optional;
import static com.datastax.astra.client.core.options.DataAPIClientOptions.DEFAULT_KEYSPACE;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.INT;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.TEXT;
-import static com.datastax.astra.client.tables.ddl.CreateTableOptions.IF_NOT_EXISTS;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.INT;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.TEXT;
+import static com.datastax.astra.client.tables.commands.options.CreateTableOptions.IF_NOT_EXISTS;
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
public class QuickStartTablesLocal {
diff --git a/astra-db-java/src/test/java/com/datastax/astra/test/unit/WorkWithOptions.java b/astra-db-java/src/test/java/com/datastax/astra/test/unit/WorkWithOptions.java
index 0c424b86..96e00a5a 100644
--- a/astra-db-java/src/test/java/com/datastax/astra/test/unit/WorkWithOptions.java
+++ b/astra-db-java/src/test/java/com/datastax/astra/test/unit/WorkWithOptions.java
@@ -7,16 +7,16 @@
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.databases.options.CreateCollectionOptions;
-import com.datastax.astra.client.databases.options.DropCollectionOptions;
-import com.datastax.astra.client.databases.options.ListCollectionOptions;
+import com.datastax.astra.client.collections.commands.options.CreateCollectionOptions;
+import com.datastax.astra.client.collections.commands.options.DropCollectionOptions;
+import com.datastax.astra.client.collections.commands.options.ListCollectionOptions;
import com.datastax.astra.client.tables.Table;
-import com.datastax.astra.client.tables.TableDefinition;
+import com.datastax.astra.client.tables.definition.TableDefinition;
import com.datastax.astra.client.tables.TableOptions;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionVector;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
-import com.datastax.astra.client.tables.ddl.CreateTableOptions;
-import com.datastax.astra.client.tables.row.Row;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionVector;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
+import com.datastax.astra.client.tables.commands.options.CreateTableOptions;
+import com.datastax.astra.client.tables.definition.rows.Row;
import org.junit.jupiter.api.Test;
import java.time.Duration;
diff --git a/examples/src/main/java/QuickStartHCD.java b/examples/src/main/java/QuickStartHCD.java
index afd583de..e76eff90 100644
--- a/examples/src/main/java/QuickStartHCD.java
+++ b/examples/src/main/java/QuickStartHCD.java
@@ -1,10 +1,10 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.admin.DataAPIDatabaseAdmin;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
import com.datastax.astra.client.collections.CollectionOptions;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOneOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneOptions;
import com.datastax.astra.client.core.auth.EmbeddingAPIKeyHeaderProvider;
import com.datastax.astra.client.core.auth.UsernamePasswordTokenProvider;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
@@ -12,7 +12,7 @@
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.databases.DatabaseOptions;
-import com.datastax.astra.client.databases.options.CreateCollectionOptions;
+import com.datastax.astra.client.collections.commands.options.CreateCollectionOptions;
import com.datastax.astra.client.keyspaces.KeyspaceOptions;
import java.util.Optional;
diff --git a/examples/src/main/java/QuickStartLocal.java b/examples/src/main/java/QuickStartLocal.java
index 5663d685..7895d80a 100644
--- a/examples/src/main/java/QuickStartLocal.java
+++ b/examples/src/main/java/QuickStartLocal.java
@@ -1,8 +1,8 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
import com.datastax.astra.client.core.auth.UsernamePasswordTokenProvider;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.client.core.paging.FindIterable;
diff --git a/examples/src/main/java/QuickStartTraining.java b/examples/src/main/java/QuickStartTraining.java
index 190c8dca..cc20662c 100644
--- a/examples/src/main/java/QuickStartTraining.java
+++ b/examples/src/main/java/QuickStartTraining.java
@@ -1,8 +1,8 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.client.core.paging.FindIterable;
import com.datastax.astra.client.core.query.Filter;
diff --git a/examples/src/main/java/Quickstart.java b/examples/src/main/java/Quickstart.java
index 7fb0fdac..a3273497 100644
--- a/examples/src/main/java/Quickstart.java
+++ b/examples/src/main/java/Quickstart.java
@@ -1,12 +1,11 @@
import com.datastax.astra.client.collections.Collection;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.core.options.DataAPIClientOptions;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.core.paging.FindIterable;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
import static com.datastax.astra.client.core.query.Sort.vector;
import static com.datastax.astra.client.core.vector.SimilarityMetric.COSINE;
diff --git a/examples/src/main/java/com/datastax/astra/client/DataApiClientDemo.java b/examples/src/main/java/com/datastax/astra/client/DataApiClientDemo.java
index 5ff0cb2f..aa361a4c 100644
--- a/examples/src/main/java/com/datastax/astra/client/DataApiClientDemo.java
+++ b/examples/src/main/java/com/datastax/astra/client/DataApiClientDemo.java
@@ -2,8 +2,8 @@
import com.datastax.astra.client.admin.AstraDBAdmin;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.databases.DatabaseOptions;
diff --git a/examples/src/main/java/com/datastax/astra/client/GettingStarted.java b/examples/src/main/java/com/datastax/astra/client/GettingStarted.java
index 03c8719f..431b3608 100644
--- a/examples/src/main/java/com/datastax/astra/client/GettingStarted.java
+++ b/examples/src/main/java/com/datastax/astra/client/GettingStarted.java
@@ -1,9 +1,9 @@
package com.datastax.astra.client;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
import com.datastax.astra.client.core.paging.FindIterable;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.databases.Database;
diff --git a/examples/src/main/java/com/datastax/astra/client/admin/GetDatabaseInformation.java b/examples/src/main/java/com/datastax/astra/client/admin/GetDatabaseInformation.java
index e7517e41..47766f61 100644
--- a/examples/src/main/java/com/datastax/astra/client/admin/GetDatabaseInformation.java
+++ b/examples/src/main/java/com/datastax/astra/client/admin/GetDatabaseInformation.java
@@ -1,7 +1,7 @@
package com.datastax.astra.client.admin;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.databases.DatabaseInfo;
+import com.datastax.astra.client.databases.definition.DatabaseInfo;
import java.util.UUID;
diff --git a/examples/src/main/java/com/datastax/astra/client/admin/ListDatabases.java b/examples/src/main/java/com/datastax/astra/client/admin/ListDatabases.java
index 5fdfc96b..c69672ca 100644
--- a/examples/src/main/java/com/datastax/astra/client/admin/ListDatabases.java
+++ b/examples/src/main/java/com/datastax/astra/client/admin/ListDatabases.java
@@ -1,7 +1,7 @@
package com.datastax.astra.client.admin;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.databases.DatabaseInfo;
+import com.datastax.astra.client.databases.definition.DatabaseInfo;
public class ListDatabases {
public static void main(String[] args) {
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/ClearCollection.java b/examples/src/main/java/com/datastax/astra/client/collections/ClearCollection.java
index 9a502a0a..fb139c6a 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/ClearCollection.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/ClearCollection.java
@@ -1,7 +1,7 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.databases.Database;
public class ClearCollection {
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/CountDocuments.java b/examples/src/main/java/com/datastax/astra/client/collections/CountDocuments.java
index 345ac7c2..a6a62a61 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/CountDocuments.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/CountDocuments.java
@@ -1,7 +1,7 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.collections.exceptions.TooManyDocumentsToCountException;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/DeleteAll.java b/examples/src/main/java/com/datastax/astra/client/collections/DeleteAll.java
index 153452ad..56d548ec 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/DeleteAll.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/DeleteAll.java
@@ -1,8 +1,8 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.results.CollectionDeleteResult;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.commands.results.CollectionDeleteResult;
+import com.datastax.astra.client.collections.definition.documents.Document;
public class DeleteAll {
public static void main(String[] args) {
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/DeleteMany.java b/examples/src/main/java/com/datastax/astra/client/collections/DeleteMany.java
index 6362470b..c08f6383 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/DeleteMany.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/DeleteMany.java
@@ -1,8 +1,8 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.results.CollectionDeleteResult;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.commands.results.CollectionDeleteResult;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/DeleteOne.java b/examples/src/main/java/com/datastax/astra/client/collections/DeleteOne.java
index 42bb9652..685a1279 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/DeleteOne.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/DeleteOne.java
@@ -1,9 +1,9 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionDeleteOneOptions;
-import com.datastax.astra.client.collections.results.CollectionDeleteResult;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionDeleteOneOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionDeleteResult;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
import com.datastax.astra.client.core.query.Sort;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/Distinct.java b/examples/src/main/java/com/datastax/astra/client/collections/Distinct.java
index a49129f8..4c1dde34 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/Distinct.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/Distinct.java
@@ -2,7 +2,7 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.core.paging.CollectionDistinctIterable;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/EstimateCountDocuments.java b/examples/src/main/java/com/datastax/astra/client/collections/EstimateCountDocuments.java
index af1d11a6..dc96d357 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/EstimateCountDocuments.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/EstimateCountDocuments.java
@@ -1,8 +1,8 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.options.EstimatedCountDocumentsOptions;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.commands.options.EstimatedCountDocumentsOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.internal.command.LoggingCommandObserver;
public class EstimateCountDocuments {
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/Find.java b/examples/src/main/java/com/datastax/astra/client/collections/Find.java
index 1911eed6..9774b7ba 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/Find.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/Find.java
@@ -2,8 +2,8 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.core.paging.FindIterable;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
import com.datastax.astra.client.core.query.Sort;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/FindOne.java b/examples/src/main/java/com/datastax/astra/client/collections/FindOne.java
index 05f69f8f..ad5679ea 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/FindOne.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/FindOne.java
@@ -1,8 +1,8 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOneOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneOptions;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Sort;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndDelete.java b/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndDelete.java
index d5bb2a81..ecccc85b 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndDelete.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndDelete.java
@@ -1,7 +1,7 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndReplace.java b/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndReplace.java
index 95c66f7b..225a1051 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndReplace.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndReplace.java
@@ -1,9 +1,8 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.ReturnDocument;
-import com.datastax.astra.client.collections.options.CollectionFindOneAndReplaceOptions;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneAndReplaceOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
import com.datastax.astra.client.core.query.Projection;
@@ -11,7 +10,7 @@
import java.util.Optional;
-import static com.datastax.astra.client.collections.documents.ReturnDocument.AFTER;
+import static com.datastax.astra.client.collections.commands.ReturnDocument.AFTER;
import static com.datastax.astra.client.core.query.Filters.lt;
public class FindOneAndReplace {
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndUpdate.java b/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndUpdate.java
index 8f23bb24..764c9910 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndUpdate.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/FindOneAndUpdate.java
@@ -1,9 +1,9 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.documents.Update;
-import com.datastax.astra.client.collections.documents.Updates;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.Update;
+import com.datastax.astra.client.collections.commands.Updates;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/InsertMany.java b/examples/src/main/java/com/datastax/astra/client/collections/InsertMany.java
index 4c132334..08d08bcf 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/InsertMany.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/InsertMany.java
@@ -1,9 +1,9 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionInsertManyOptions;
-import com.datastax.astra.client.collections.results.CollectionInsertManyResult;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionInsertManyOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
import com.datastax.astra.client.core.options.TimeoutOptions;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/InsertOne.java b/examples/src/main/java/com/datastax/astra/client/collections/InsertOne.java
index be8621ee..a6611852 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/InsertOne.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/InsertOne.java
@@ -1,8 +1,8 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.results.CollectionInsertOneResult;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertOneResult;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/ReplaceOne.java b/examples/src/main/java/com/datastax/astra/client/collections/ReplaceOne.java
index c767cf4a..a3877c2d 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/ReplaceOne.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/ReplaceOne.java
@@ -1,9 +1,9 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.options.CollectionReplaceOneOptions;
-import com.datastax.astra.client.collections.results.CollectionUpdateResult;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionReplaceOneOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionUpdateResult;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/UpdateMany.java b/examples/src/main/java/com/datastax/astra/client/collections/UpdateMany.java
index 2ec677e5..57b2dab7 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/UpdateMany.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/UpdateMany.java
@@ -1,13 +1,13 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
-import com.datastax.astra.client.collections.documents.Update;
-import com.datastax.astra.client.collections.options.CollectionUpdateManyOptions;
-import com.datastax.astra.client.collections.results.CollectionUpdateResult;
-import com.datastax.astra.client.collections.documents.Updates;
+import com.datastax.astra.client.collections.commands.Update;
+import com.datastax.astra.client.collections.commands.options.CollectionUpdateManyOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionUpdateResult;
+import com.datastax.astra.client.collections.commands.Updates;
import static com.datastax.astra.client.core.query.Filters.lt;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/UpdateOne.java b/examples/src/main/java/com/datastax/astra/client/collections/UpdateOne.java
index 2cf78995..1ab29b73 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/UpdateOne.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/UpdateOne.java
@@ -1,10 +1,10 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.results.CollectionUpdateResult;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.documents.Update;
-import com.datastax.astra.client.collections.documents.Updates;
+import com.datastax.astra.client.collections.commands.results.CollectionUpdateResult;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.Update;
+import com.datastax.astra.client.collections.commands.Updates;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithDates.java b/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithDates.java
index ebf9aab6..e32dddc0 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithDates.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithDates.java
@@ -2,15 +2,15 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOneOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneOptions;
import com.datastax.astra.client.core.query.Projection;
import java.time.Instant;
import java.util.Calendar;
import java.util.Date;
-import static com.datastax.astra.client.collections.documents.Updates.set;
+import static com.datastax.astra.client.collections.commands.Updates.set;
import static com.datastax.astra.client.core.query.Filters.eq;
import static com.datastax.astra.client.core.query.Filters.lt;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithDocumentIds.java b/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithDocumentIds.java
index d1dfdc96..a602a221 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithDocumentIds.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithDocumentIds.java
@@ -1,9 +1,7 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.core.query.Filter;
-import com.datastax.astra.client.core.query.Filters;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.types.ObjectId;
import com.datastax.astra.client.core.types.UUIDv6;
import com.datastax.astra.client.core.types.UUIDv7;
@@ -11,7 +9,7 @@
import java.time.Instant;
import java.util.UUID;
-import static com.datastax.astra.client.collections.documents.Updates.set;
+import static com.datastax.astra.client.collections.commands.Updates.set;
import static com.datastax.astra.client.core.query.Filters.eq;
public class WorkingWithDocumentIds {
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithSorts.java b/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithSorts.java
index 65510071..a7f7ee29 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithSorts.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/WorkingWithSorts.java
@@ -1,8 +1,8 @@
package com.datastax.astra.client.collections;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
import com.datastax.astra.client.core.query.Sort;
public class WorkingWithSorts {
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/vectorize/QuickStartOpenAI.java b/examples/src/main/java/com/datastax/astra/client/collections/vectorize/QuickStartOpenAI.java
index c2479ffc..e101d949 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/vectorize/QuickStartOpenAI.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/vectorize/QuickStartOpenAI.java
@@ -2,17 +2,16 @@
import com.datastax.astra.client.collections.Collection;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.collections.options.CollectionFindOneOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneOptions;
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.client.core.auth.UsernamePasswordTokenProvider;
import com.datastax.astra.client.databases.DatabaseOptions;
-import com.datastax.astra.internal.command.LoggingCommandObserver;
import lombok.extern.slf4j.Slf4j;
import java.util.Optional;
diff --git a/examples/src/main/java/com/datastax/astra/client/collections/vectorize/WorkingWithVectorize.java b/examples/src/main/java/com/datastax/astra/client/collections/vectorize/WorkingWithVectorize.java
index d512d32d..95ddf369 100644
--- a/examples/src/main/java/com/datastax/astra/client/collections/vectorize/WorkingWithVectorize.java
+++ b/examples/src/main/java/com/datastax/astra/client/collections/vectorize/WorkingWithVectorize.java
@@ -2,8 +2,8 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
import com.datastax.astra.client.core.auth.EmbeddingAPIKeyHeaderProvider;
import com.datastax.astra.client.core.query.Sort;
diff --git a/examples/src/main/java/com/datastax/astra/client/database/CreateCollection.java b/examples/src/main/java/com/datastax/astra/client/database/CreateCollection.java
index ef54f32b..61b969b1 100644
--- a/examples/src/main/java/com/datastax/astra/client/database/CreateCollection.java
+++ b/examples/src/main/java/com/datastax/astra/client/database/CreateCollection.java
@@ -2,9 +2,9 @@
import com.datastax.astra.client.DataAPIClients;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.client.databases.Database;
diff --git a/examples/src/main/java/com/datastax/astra/client/database/CreateTable.java b/examples/src/main/java/com/datastax/astra/client/database/CreateTable.java
index e45a0a4a..289812f1 100644
--- a/examples/src/main/java/com/datastax/astra/client/database/CreateTable.java
+++ b/examples/src/main/java/com/datastax/astra/client/database/CreateTable.java
@@ -5,12 +5,12 @@
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.tables.Game;
import com.datastax.astra.client.tables.Table;
-import com.datastax.astra.client.tables.TableDefinition;
+import com.datastax.astra.client.tables.definition.TableDefinition;
import com.datastax.astra.client.tables.TableOptions;
-import com.datastax.astra.client.tables.columns.ColumnDefinitionVector;
-import com.datastax.astra.client.tables.columns.ColumnTypes;
-import com.datastax.astra.client.tables.ddl.CreateTableOptions;
-import com.datastax.astra.client.tables.row.Row;
+import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionVector;
+import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
+import com.datastax.astra.client.tables.commands.options.CreateTableOptions;
+import com.datastax.astra.client.tables.definition.rows.Row;
import static com.datastax.astra.client.core.query.Sort.ascending;
import static com.datastax.astra.client.core.vector.SimilarityMetric.COSINE;
diff --git a/examples/src/main/java/com/datastax/astra/client/database/CreateTableOM.java b/examples/src/main/java/com/datastax/astra/client/database/CreateTableOM.java
index 1e4cf5f9..c5a186ac 100644
--- a/examples/src/main/java/com/datastax/astra/client/database/CreateTableOM.java
+++ b/examples/src/main/java/com/datastax/astra/client/database/CreateTableOM.java
@@ -6,7 +6,7 @@
import com.datastax.astra.client.tables.GameWithAnnotationAllHints;
import com.datastax.astra.client.tables.Table;
-import static com.datastax.astra.client.tables.ddl.DropTableOptions.IF_EXISTS;
+import static com.datastax.astra.client.tables.commands.options.DropTableOptions.IF_EXISTS;
public class CreateTableOM {
diff --git a/examples/src/main/java/com/datastax/astra/client/database/DropCollection.java b/examples/src/main/java/com/datastax/astra/client/database/DropCollection.java
index 83ad487a..0031dc6c 100644
--- a/examples/src/main/java/com/datastax/astra/client/database/DropCollection.java
+++ b/examples/src/main/java/com/datastax/astra/client/database/DropCollection.java
@@ -2,7 +2,7 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.databases.options.DropCollectionOptions;
+import com.datastax.astra.client.collections.commands.options.DropCollectionOptions;
public class DropCollection {
public static void main(String[] args) {
diff --git a/examples/src/main/java/com/datastax/astra/client/database/FindCollection.java b/examples/src/main/java/com/datastax/astra/client/database/FindCollection.java
index 008ce772..32151259 100644
--- a/examples/src/main/java/com/datastax/astra/client/database/FindCollection.java
+++ b/examples/src/main/java/com/datastax/astra/client/database/FindCollection.java
@@ -2,8 +2,8 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.databases.Database;
public class FindCollection {
diff --git a/examples/src/main/java/com/datastax/astra/client/database/ListCollections.java b/examples/src/main/java/com/datastax/astra/client/database/ListCollections.java
index 67d3d0f9..53c1481a 100644
--- a/examples/src/main/java/com/datastax/astra/client/database/ListCollections.java
+++ b/examples/src/main/java/com/datastax/astra/client/database/ListCollections.java
@@ -1,11 +1,10 @@
package com.datastax.astra.client.database;
import com.datastax.astra.client.DataAPIClient;
-import com.datastax.astra.client.collections.CollectionDescriptor;
+import com.datastax.astra.client.collections.definition.CollectionDescriptor;
import com.datastax.astra.client.databases.Database;
import java.util.List;
-import java.util.stream.Stream;
public class ListCollections {
public static void main(String[] args) {
diff --git a/examples/src/main/java/com/datastax/astra/client/tables/GameWithAnnotation.java b/examples/src/main/java/com/datastax/astra/client/tables/GameWithAnnotation.java
index b948b919..9b74bee2 100644
--- a/examples/src/main/java/com/datastax/astra/client/tables/GameWithAnnotation.java
+++ b/examples/src/main/java/com/datastax/astra/client/tables/GameWithAnnotation.java
@@ -15,13 +15,6 @@
import java.util.Set;
import java.util.UUID;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.INT;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.SET;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.TEXT;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.TIMESTAMP;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.UUID;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.VECTOR;
-
@Data
@EntityTable("game_ann2")
@NoArgsConstructor
diff --git a/examples/src/main/java/com/datastax/astra/client/tables/GameWithAnnotationAllHints.java b/examples/src/main/java/com/datastax/astra/client/tables/GameWithAnnotationAllHints.java
index 74025946..20df1089 100644
--- a/examples/src/main/java/com/datastax/astra/client/tables/GameWithAnnotationAllHints.java
+++ b/examples/src/main/java/com/datastax/astra/client/tables/GameWithAnnotationAllHints.java
@@ -14,12 +14,12 @@
import java.time.Instant;
import java.util.Set;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.INT;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.SET;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.TEXT;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.TIMESTAMP;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.UUID;
-import static com.datastax.astra.client.tables.columns.ColumnTypes.VECTOR;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.INT;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.SET;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.TEXT;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.TIMESTAMP;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.UUID;
+import static com.datastax.astra.client.tables.definition.columns.ColumnTypes.VECTOR;
@Data
@EntityTable("game_ann1")
diff --git a/examples/src/main/java/com/datastax/astra/genai/QuickStartAzureOpenAI.java b/examples/src/main/java/com/datastax/astra/genai/QuickStartAzureOpenAI.java
index 58ceda71..4bff2901 100644
--- a/examples/src/main/java/com/datastax/astra/genai/QuickStartAzureOpenAI.java
+++ b/examples/src/main/java/com/datastax/astra/genai/QuickStartAzureOpenAI.java
@@ -2,12 +2,12 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.results.CollectionInsertManyResult;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
import com.datastax.astra.client.core.paging.FindIterable;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.client.databases.Database;
diff --git a/examples/src/main/java/com/datastax/astra/genai/QuickStartHuggingFaceDedicated.java b/examples/src/main/java/com/datastax/astra/genai/QuickStartHuggingFaceDedicated.java
index 1ede084e..852dd0cd 100644
--- a/examples/src/main/java/com/datastax/astra/genai/QuickStartHuggingFaceDedicated.java
+++ b/examples/src/main/java/com/datastax/astra/genai/QuickStartHuggingFaceDedicated.java
@@ -2,11 +2,11 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.results.CollectionInsertManyResult;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
import com.datastax.astra.client.core.paging.FindIterable;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.core.vector.SimilarityMetric;
diff --git a/examples/src/main/java/com/datastax/astra/genai/QuickStartNvidia.java b/examples/src/main/java/com/datastax/astra/genai/QuickStartNvidia.java
index e6e7c9ed..af20651b 100644
--- a/examples/src/main/java/com/datastax/astra/genai/QuickStartNvidia.java
+++ b/examples/src/main/java/com/datastax/astra/genai/QuickStartNvidia.java
@@ -2,11 +2,11 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.results.CollectionInsertManyResult;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
import com.datastax.astra.client.core.paging.FindIterable;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.core.vector.SimilarityMetric;
diff --git a/examples/src/main/java/com/datastax/astra/genai/QuickStartOpenAI.java b/examples/src/main/java/com/datastax/astra/genai/QuickStartOpenAI.java
index eb813381..8ca56624 100644
--- a/examples/src/main/java/com/datastax/astra/genai/QuickStartOpenAI.java
+++ b/examples/src/main/java/com/datastax/astra/genai/QuickStartOpenAI.java
@@ -2,11 +2,11 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefaultIdTypes;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.results.CollectionInsertManyResult;
+import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.results.CollectionInsertManyResult;
import com.datastax.astra.client.core.paging.FindIterable;
import com.datastax.astra.client.core.query.Sort;
import com.datastax.astra.client.core.vector.SimilarityMetric;
diff --git a/langchain4j-astradb/src/main/java/com/datastax/astra/langchain4j/store/embedding/AstraDbEmbeddingStore.java b/langchain4j-astradb/src/main/java/com/datastax/astra/langchain4j/store/embedding/AstraDbEmbeddingStore.java
index c5f653a9..fe7606c7 100644
--- a/langchain4j-astradb/src/main/java/com/datastax/astra/langchain4j/store/embedding/AstraDbEmbeddingStore.java
+++ b/langchain4j-astradb/src/main/java/com/datastax/astra/langchain4j/store/embedding/AstraDbEmbeddingStore.java
@@ -21,10 +21,10 @@
*/
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.documents.Document;
-import com.datastax.astra.client.collections.options.CollectionFindOneAndReplaceOptions;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
-import com.datastax.astra.client.collections.options.CollectionInsertManyOptions;
+import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOneAndReplaceOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.commands.options.CollectionInsertManyOptions;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.types.DataAPIKeywords;
import dev.langchain4j.data.document.Metadata;
diff --git a/langchain4j-astradb/src/main/java/com/datastax/astra/langchain4j/store/memory/AstraDbChatMemoryStore.java b/langchain4j-astradb/src/main/java/com/datastax/astra/langchain4j/store/memory/AstraDbChatMemoryStore.java
index ccdad58d..7ec65623 100644
--- a/langchain4j-astradb/src/main/java/com/datastax/astra/langchain4j/store/memory/AstraDbChatMemoryStore.java
+++ b/langchain4j-astradb/src/main/java/com/datastax/astra/langchain4j/store/memory/AstraDbChatMemoryStore.java
@@ -21,8 +21,8 @@
*/
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.options.CollectionFindOptions;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
import com.datastax.astra.client.databases.Database;
import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.store.memory.chat.ChatMemoryStore;
diff --git a/langchain4j-astradb/src/test/java/dev/langchain4j/store/embedding/astradb/GettingStartedGuideVectorizedTestIT.java b/langchain4j-astradb/src/test/java/dev/langchain4j/store/embedding/astradb/GettingStartedGuideVectorizedTestIT.java
index 32485808..89bd1bf5 100644
--- a/langchain4j-astradb/src/test/java/dev/langchain4j/store/embedding/astradb/GettingStartedGuideVectorizedTestIT.java
+++ b/langchain4j-astradb/src/test/java/dev/langchain4j/store/embedding/astradb/GettingStartedGuideVectorizedTestIT.java
@@ -1,6 +1,6 @@
package dev.langchain4j.store.embedding.astradb;
-import com.datastax.astra.client.collections.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.langchain4j.Assistant;
diff --git a/tools/src/main/java/com/datastax/astra/tool/loader/csv/CsvLoader.java b/tools/src/main/java/com/datastax/astra/tool/loader/csv/CsvLoader.java
index 8dfcd821..eb66518e 100644
--- a/tools/src/main/java/com/datastax/astra/tool/loader/csv/CsvLoader.java
+++ b/tools/src/main/java/com/datastax/astra/tool/loader/csv/CsvLoader.java
@@ -1,7 +1,7 @@
package com.datastax.astra.tool.loader.csv;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.opencsv.CSVReader;
import lombok.extern.slf4j.Slf4j;
diff --git a/tools/src/main/java/com/datastax/astra/tool/loader/csv/CsvRowMapper.java b/tools/src/main/java/com/datastax/astra/tool/loader/csv/CsvRowMapper.java
index 1cea5cd8..d5d8aa75 100644
--- a/tools/src/main/java/com/datastax/astra/tool/loader/csv/CsvRowMapper.java
+++ b/tools/src/main/java/com/datastax/astra/tool/loader/csv/CsvRowMapper.java
@@ -1,6 +1,6 @@
package com.datastax.astra.tool.loader.csv;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
/**
* Settings for the CSV Loader
diff --git a/tools/src/test/java/com/datastax/astra/samples/CsvCustomerSupport.java b/tools/src/test/java/com/datastax/astra/samples/CsvCustomerSupport.java
index 7e1346fd..0ceacfaa 100644
--- a/tools/src/test/java/com/datastax/astra/samples/CsvCustomerSupport.java
+++ b/tools/src/test/java/com/datastax/astra/samples/CsvCustomerSupport.java
@@ -2,7 +2,7 @@
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.collections.Collection;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.tool.loader.csv.CsvLoader;
import com.datastax.astra.tool.loader.csv.CsvRowMapper;
diff --git a/tools/src/test/java/com/datastax/astra/samples/CsvLoaderAnoop.java b/tools/src/test/java/com/datastax/astra/samples/CsvLoaderAnoop.java
index 638e04a1..e879f227 100644
--- a/tools/src/test/java/com/datastax/astra/samples/CsvLoaderAnoop.java
+++ b/tools/src/test/java/com/datastax/astra/samples/CsvLoaderAnoop.java
@@ -3,7 +3,7 @@
import com.datastax.astra.client.collections.Collection;
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.internal.serdes.collections.DocumentSerializer;
import com.datastax.astra.tool.loader.csv.CsvLoader;
import com.datastax.astra.tool.loader.csv.CsvLoaderSettings;
diff --git a/tools/src/test/java/com/datastax/astra/samples/CsvLoaderListing.java b/tools/src/test/java/com/datastax/astra/samples/CsvLoaderListing.java
index ad3c1297..77cc64a0 100644
--- a/tools/src/test/java/com/datastax/astra/samples/CsvLoaderListing.java
+++ b/tools/src/test/java/com/datastax/astra/samples/CsvLoaderListing.java
@@ -3,7 +3,7 @@
import com.datastax.astra.client.collections.Collection;
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.internal.command.LoggingCommandObserver;
import com.datastax.astra.tool.loader.csv.CsvLoader;
import com.datastax.astra.tool.loader.csv.CsvRowMapper;
diff --git a/tools/src/test/java/com/datastax/astra/samples/CsvLoaderWiki.java b/tools/src/test/java/com/datastax/astra/samples/CsvLoaderWiki.java
index 91e875bf..270552e5 100644
--- a/tools/src/test/java/com/datastax/astra/samples/CsvLoaderWiki.java
+++ b/tools/src/test/java/com/datastax/astra/samples/CsvLoaderWiki.java
@@ -3,8 +3,8 @@
import com.datastax.astra.client.collections.Collection;
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.collections.CollectionDefinition;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.CollectionDefinition;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.tool.loader.csv.CsvLoader;
import com.datastax.astra.tool.loader.csv.CsvRowMapper;
diff --git a/tools/src/test/java/com/datastax/astra/samples/CsvPhilosophers.java b/tools/src/test/java/com/datastax/astra/samples/CsvPhilosophers.java
index 24b3b0b3..775876ca 100644
--- a/tools/src/test/java/com/datastax/astra/samples/CsvPhilosophers.java
+++ b/tools/src/test/java/com/datastax/astra/samples/CsvPhilosophers.java
@@ -3,7 +3,7 @@
import com.datastax.astra.client.collections.Collection;
import com.datastax.astra.client.DataAPIClient;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.collections.documents.Document;
+import com.datastax.astra.client.collections.definition.documents.Document;
import com.datastax.astra.tool.loader.csv.CsvLoader;
import com.datastax.astra.tool.loader.csv.CsvRowMapper;
import lombok.extern.slf4j.Slf4j;
From de15941c0c56f4891a5186814663f2e3b8842752 Mon Sep 17 00:00:00 2001
From: Cedrick Lunven
Date: Sat, 30 Nov 2024 17:18:09 +0100
Subject: [PATCH 03/69] less warnings
---
.../definition/documents/Document.java | 80 ++++++++++++++---
.../client/core/paging/CollectionCursor.java | 32 ++++++-
.../client/exceptions/ClientErrorCodes.java | 87 ++++++++++++++++++-
.../commands/options/AlterTableOptions.java | 38 ++++++--
.../columns/ColumnDefinitionList.java | 30 ++++++-
.../columns/ColumnDefinitionSet.java | 27 ++++++
.../serdes/tables/ByteArrayDeserializer.java | 38 +++++++-
.../serdes/tables/ByteArraySerializer.java | 45 ++++++++++
8 files changed, 351 insertions(+), 26 deletions(-)
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java
index 937f3e4b..183a5b60 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java
@@ -554,52 +554,104 @@ public String toJson() {
return toString();
}
- /** {@inheritDoc} */
+ /**
+ * Evaluation if a key is present in the document
+ * @param key
+ * key to evaluate
+ * @return
+ * true if the key is present
+ */
public boolean containsKey(final Object key) {
return documentMap.containsKey(key);
}
- /** {@inheritDoc} */
+
+ /**
+ * Retrieves the value associated with the specified key from the document.
+ *
+ * @param key the key whose associated value is to be returned
+ * @return the value associated with the specified key, or {@code null} if the key is not found
+ */
public Object get(final Object key) {
return documentMap.get(key);
}
- /** {@inheritDoc} */
+ /**
+ * Associates the specified value with the specified key in the document.
+ * If the key already has a value, the old value is replaced.
+ *
+ * @param key the key with which the specified value is to be associated
+ * @param value the value to be associated with the specified key
+ * @return the previous value associated with the key, or {@code null} if there was no mapping for the key
+ */
public Object put(final String key, final Object value) {
return documentMap.put(key, value);
}
- /** {@inheritDoc} */
+ /**
+ * Removes the mapping for a key from the document if it is present.
+ *
+ * @param key the key whose mapping is to be removed
+ * @return the value that was associated with the key, or {@code null} if the key was not mapped
+ */
public Object remove(final Object key) {
return documentMap.remove(key);
}
- /** {@inheritDoc} */
+ /**
+ * Copies all mappings from the specified map to this document.
+ * Existing mappings will be replaced with mappings from the provided map.
+ *
+ * @param map the map containing mappings to be copied to this document
+ */
public void putAll(final Map extends String, ?> map) {
documentMap.putAll(map);
}
- /** {@inheritDoc} */
+ /**
+ * Copies all mappings from the specified {@code Document} to this document.
+ * Existing mappings will be replaced with mappings from the provided document.
+ *
+ * @param doc the document whose mappings are to be copied to this document
+ */
public void putAll(Document doc) {
documentMap.putAll(doc.getDocumentMap());
}
- /** {@inheritDoc} */
+ /**
+ * Removes all mappings from this document.
+ * The document will be empty after this operation.
+ */
public void clear() {
documentMap.clear();
}
- /** {@inheritDoc} */
+ /**
+ * Returns a collection view of the values contained in this document.
+ *
+ * @return a collection view of the values contained in this document
+ */
public Collection
*/
- public Table getTable(String tableName, TableOptions tableOptions, Class rowClass) {
+ public Table getTable(String tableName, Class rowClass, TableOptions tableOptions) {
hasLength(tableName, "tableName");
notNull(rowClass, "rowClass");
return new Table<>(this, tableName, tableOptions, rowClass);
@@ -1073,9 +1083,7 @@ public Table getTable(String tableName) {
*
*/
public Table getTable(String tableName, Class rowClass) {
- return getTable(tableName, new TableOptions(
- options.getToken(),
- options.getDataAPIClientOptions()), rowClass);
+ return getTable(tableName, rowClass, defaultTableOptions());
}
/**
@@ -1095,7 +1103,7 @@ public Table getTable(String tableName, Class rowClass) {
*
*/
public Table getTable(String tableName, TableOptions tableOptions) {
- return getTable(tableName, tableOptions, Row.class);
+ return getTable(tableName, Row.class, tableOptions);
}
/**
@@ -1187,7 +1195,7 @@ public Table createTable(String tableName,
createTable.append("options", creatTableOptions);
}
runCommand(createTable, tableOptions);
- return getTable(tableName, tableOptions, rowClass);
+ return getTable(tableName, rowClass, tableOptions);
}
/**
@@ -1200,8 +1208,7 @@ public Table createTable(String tableName,
* @return the created table object
*/
public Table createTable(String tableName, TableDefinition tableDefinition, Class rowClass) {
- return createTable(tableName, tableDefinition, rowClass, new CreateTableOptions(),
- new TableOptions(this.options.getToken(), this.options.getDataAPIClientOptions()));
+ return createTable(tableName, tableDefinition, rowClass, new CreateTableOptions(), defaultTableOptions());
}
/**
@@ -1226,8 +1233,7 @@ public Table createTable(String tableName, TableDefinition tableDefinition)
* @return the created table object
*/
public Table createTable(String tableName, TableDefinition tableDefinition, Class rowClass, CreateTableOptions createTableOptions) {
- return createTable(tableName, tableDefinition, rowClass, createTableOptions,
- new TableOptions(this.options.getToken(), this.options.getDataAPIClientOptions()));
+ return createTable(tableName, tableDefinition, rowClass, createTableOptions, defaultTableOptions());
}
/**
@@ -1262,7 +1268,7 @@ public Table createTable(Class rowClass) {
* @return the created table object
*/
public Table createTable(Class rowClass, CreateTableOptions createTableOptions) {
- return createTable(getTableName(rowClass), rowClass, createTableOptions, new TableOptions());
+ return createTable(getTableName(rowClass), rowClass, createTableOptions, defaultTableOptions());
}
/**
@@ -1287,7 +1293,7 @@ public Table createTable(String tableName,
createTable.append("options", createTableOptions);
}
runCommand(createTable, createTableOptions);
- return getTable(tableName, tableOptions, rowClass);
+ return getTable(tableName, rowClass, tableOptions);
}
/**
@@ -1309,6 +1315,18 @@ public String getTableName(Class rowClass) {
return ann.value();
}
+ /**
+ * Initialize a TableOption from the current database options.
+ *
+ * @return
+ * default table options
+ */
+ private TableOptions defaultTableOptions() {
+ return new TableOptions(this.options.getToken(),
+ this.options.getDataAPIClientOptions())
+ .keyspace(getKeyspace());
+ }
+
// -------------------------------------
// ---- Drop Table ----
// -------------------------------------
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
index 8fd64064..60200a59 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
@@ -166,6 +166,9 @@ public Table(Database db, String tableName, TableOptions tableOptions, Class
this.database = db;
this.rowClass = rowClass;
this.options.serializer(DEFAULT_TABLE_SERIALIZER);
+ if (tableOptions.getKeyspace() != null) {
+ this.database.useKeyspace(tableOptions.getKeyspace());
+ }
}
// ----------------------------
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java
index e86fc844..3613010f 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java
@@ -35,6 +35,14 @@
@Accessors(fluent = true, chain = true)
public class TableOptions extends BaseOptions {
+ /**
+ * The keyspace to use for the database.
+ */
+ String keyspace = DataAPIClientOptions.DEFAULT_KEYSPACE;
+
+ /**
+ * Default constructor nor overriding token nor options
+ */
public TableOptions() {
this(null, null);
}
@@ -51,4 +59,13 @@ public TableOptions(String token, DataAPIClientOptions options) {
super(token, TABLE_ADMIN, DEFAULT_TABLE_SERIALIZER, options);
}
+ /**
+ * Gets keyspace
+ *
+ * @return value of keyspace
+ */
+ public String getKeyspace() {
+ return keyspace;
+ }
+
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDefinition.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDefinition.java
index 9fbe4372..44af1bb8 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDefinition.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/TableDefinition.java
@@ -29,69 +29,186 @@
import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
import com.datastax.astra.internal.utils.Assert;
import lombok.Data;
-import lombok.NoArgsConstructor;
import java.util.Arrays;
import java.util.LinkedHashMap;
-@Data @NoArgsConstructor
+@Data
public class TableDefinition {
private LinkedHashMap columns = new LinkedHashMap<>();
private TablePrimaryKey primaryKey = new TablePrimaryKey();
+ /**
+ * Default constructor.
+ */
+ public TableDefinition() {
+ }
+
+ /**
+ * Adds a column to the table definition.
+ *
+ * @param columnName the name of the column
+ * @param columnDefinition the definition of the column
+ * @return the updated {@link TableDefinition} instance
+ * @throws IllegalArgumentException if {@code columnName} is null
+ */
public TableDefinition addColumn(String columnName, ColumnDefinition columnDefinition) {
Assert.notNull(columnName, "Column columnName");
columns.put(columnName, columnDefinition);
return this;
}
+ /**
+ * Adds a column to the table with a specific type.
+ *
+ * @param name the name of the column
+ * @param type the type of the column
+ * @return the updated {@link TableDefinition} instance
+ */
public TableDefinition addColumn(String name, ColumnTypes type) {
columns.put(name, new ColumnDefinition(type));
return this;
}
+ /**
+ * Adds a text column to the table.
+ *
+ * @param name the name of the column
+ * @return the updated {@link TableDefinition} instance
+ */
public TableDefinition addColumnText(String name) {
return addColumn(name, ColumnTypes.TEXT);
}
+ /**
+ * Adds an ascii column to the table.
+ *
+ * @param name the name of the column
+ * @return the updated {@link TableDefinition} instance
+ */
+ public TableDefinition addColumnAscii(String name) {
+ return addColumn(name, ColumnTypes.ASCII);
+ }
+
+ /**
+ * Adds an integer column to the table.
+ *
+ * @param name the name of the column
+ * @return the updated {@link TableDefinition} instance
+ */
public TableDefinition addColumnInt(String name) {
return addColumn(name, ColumnTypes.INT);
}
+
+ /**
+ * Adds a timestamp column to the table.
+ *
+ * @param name the name of the column
+ * @return the updated {@link TableDefinition} instance
+ */
public TableDefinition addColumnTimestamp(String name) {
return addColumn(name, ColumnTypes.TIMESTAMP);
}
+ /**
+ * Adds a boolean column to the table.
+ *
+ * @param name the name of the column
+ * @return the updated {@link TableDefinition} instance
+ */
public TableDefinition addColumnBoolean(String name) {
return addColumn(name, ColumnTypes.BOOLEAN);
}
+ /**
+ * Adds a boolean column to the table.
+ *
+ * @param name the name of the column
+ * @return the updated {@link TableDefinition} instance
+ */
+ public TableDefinition addColumnBigInt(String name) {
+ return addColumn(name, ColumnTypes.BIGINT);
+ }
+
+ /**
+ * Adds a blob column to the table.
+ *
+ * @param name the name of the column
+ * @return the updated {@link TableDefinition} instance
+ */
+ public TableDefinition addColumnBlob(String name) {
+ return addColumn(name, ColumnTypes.BLOB);
+ }
+
+ /**
+ * Adds a list column to the table.
+ *
+ * @param name the name of the column
+ * @param valueType the type of the elements in the list
+ * @return the updated {@link TableDefinition} instance
+ */
public TableDefinition addColumnList(String name, ColumnTypes valueType) {
columns.put(name, new ColumnDefinitionList(valueType));
return this;
}
+ /**
+ * Adds a set column to the table.
+ *
+ * @param name the name of the column
+ * @param valueType the type of the elements in the set
+ * @return the updated {@link TableDefinition} instance
+ */
public TableDefinition addColumnSet(String name, ColumnTypes valueType) {
columns.put(name, new ColumnDefinitionSet(valueType));
return this;
}
- public TableDefinition addColumnMap(String name, ColumnTypes keyType, ColumnTypes valueType) {
+ /**
+ * Adds a map column to the table.
+ *
+ * @param name the name of the column
+ * @param keyType the type of the keys in the map
+ * @param valueType the type of the values in the map
+ * @return the updated {@link TableDefinition} instance
+ */
+ public TableDefinition addColumnMap(String name, ColumnTypes keyType, ColumnTypes valueType) {
columns.put(name, new ColumnDefinitionMap(keyType, valueType));
return this;
}
+ /**
+ * Adds a vector column to the table.
+ *
+ * @param name the name of the column
+ * @param colDefVector the definition of the vector column
+ * @return the updated {@link TableDefinition} instance
+ */
public TableDefinition addColumnVector(String name, ColumnDefinitionVector colDefVector) {
- columns.put(name,colDefVector);
+ columns.put(name, colDefVector);
return this;
}
+ /**
+ * Adds a partition key to the table's primary key.
+ *
+ * @param partitionKey the name of the partition key column
+ * @return the updated {@link TableDefinition} instance
+ */
public TableDefinition addPartitionBy(String partitionKey) {
primaryKey.getPartitionBy().add(partitionKey);
return this;
}
+ /**
+ * Adds a sort column to the table's primary key.
+ *
+ * @param column the sort column to add
+ * @return the updated {@link TableDefinition} instance
+ * @throws IllegalArgumentException if {@code column} is null or invalid
+ */
public TableDefinition addPartitionSort(Sort column) {
Assert.notNull(column, "Column");
Assert.notNull(column.getOrder(), "column order");
@@ -103,6 +220,13 @@ public TableDefinition addPartitionSort(Sort column) {
return this;
}
+ /**
+ * Sets the partition keys for the table.
+ *
+ * @param partitionKeys the partition keys
+ * @return the updated {@link TableDefinition} instance
+ * @throws IllegalArgumentException if any of the partition keys are not valid columns
+ */
public TableDefinition partitionKey(String... partitionKeys) {
if (partitionKeys != null) {
primaryKey.getPartitionBy().clear();
@@ -116,24 +240,22 @@ public TableDefinition partitionKey(String... partitionKeys) {
return this;
}
- public TableDefinition partitionSort(Sort... clusteringColumns) {
- return clusteringColumns(clusteringColumns);
- }
-
- public TableDefinition addClusteringColumn(Sort clusteringColumn) {
- return addPartitionSort(clusteringColumn);
- }
-
+ /**
+ * Sets the clustering columns for the table.
+ *
+ * @param clusteringColumns the clustering columns
+ * @return the updated {@link TableDefinition} instance
+ * @throws IllegalArgumentException if any of the clustering columns are not valid columns
+ */
public TableDefinition clusteringColumns(Sort... clusteringColumns) {
if (clusteringColumns != null) {
primaryKey.setPartitionSort(new LinkedHashMap<>());
Arrays.asList(clusteringColumns).forEach(cc -> {
- if (!columns.containsKey(cc.getField())) {
- throw new IllegalArgumentException("Cannot create primaryKey: Column '" + cc.getField() + "' has not been found in table");
- }
- primaryKey.getPartitionSort().put(cc.getField(), cc.getOrder().getCode());
- }
- );
+ if (!columns.containsKey(cc.getField())) {
+ throw new IllegalArgumentException("Cannot create primaryKey: Column '" + cc.getField() + "' has not been found in table");
+ }
+ primaryKey.getPartitionSort().put(cc.getField(), cc.getOrder().getCode());
+ });
}
return this;
}
diff --git a/examples/src/main/java/com/datastax/astra/client/database/CreateTable.java b/examples/src/main/java/com/datastax/astra/client/database/CreateTable.java
index 289812f1..e813534a 100644
--- a/examples/src/main/java/com/datastax/astra/client/database/CreateTable.java
+++ b/examples/src/main/java/com/datastax/astra/client/database/CreateTable.java
@@ -18,44 +18,45 @@
public class CreateTable {
- public static void main(String[] args) {
-
- // Database astraDb = new DataAPIClient(token).getDatabase(endpoint);
- Database db = DataAPIClients.localDbWithDefaultKeyspace();
-
- // Definition of the table in fluent style
- TableDefinition tableDefinition = new TableDefinition()
- .addColumnText("match_id")
- .addColumnInt("round")
- .addColumnVector("m_vector", new ColumnDefinitionVector().dimension(3).metric(COSINE))
- .addColumn("score", ColumnTypes.INT)
- .addColumn("when", ColumnTypes.TIMESTAMP)
- .addColumn("winner", ColumnTypes.TEXT)
- .addColumnSet("fighters", ColumnTypes.UUID)
- .addPartitionBy("match_id")
- .addPartitionSort(ascending("round"));
-
- // Minimal creation
- Table table1 = db.createTable("game1", tableDefinition);
-
- // Minimal Creation with a Bean
- Table table2 = db.createTable("game2", tableDefinition, Game.class);
-
- // -- options --
-
- // One can add options to setup the creation with finer grained:
- CreateTableOptions createTableOptions = new CreateTableOptions()
- .ifNotExists(true)
- .timeout(ofSeconds(5));
- Table table3 = db.createTable("game3", tableDefinition, createTableOptions);
-
- // One can can tuned the table object returned by the function
- TableOptions tableOptions = new TableOptions()
- .embeddingAuthProvider(new EmbeddingAPIKeyHeaderProvider("api-key"))
- .timeout(ofSeconds(5));
-
- // Change the Type of objects in use instead of default Row
- Table table4 = db.createTable("game4", tableDefinition,Row.class,
- createTableOptions, tableOptions);
- }
+ public static void main(String[] args) {
+ // Database astraDb = new DataAPIClient(token).getDatabase(endpoint);
+ Database db = DataAPIClients.localDbWithDefaultKeyspace();
+
+ // Definition of the table in fluent style
+ TableDefinition tableDefinition = new TableDefinition()
+ .addColumnText("match_id")
+ .addColumnInt("round")
+ .addColumnVector("m_vector",
+ new ColumnDefinitionVector().dimension(3).metric(COSINE))
+ .addColumn("score", ColumnTypes.INT)
+ .addColumn("when", ColumnTypes.TIMESTAMP)
+ .addColumn("winner", ColumnTypes.TEXT)
+ .addColumnSet("fighters", ColumnTypes.UUID)
+ .addPartitionBy("match_id")
+ .addPartitionSort(ascending("round"));
+
+ // Minimal creation
+ Table table1 =
+ db.createTable("game1", tableDefinition);
+
+ // Minimal Creation with a Bean
+ Table table2 =
+ db.createTable("game2", tableDefinition, Game.class);
+
+ // One can add options to setup the creation with finer grained:
+ CreateTableOptions createTableOptions = new CreateTableOptions()
+ .ifNotExists(true)
+ .timeout(ofSeconds(5));
+ Table table3 =
+ db.createTable("game3", tableDefinition, createTableOptions);
+
+ // One can can tuned the table object returned by the function
+ TableOptions tableOptions = new TableOptions()
+ .embeddingAuthProvider(new EmbeddingAPIKeyHeaderProvider("api-key"))
+ .timeout(ofSeconds(5));
+
+ // Change the Type of objects in use instead of default Row
+ Table table4 = db.createTable("game4", tableDefinition,Row.class,
+ createTableOptions, tableOptions);
+ }
}
diff --git a/examples/src/main/java/com/datastax/astra/client/database/GetTable.java b/examples/src/main/java/com/datastax/astra/client/database/GetTable.java
new file mode 100644
index 00000000..222d7667
--- /dev/null
+++ b/examples/src/main/java/com/datastax/astra/client/database/GetTable.java
@@ -0,0 +1,45 @@
+package com.datastax.astra.client.database;
+
+import com.datastax.astra.client.DataAPIClients;
+import com.datastax.astra.client.core.auth.EmbeddingAPIKeyHeaderProvider;
+import com.datastax.astra.client.core.options.DataAPIClientOptions;
+import com.datastax.astra.client.databases.Database;
+import com.datastax.astra.client.tables.Game;
+import com.datastax.astra.client.tables.Table;
+import com.datastax.astra.client.tables.TableOptions;
+import com.datastax.astra.client.tables.definition.rows.Row;
+
+import java.util.Map;
+
+public class GetTable {
+
+ public static void main(String[] args) {
+ // Database astraDb =
+ // new DataAPIClient(token).getDatabase(endpoint);
+ Database db =
+ DataAPIClients.localDbWithDefaultKeyspace();
+
+ // Default
+ Table myTable1 =
+ db.getTable("games");
+
+ // Options
+ TableOptions options = new TableOptions()
+ .keyspace("the_other_keyspace")
+ .embeddingApiKey("secret-012abc...")
+ .databaseAdditionalHeaders(Map.of("Feature-Flag-tables", "true"));
+ Table myTable3 = db.getTable("games", options);
+
+ // Typing
+ Table myTable2 =
+ db.getTable("games", Game.class);
+
+ // Typing + Options
+ Table myTable4 =
+ db.getTable("games", Game.class, new TableOptions());
+
+
+
+}
+
+}
From 521379a77db5b227a374c47b9357d201032f64e7 Mon Sep 17 00:00:00 2001
From: Cedrick Lunven
Date: Mon, 2 Dec 2024 17:31:12 +0100
Subject: [PATCH 05/69] javadoc
---
.../astra/client/admin/AdminOptions.java | 2 +-
.../client/admin/AstraDBDatabaseAdmin.java | 4 +-
.../client/admin/DataAPIDatabaseAdmin.java | 6 +--
.../astra/client/admin/DatabaseAdmin.java | 4 +-
.../astra/client/collections/Collection.java | 16 +++---
.../client/collections/CollectionOptions.java | 2 +-
.../commands/cursor}/CollectionCursor.java | 4 +-
.../cursor}/CollectionDistinctIterable.java | 3 +-
.../commands/cursor}/DistinctIterator.java | 3 +-
.../commands/cursor/package-info.java | 23 ++++++++
.../options/CollectionDeleteManyOptions.java | 2 +-
.../options/CollectionDeleteOneOptions.java | 2 +-
.../CollectionFindOneAndDeleteOptions.java | 2 +-
.../CollectionFindOneAndReplaceOptions.java | 2 +-
.../CollectionFindOneAndUpdateOptions.java | 2 +-
.../options/CollectionFindOneOptions.java | 2 +-
.../options/CollectionFindOptions.java | 2 +-
.../options/CollectionInsertManyOptions.java | 2 +-
.../options/CollectionInsertOneOptions.java | 2 +-
.../options/CollectionReplaceOneOptions.java | 2 +-
.../options/CollectionUpdateManyOptions.java | 2 +-
.../options/CountDocumentsOptions.java | 2 +-
.../options/CreateCollectionOptions.java | 2 +-
.../options/DropCollectionOptions.java | 2 +-
.../EstimatedCountDocumentsOptions.java | 2 +-
.../options/ListCollectionOptions.java | 2 +-
.../commands/options/UpdateOneOptions.java | 2 +-
.../commands/options/package-info.java | 23 ++++++++
.../collections/commands/package-info.java | 23 ++++++++
.../commands/results/package-info.java | 23 ++++++++
.../definition/documents/Document.java | 4 +-
.../definition/documents/package-info.java | 23 ++++++++
.../definition/documents}/types/ObjectId.java | 2 +-
.../definition/documents}/types/UUIDv6.java | 2 +-
.../definition/documents}/types/UUIDv7.java | 2 +-
.../documents/types/package-info.java | 23 ++++++++
.../collections/definition/package-info.java | 23 ++++++++
.../collections/exceptions/package-info.java | 23 ++++++++
.../client/collections/package-info.java | 23 ++++++++
.../core/{types => }/DataAPIKeywords.java | 2 +-
.../astra/client/core/commands/Command.java | 2 +-
.../client/core/commands/CommandRunner.java | 1 +
.../client/core/commands/package-info.java | 23 ++++++++
.../astra/client/core/http/package-info.java | 24 +++++++++
.../{commands => options}/BaseOptions.java | 5 +-
.../client/core/options/package-info.java | 24 +++++++++
.../astra/client/core/package-info.java | 2 +-
.../client/core/paging/package-info.java | 24 +++++++++
.../client/core/query/FilterBuilder.java | 2 +-
.../astra/client/core/query/Sort.java | 2 +-
.../astra/client/core/query/package-info.java | 24 +++++++++
.../client/core/vector/package-info.java | 23 ++++++++
.../client/core/vectorize/package-info.java | 23 ++++++++
.../client/databases/DatabaseOptions.java | 2 +-
.../commands/CreateKeyspaceOptions.java | 24 +++++++++
.../databases/commands/package-info.java | 23 ++++++++
.../results/FindEmbeddingProvidersResult.java | 2 +-
.../commands/results/package-info.java | 23 ++++++++
.../keyspaces/KeyspaceInformation.java | 2 +-
.../keyspaces/KeyspaceOptions.java | 6 +--
.../definition/keyspaces/package-info.java | 23 ++++++++
.../databases/definition/package-info.java | 23 ++++++++
.../astra/client/databases/package-info.java | 24 +++++++++
.../devops/exceptions/package-info.java | 23 ++++++++
.../astra/client/devops/package-info.java | 23 ++++++++
.../datastax/astra/client/tables/Table.java | 52 +++++++++++++++----
.../astra/client/tables/TableOptions.java | 2 +-
.../tables/commands/AlterTableAddColumns.java | 17 ------
.../commands/AlterTableAddVectorize.java | 17 ------
.../commands/AlterTableDropColumns.java | 17 ------
.../commands/AlterTableDropVectorize.java | 17 ------
.../commands/options/AlterTableOptions.java | 2 +-
.../commands/options/CountRowsOptions.java | 2 +-
.../commands/options/CreateIndexOptions.java | 2 +-
.../commands/options/CreateTableOptions.java | 2 +-
.../options/CreateVectorIndexOptions.java | 2 +-
.../options/DropTableIndexOptions.java | 2 +-
.../commands/options/DropTableOptions.java | 2 +-
.../options/EstimatedCountRowsOptions.java | 2 +-
.../commands/options/ListIndexesOptions.java | 2 +-
.../commands/options/ListTablesOptions.java | 2 +-
.../options/TableDeleteManyOptions.java | 2 +-
.../options/TableDeleteOneOptions.java | 2 +-
.../commands/options/TableFindOneOptions.java | 2 +-
.../commands/options/TableFindOptions.java | 2 +-
.../options/TableInsertManyOptions.java | 2 +-
.../options/TableInsertOneOptions.java | 2 +-
.../options/TableUpdateOneOptions.java | 2 +-
.../tables/commands/options/package-info.java | 23 ++++++++
.../client/tables/commands/package-info.java | 23 ++++++++
.../tables/commands/results/package-info.java | 23 ++++++++
.../paging => tables/cursor}/TableCursor.java | 4 +-
.../client/tables/cursor/package-info.java | 23 ++++++++
.../definition/columns/package-info.java | 23 ++++++++
.../definition/indexes/package-info.java | 23 ++++++++
.../tables/definition/package-info.java | 23 ++++++++
.../client/tables/definition/rows/Row.java | 2 +-
.../tables/definition/rows/package-info.java | 23 ++++++++
.../tables/exceptions/package-info.java | 23 ++++++++
.../client/tables/mapping/package-info.java | 23 ++++++++
.../astra/client/tables/package-info.java | 24 +++++++++
.../command/AbstractCommandRunner.java | 2 +-
.../internal/command/ExecutionInfos.java | 2 +-
.../internal/reflection/package-info.java | 23 ++++++++
.../collections/DocumentSerializer.java | 6 +--
.../collections/ObjectIdDeserializer.java | 2 +-
.../collections/ObjectIdSerializer.java | 2 +-
.../serdes/collections/UUID6Serializer.java | 2 +-
.../serdes/collections/UUID7Serializer.java | 2 +-
.../serdes/collections/package-info.java | 24 +++++++++
.../astra/internal/serdes/package-info.java | 23 ++++++++
.../internal/serdes/shared/package-info.java | 24 +++++++++
.../internal/serdes/tables/package-info.java | 23 ++++++++
.../astra/internal/utils/OptionsUtils.java | 2 +-
astra-db-java/src/main/java/overview.html | 4 +-
.../integration/AbstractCollectionITTest.java | 6 +--
.../test/integration/AbstractDataAPITest.java | 2 +-
.../AbstractDatabaseAdminITTest.java | 2 +-
.../integration/AbstractDatabaseTest.java | 7 ++-
.../integration/AbstractVectorizeITTest.java | 2 +-
.../AstraDevVectorizeAwsBedRockITTest.java | 4 +-
...evVectorizeHuggingFaceDedicatedITTest.java | 2 +-
.../local/LocalDatabaseAdminITTest.java | 2 +-
.../integration/local/LocalTableITTest.java | 4 +-
.../datastax/astra/test/unit/FiltersTest.java | 4 +-
examples/src/main/java/QuickStartHCD.java | 2 +-
.../astra/client/collections/Distinct.java | 2 +-
.../collections/WorkingWithDocumentIds.java | 6 +--
.../astra/client/database/AlterTable.java | 29 +++++++++++
.../FindEmbeddingProviders.java | 2 +-
.../embedding/AstraDbEmbeddingStore.java | 4 +-
131 files changed, 1118 insertions(+), 193 deletions(-)
rename astra-db-java/src/main/java/com/datastax/astra/client/{core/paging => collections/commands/cursor}/CollectionCursor.java (98%)
rename astra-db-java/src/main/java/com/datastax/astra/client/{core/paging => collections/commands/cursor}/CollectionDistinctIterable.java (97%)
rename astra-db-java/src/main/java/com/datastax/astra/client/{core/paging => collections/commands/cursor}/DistinctIterator.java (97%)
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/results/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/package-info.java
rename astra-db-java/src/main/java/com/datastax/astra/client/{core => collections/definition/documents}/types/ObjectId.java (99%)
rename astra-db-java/src/main/java/com/datastax/astra/client/{core => collections/definition/documents}/types/UUIDv6.java (95%)
rename astra-db-java/src/main/java/com/datastax/astra/client/{core => collections/definition/documents}/types/UUIDv7.java (95%)
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/collections/exceptions/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/collections/package-info.java
rename astra-db-java/src/main/java/com/datastax/astra/client/core/{types => }/DataAPIKeywords.java (97%)
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/core/commands/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/core/http/package-info.java
rename astra-db-java/src/main/java/com/datastax/astra/client/core/{commands => options}/BaseOptions.java (98%)
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/core/options/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/core/paging/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/core/query/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/core/vector/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/core/vectorize/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/CreateKeyspaceOptions.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/package-info.java
rename astra-db-java/src/main/java/com/datastax/astra/client/{core => databases/commands}/results/FindEmbeddingProvidersResult.java (94%)
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/results/package-info.java
rename astra-db-java/src/main/java/com/datastax/astra/client/{ => databases/definition}/keyspaces/KeyspaceInformation.java (97%)
rename astra-db-java/src/main/java/com/datastax/astra/client/{ => databases/definition}/keyspaces/KeyspaceOptions.java (86%)
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/databases/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/devops/exceptions/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/devops/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/package-info.java
rename astra-db-java/src/main/java/com/datastax/astra/client/{core/paging => tables/cursor}/TableCursor.java (98%)
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/cursor/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/exceptions/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/client/tables/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/internal/reflection/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/internal/serdes/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/internal/serdes/shared/package-info.java
create mode 100644 astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/package-info.java
create mode 100644 examples/src/main/java/com/datastax/astra/client/database/AlterTable.java
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/admin/AdminOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/admin/AdminOptions.java
index ae314038..f5e781cd 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/admin/AdminOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/admin/AdminOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.commands.CommandType;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.internal.serdes.DataAPISerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/admin/AstraDBDatabaseAdmin.java b/astra-db-java/src/main/java/com/datastax/astra/client/admin/AstraDBDatabaseAdmin.java
index 856544a4..8d2e9365 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/admin/AstraDBDatabaseAdmin.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/admin/AstraDBDatabaseAdmin.java
@@ -21,9 +21,9 @@
*/
import com.datastax.astra.client.DataAPIDestination;
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.client.core.results.FindEmbeddingProvidersResult;
+import com.datastax.astra.client.databases.commands.results.FindEmbeddingProvidersResult;
import com.datastax.astra.client.databases.DatabaseOptions;
import com.datastax.astra.internal.api.AstraApiEndpoint;
import com.datastax.astra.internal.command.AbstractCommandRunner;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/admin/DataAPIDatabaseAdmin.java b/astra-db-java/src/main/java/com/datastax/astra/client/admin/DataAPIDatabaseAdmin.java
index c7b33c60..8d96fee8 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/admin/DataAPIDatabaseAdmin.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/admin/DataAPIDatabaseAdmin.java
@@ -20,13 +20,13 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.commands.Command;
import com.datastax.astra.client.core.commands.CommandType;
-import com.datastax.astra.client.core.results.FindEmbeddingProvidersResult;
+import com.datastax.astra.client.databases.commands.results.FindEmbeddingProvidersResult;
import com.datastax.astra.client.core.vectorize.EmbeddingProvider;
import com.datastax.astra.client.databases.Database;
-import com.datastax.astra.client.keyspaces.KeyspaceOptions;
+import com.datastax.astra.client.databases.definition.keyspaces.KeyspaceOptions;
import com.datastax.astra.internal.api.DataAPIResponse;
import com.datastax.astra.internal.command.AbstractCommandRunner;
import com.datastax.astra.internal.serdes.DataAPISerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/admin/DatabaseAdmin.java b/astra-db-java/src/main/java/com/datastax/astra/client/admin/DatabaseAdmin.java
index b0affcc7..55d50106 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/admin/DatabaseAdmin.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/admin/DatabaseAdmin.java
@@ -20,11 +20,11 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.core.commands.CommandRunner;
import com.datastax.astra.client.core.vectorize.EmbeddingProvider;
-import com.datastax.astra.client.core.results.FindEmbeddingProvidersResult;
+import com.datastax.astra.client.databases.commands.results.FindEmbeddingProvidersResult;
import com.datastax.astra.internal.utils.Assert;
import java.util.Set;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java
index 8c7a03e4..539b70a6 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/Collection.java
@@ -46,18 +46,18 @@
import com.datastax.astra.client.collections.commands.results.CollectionInsertOneResult;
import com.datastax.astra.client.collections.commands.results.CollectionUpdateResult;
import com.datastax.astra.client.collections.commands.results.FindOneAndReplaceResult;
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.commands.Command;
-import com.datastax.astra.client.core.paging.CollectionCursor;
-import com.datastax.astra.client.core.paging.CollectionDistinctIterable;
+import com.datastax.astra.client.collections.commands.cursor.CollectionCursor;
+import com.datastax.astra.client.collections.commands.cursor.CollectionDistinctIterable;
import com.datastax.astra.client.core.paging.FindIterable;
import com.datastax.astra.client.core.paging.Page;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Filters;
-import com.datastax.astra.client.core.types.DataAPIKeywords;
-import com.datastax.astra.client.core.types.ObjectId;
-import com.datastax.astra.client.core.types.UUIDv6;
-import com.datastax.astra.client.core.types.UUIDv7;
+import com.datastax.astra.client.core.DataAPIKeywords;
+import com.datastax.astra.client.collections.definition.documents.types.ObjectId;
+import com.datastax.astra.client.collections.definition.documents.types.UUIDv6;
+import com.datastax.astra.client.collections.definition.documents.types.UUIDv7;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.exceptions.DataAPIException;
import com.datastax.astra.client.exceptions.UnexpectedDataAPIResponseException;
@@ -90,7 +90,7 @@
import static com.datastax.astra.client.core.options.DataAPIClientOptions.MAX_CHUNK_SIZE;
import static com.datastax.astra.client.core.options.DataAPIClientOptions.MAX_COUNT;
-import static com.datastax.astra.client.core.types.DataAPIKeywords.SORT_VECTOR;
+import static com.datastax.astra.client.core.DataAPIKeywords.SORT_VECTOR;
import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_INTERRUPTED;
import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_TIMEOUT;
import static com.datastax.astra.internal.utils.AnsiUtils.cyan;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/CollectionOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/CollectionOptions.java
index 7be067d2..a5c0fbe5 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/CollectionOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/CollectionOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/CollectionCursor.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/CollectionCursor.java
similarity index 98%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/paging/CollectionCursor.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/CollectionCursor.java
index 336266d2..491dcc81 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/CollectionCursor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/CollectionCursor.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.core.paging;
+package com.datastax.astra.client.collections.commands.cursor;
/*-
* #%L
@@ -22,6 +22,8 @@
import com.datastax.astra.client.collections.Collection;
import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.core.paging.CursorState;
+import com.datastax.astra.client.core.paging.Page;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/CollectionDistinctIterable.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/CollectionDistinctIterable.java
similarity index 97%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/paging/CollectionDistinctIterable.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/CollectionDistinctIterable.java
index c927df36..e5bdb8ce 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/CollectionDistinctIterable.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/CollectionDistinctIterable.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.core.paging;
+package com.datastax.astra.client.collections.commands.cursor;
/*-
* #%L
@@ -22,6 +22,7 @@
import com.datastax.astra.client.collections.Collection;
import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
+import com.datastax.astra.client.core.paging.PageableIterable;
import com.datastax.astra.client.core.query.Filter;
import lombok.NonNull;
import lombok.extern.slf4j.Slf4j;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/DistinctIterator.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/DistinctIterator.java
similarity index 97%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/paging/DistinctIterator.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/DistinctIterator.java
index 5db8fe5f..84426152 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/DistinctIterator.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/DistinctIterator.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.core.paging;
+package com.datastax.astra.client.collections.commands.cursor;
/*-
* #%L
@@ -21,6 +21,7 @@
*/
import com.datastax.astra.client.collections.definition.documents.Document;
+import com.datastax.astra.client.core.paging.PageableIterable;
import com.datastax.astra.internal.serdes.collections.DocumentSerializer;
import lombok.extern.slf4j.Slf4j;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/package-info.java
new file mode 100644
index 00000000..c9a6d3b0
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/cursor/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects representing cursors working with find collections commands.
+ */
+package com.datastax.astra.client.collections.commands.cursor;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionDeleteManyOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionDeleteManyOptions.java
index 445e3853..be0213cf 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionDeleteManyOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionDeleteManyOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionDeleteOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionDeleteOneOptions.java
index 683ea8bf..b4715a1b 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionDeleteOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionDeleteOneOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Sort;
import lombok.NoArgsConstructor;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndDeleteOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndDeleteOptions.java
index fb912b3d..4dfc3e87 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndDeleteOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndDeleteOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
import lombok.NoArgsConstructor;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndReplaceOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndReplaceOptions.java
index c62dd912..e2feb0bb 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndReplaceOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndReplaceOptions.java
@@ -21,7 +21,7 @@
*/
import com.datastax.astra.client.collections.commands.ReturnDocument;
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
import lombok.Getter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndUpdateOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndUpdateOptions.java
index 5ae98607..f1c35f57 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndUpdateOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneAndUpdateOptions.java
@@ -21,7 +21,7 @@
*/
import com.datastax.astra.client.collections.commands.ReturnDocument;
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
import lombok.Getter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneOptions.java
index ee863b74..d63d74f8 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOneOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
import lombok.Getter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOptions.java
index 0ecda0f6..538281de 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionFindOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
import lombok.Getter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionInsertManyOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionInsertManyOptions.java
index 0e742159..412685ad 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionInsertManyOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionInsertManyOptions.java
@@ -21,7 +21,7 @@
*/
import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.options.TimeoutOptions;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionInsertOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionInsertOneOptions.java
index fbd95ca7..7aa1292b 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionInsertOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionInsertOneOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionReplaceOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionReplaceOneOptions.java
index 664c4d3e..2d1edee6 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionReplaceOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionReplaceOneOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionUpdateManyOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionUpdateManyOptions.java
index 322703f1..baceae03 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionUpdateManyOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CollectionUpdateManyOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CountDocumentsOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CountDocumentsOptions.java
index 95b3684f..aeeb7646 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CountDocumentsOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CountDocumentsOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CreateCollectionOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CreateCollectionOptions.java
index efb7de91..f2b762dc 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CreateCollectionOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/CreateCollectionOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import static com.datastax.astra.client.core.commands.CommandType.COLLECTION_ADMIN;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/DropCollectionOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/DropCollectionOptions.java
index 0f790f28..a89cde12 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/DropCollectionOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/DropCollectionOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import static com.datastax.astra.client.collections.Collection.DEFAULT_COLLECTION_SERIALIZER;
import static com.datastax.astra.client.core.commands.CommandType.COLLECTION_ADMIN;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/EstimatedCountDocumentsOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/EstimatedCountDocumentsOptions.java
index 927527c4..bd3b0dbb 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/EstimatedCountDocumentsOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/EstimatedCountDocumentsOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/ListCollectionOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/ListCollectionOptions.java
index ce961966..93d304ce 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/ListCollectionOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/ListCollectionOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.internal.serdes.collections.DocumentSerializer;
import static com.datastax.astra.client.core.commands.CommandType.COLLECTION_ADMIN;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/UpdateOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/UpdateOneOptions.java
index ba5d9344..29985db0 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/UpdateOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/UpdateOneOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Sort;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/package-info.java
new file mode 100644
index 00000000..061f376a
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/options/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Options and Inputs for Collections commands.
+ */
+package com.datastax.astra.client.collections.commands.options;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/package-info.java
new file mode 100644
index 00000000..53c11b63
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Command Definitions for operating on Collections.
+ */
+package com.datastax.astra.client.collections.commands;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/results/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/results/package-info.java
new file mode 100644
index 00000000..37ba6aca
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/commands/results/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Outputs and DTO for Collections Commands.
+ */
+package com.datastax.astra.client.collections.commands.results;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java
index 183a5b60..605dc34c 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/Document.java
@@ -36,8 +36,8 @@
* #L%
*/
-import com.datastax.astra.client.core.types.DataAPIKeywords;
-import com.datastax.astra.client.core.types.ObjectId;
+import com.datastax.astra.client.core.DataAPIKeywords;
+import com.datastax.astra.client.collections.definition.documents.types.ObjectId;
import com.datastax.astra.client.core.vector.DataAPIVector;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.datastax.astra.internal.serdes.collections.DocumentSerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/package-info.java
new file mode 100644
index 00000000..ae5e5d24
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects describing the structure of a Document.
+ */
+package com.datastax.astra.client.collections.definition.documents;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/types/ObjectId.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/ObjectId.java
similarity index 99%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/types/ObjectId.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/ObjectId.java
index 4c86b628..31ccf360 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/types/ObjectId.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/ObjectId.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.core.types;
+package com.datastax.astra.client.collections.definition.documents.types;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/types/UUIDv6.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/UUIDv6.java
similarity index 95%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/types/UUIDv6.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/UUIDv6.java
index 61f76128..8d58e7c2 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/types/UUIDv6.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/UUIDv6.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.core.types;
+package com.datastax.astra.client.collections.definition.documents.types;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/types/UUIDv7.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/UUIDv7.java
similarity index 95%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/types/UUIDv7.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/UUIDv7.java
index ac24e06c..5255161a 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/types/UUIDv7.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/UUIDv7.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.core.types;
+package com.datastax.astra.client.collections.definition.documents.types;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/package-info.java
new file mode 100644
index 00000000..e86e8cfe
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/documents/types/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Object representing the type Id for collections.
+ */
+package com.datastax.astra.client.collections.definition.documents.types;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/package-info.java
new file mode 100644
index 00000000..ca731dce
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/definition/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects describing the structure of a collection.
+ */
+package com.datastax.astra.client.collections.definition;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/exceptions/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/exceptions/package-info.java
new file mode 100644
index 00000000..796f74b8
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/exceptions/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Specializations of the exceptions to work with Collections.
+ */
+package com.datastax.astra.client.collections.exceptions;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/collections/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/collections/package-info.java
new file mode 100644
index 00000000..f2361f6d
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/collections/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Top package to interact with Collections
+ */
+package com.datastax.astra.client.collections;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/types/DataAPIKeywords.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/DataAPIKeywords.java
similarity index 97%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/types/DataAPIKeywords.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/core/DataAPIKeywords.java
index 63548070..0bda8180 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/types/DataAPIKeywords.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/DataAPIKeywords.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.datastax.astra.client.core.types;
+package com.datastax.astra.client.core;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/Command.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/Command.java
index ac81d2ca..76b8ffdf 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/Command.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/Command.java
@@ -25,7 +25,7 @@
import com.datastax.astra.client.collections.commands.Update;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
-import com.datastax.astra.client.core.types.DataAPIKeywords;
+import com.datastax.astra.client.core.DataAPIKeywords;
import com.datastax.astra.client.tables.commands.TableUpdateOperation;
import com.datastax.astra.internal.utils.Assert;
import com.fasterxml.jackson.core.JsonGenerator;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/CommandRunner.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/CommandRunner.java
index 2775356b..9883ffad 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/CommandRunner.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/CommandRunner.java
@@ -20,6 +20,7 @@
* #L%
*/
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.exceptions.DataAPIResponseException;
import com.datastax.astra.internal.api.DataAPIResponse;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/package-info.java
new file mode 100644
index 00000000..d5b0e5d6
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Utility classes for commands and operations.
+ */
+package com.datastax.astra.client.core.commands;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/http/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/http/package-info.java
new file mode 100644
index 00000000..a575af34
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/http/package-info.java
@@ -0,0 +1,24 @@
+/**
+ * Classes to specialize the HTTP Client.
+ */
+package com.datastax.astra.client.core.http;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/BaseOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/options/BaseOptions.java
similarity index 98%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/commands/BaseOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/core/options/BaseOptions.java
index 62985a0d..a5e5c059 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/commands/BaseOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/options/BaseOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.core.commands;
+package com.datastax.astra.client.core.options;
/*-
* #%L
@@ -22,9 +22,8 @@
import com.datastax.astra.client.core.auth.EmbeddingAPIKeyHeaderProvider;
import com.datastax.astra.client.core.auth.EmbeddingHeadersProvider;
+import com.datastax.astra.client.core.commands.CommandType;
import com.datastax.astra.client.core.http.HttpClientOptions;
-import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.client.core.options.TimeoutOptions;
import com.datastax.astra.internal.command.CommandObserver;
import com.datastax.astra.internal.serdes.DataAPISerializer;
import com.datastax.astra.internal.utils.Assert;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/options/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/options/package-info.java
new file mode 100644
index 00000000..68ebd74b
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/options/package-info.java
@@ -0,0 +1,24 @@
+/**
+ * Classes for options of the core commands.
+ */
+package com.datastax.astra.client.core.options;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/package-info.java
index 9d113eaa..1cfc7fbc 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/package-info.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/package-info.java
@@ -1,5 +1,5 @@
/**
- * Domain model classes with {@code Requests}, {@code Results}, {@code Options} and {@code Iterables}.
+ * Core classes to interact both with Tables and Collections.
*/
package com.datastax.astra.client.core;
/*-
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/package-info.java
new file mode 100644
index 00000000..e2c9b85b
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/package-info.java
@@ -0,0 +1,24 @@
+/**
+ * Informations for cursor-based paging.
+ */
+package com.datastax.astra.client.core.paging;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/query/FilterBuilder.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/query/FilterBuilder.java
index 8e770f39..dbf51523 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/query/FilterBuilder.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/query/FilterBuilder.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.types.DataAPIKeywords;
+import com.datastax.astra.client.core.DataAPIKeywords;
import java.util.Map;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/query/Sort.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/query/Sort.java
index 1fd0b3b3..9d6e8a42 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/query/Sort.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/query/Sort.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.types.DataAPIKeywords;
+import com.datastax.astra.client.core.DataAPIKeywords;
import com.datastax.astra.client.core.vector.DataAPIVector;
import lombok.Getter;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/query/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/query/package-info.java
new file mode 100644
index 00000000..4844b5e8
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/query/package-info.java
@@ -0,0 +1,24 @@
+/**
+ * Classes uses to build queries with Sort and Projection.
+ */
+package com.datastax.astra.client.core.query;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/vector/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/vector/package-info.java
new file mode 100644
index 00000000..d91ac4bd
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/vector/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects representing Vector options (vector)
+ */
+package com.datastax.astra.client.core.vector;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/vectorize/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/core/vectorize/package-info.java
new file mode 100644
index 00000000..6e19bdef
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/core/vectorize/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects representing Vector Services options (vectorize)
+ */
+package com.datastax.astra.client.core.vectorize;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseOptions.java
index 07800e3c..56b3eaed 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/DatabaseOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.commands.CommandType;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import com.datastax.astra.internal.serdes.DataAPISerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/CreateKeyspaceOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/CreateKeyspaceOptions.java
new file mode 100644
index 00000000..12397d09
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/CreateKeyspaceOptions.java
@@ -0,0 +1,24 @@
+package com.datastax.astra.client.databases.commands;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
+
+public class CreateKeyspaceOptions {
+}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/package-info.java
new file mode 100644
index 00000000..ffff232d
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects representing commands against databases and keyspaces.
+ */
+package com.datastax.astra.client.databases.commands;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/results/FindEmbeddingProvidersResult.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/results/FindEmbeddingProvidersResult.java
similarity index 94%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/results/FindEmbeddingProvidersResult.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/results/FindEmbeddingProvidersResult.java
index 3fad1c47..64005ebc 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/results/FindEmbeddingProvidersResult.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/results/FindEmbeddingProvidersResult.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.core.results;
+package com.datastax.astra.client.databases.commands.results;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/results/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/results/package-info.java
new file mode 100644
index 00000000..22dad570
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/commands/results/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Object representing keyspace level returns objects.
+ */
+package com.datastax.astra.client.databases.commands.results;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/keyspaces/KeyspaceInformation.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceInformation.java
similarity index 97%
rename from astra-db-java/src/main/java/com/datastax/astra/client/keyspaces/KeyspaceInformation.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceInformation.java
index dc2603f7..ec10addc 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/keyspaces/KeyspaceInformation.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceInformation.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.keyspaces;
+package com.datastax.astra.client.databases.definition.keyspaces;
/*-
* #%L
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/keyspaces/KeyspaceOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceOptions.java
similarity index 86%
rename from astra-db-java/src/main/java/com/datastax/astra/client/keyspaces/KeyspaceOptions.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceOptions.java
index ccd46b12..e8ebd1bf 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/keyspaces/KeyspaceOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/KeyspaceOptions.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.keyspaces;
+package com.datastax.astra.client.databases.definition.keyspaces;
/*-
* #%L
@@ -25,8 +25,8 @@
import java.util.HashMap;
import java.util.Map;
-import static com.datastax.astra.client.keyspaces.KeyspaceInformation.ReplicationStrategy.NETWORK_TOPOLOGY_STRATEGY;
-import static com.datastax.astra.client.keyspaces.KeyspaceInformation.ReplicationStrategy.SIMPLE_STRATEGY;
+import static com.datastax.astra.client.databases.definition.keyspaces.KeyspaceInformation.ReplicationStrategy.NETWORK_TOPOLOGY_STRATEGY;
+import static com.datastax.astra.client.databases.definition.keyspaces.KeyspaceInformation.ReplicationStrategy.SIMPLE_STRATEGY;
/**
* Options to create a Namespace.
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/package-info.java
new file mode 100644
index 00000000..48dcaf95
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/keyspaces/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Object representing the keyspaces.
+ */
+package com.datastax.astra.client.databases.definition.keyspaces;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/package-info.java
new file mode 100644
index 00000000..448d2cc6
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/definition/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects the informations of databases
+ */
+package com.datastax.astra.client.databases.definition;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/databases/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/databases/package-info.java
new file mode 100644
index 00000000..e1fe4bcb
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/databases/package-info.java
@@ -0,0 +1,24 @@
+/**
+ * Top package to interact with Databases and Keyspaces.
+ */
+package com.datastax.astra.client.databases;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/devops/exceptions/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/devops/exceptions/package-info.java
new file mode 100644
index 00000000..9c070165
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/devops/exceptions/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Exceptions specialized checked and unchecked thrown with devops API
+ */
+package com.datastax.astra.client.devops.exceptions;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/devops/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/devops/package-info.java
new file mode 100644
index 00000000..eb900687
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/devops/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Implementations of admin operation through devops API.
+ */
+package com.datastax.astra.client.devops;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
index 60200a59..f71dc891 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/Table.java
@@ -23,10 +23,10 @@
import com.datastax.astra.client.collections.commands.options.CollectionFindOptions;
import com.datastax.astra.client.collections.definition.CollectionDefinition;
import com.datastax.astra.client.collections.definition.documents.Document;
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.commands.Command;
import com.datastax.astra.client.core.paging.Page;
-import com.datastax.astra.client.core.paging.TableCursor;
+import com.datastax.astra.client.tables.cursor.TableCursor;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.databases.Database;
import com.datastax.astra.client.exceptions.DataAPIException;
@@ -85,7 +85,7 @@
import static com.datastax.astra.client.core.options.DataAPIClientOptions.MAX_CHUNK_SIZE;
import static com.datastax.astra.client.core.options.DataAPIClientOptions.MAX_COUNT;
-import static com.datastax.astra.client.core.types.DataAPIKeywords.SORT_VECTOR;
+import static com.datastax.astra.client.core.DataAPIKeywords.SORT_VECTOR;
import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_INTERRUPTED;
import static com.datastax.astra.client.exceptions.DataAPIException.ERROR_CODE_TIMEOUT;
import static com.datastax.astra.internal.utils.AnsiUtils.cyan;
@@ -253,11 +253,47 @@ public String getName() {
// --- alterTable ----
// --------------------------
- public final void alter(AlterTableOperation operation) {
- alter(operation, null);
+ /**
+ * Performs an alteration operation on the table with default options.
+ *
+ * This method delegates to {@link #alter(AlterTableOperation, AlterTableOptions)}
+ * with {@code options} set to {@code null}.
+ *
+ * @param operation the alteration operation to be performed; must not be {@code null}.
+ * @return a new {@link Table} instance representing the altered table.
+ */
+ public final Table alter(AlterTableOperation operation) {
+ return alter(operation, null);
+ }
+
+ /**
+ * Performs an alteration operation on the table with the specified options.
+ *
+ * This method delegates to {@link #alter(AlterTableOperation, AlterTableOptions, Class)}
+ * using the row class of the current table.
+ *
+ * @param operation the alteration operation to be performed; must not be {@code null}.
+ * @param options the options for the alteration operation; may be {@code null}.
+ * @return a new {@link Table} instance representing the altered table.
+ */
+ public final Table alter(AlterTableOperation operation, AlterTableOptions options) {
+ return alter(operation, options, getRowClass());
}
- public final void alter(AlterTableOperation operation, AlterTableOptions options) {
+ /**
+ * Performs an alteration operation on the table with the specified options and row class.
+ *
+ * This is the most granular method for altering a table. It builds and executes the command
+ * to perform the specified alteration operation, with optional parameters and custom row class.
+ *
+ * @param operation the alteration operation to be performed; must not be {@code null}.
+ * @param options the options for the alteration operation; may be {@code null}.
+ * @param clazz the class representing the row type for the altered table; must not be {@code null}.
+ * @param the type of the rows in the altered table.
+ * @return a new {@link Table} instance of the specified row class representing the altered table.
+ * @throws NullPointerException if {@code operation} or {@code clazz} is {@code null}.
+ */
+ public final Table alter(AlterTableOperation operation, AlterTableOptions options, Class clazz) {
notNull(operation, "operation");
Command alterTable = Command.create("alterTable")
.append("operation", new Document().append(operation.getOperationName(), operation));
@@ -265,10 +301,6 @@ public final void alter(AlterTableOperation operation, AlterTableOptions options
alterTable.append("options", options);
}
runCommand(alterTable, this.options);
- }
-
- public final Table alter(AlterTableOperation operation, AlterTableOptions options, Class clazz) {
- alter(operation, options);
return new Table<>(database, tableName, this.options, clazz);
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java
index 3613010f..696a49e0 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/TableOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.options.DataAPIClientOptions;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddColumns.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddColumns.java
index 3d22bf79..687f1ed6 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddColumns.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddColumns.java
@@ -27,7 +27,6 @@
import com.datastax.astra.client.tables.definition.columns.ColumnDefinitionVector;
import com.datastax.astra.client.tables.definition.columns.ColumnTypes;
import lombok.Getter;
-import lombok.NoArgsConstructor;
import lombok.Setter;
import java.util.LinkedHashMap;
@@ -58,12 +57,6 @@
@Setter @Getter
public final class AlterTableAddColumns implements AlterTableOperation {
- /**
- * Indicates whether the "IF NOT EXISTS" clause should be used in the operation.
- * Defaults to {@code null}, meaning the clause is not applied.
- */
- Boolean ifNotExists = null;
-
/**
* A map of column names to their definitions.
* The map preserves the order of added columns.
@@ -177,14 +170,4 @@ public AlterTableAddColumns addColumnMap(String name, ColumnTypes keyType, Colum
columns.put(name, new ColumnDefinitionMap(keyType, valueType));
return this;
}
-
- /**
- * Specifies that the "IF NOT EXISTS" clause should be applied to this operation.
- *
- * @return the current instance for chaining.
- */
- public AlterTableAddColumns ifNotExists() {
- this.ifNotExists = true;
- return this;
- }
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddVectorize.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddVectorize.java
index e006236b..5bccf9f1 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddVectorize.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableAddVectorize.java
@@ -47,12 +47,6 @@
@Setter @Getter
public class AlterTableAddVectorize implements AlterTableOperation {
- /**
- * Flag indicating whether to include an "IF NOT EXISTS" clause in the operation.
- * If {@code true}, the operation will not fail if the specified columns already exist.
- */
- private Boolean ifNotExists = null;
-
/**
* A map of column names to their respective {@link VectorServiceOptions} configurations.
* Represents the vectorized columns to be added to the table.
@@ -98,15 +92,4 @@ public AlterTableAddVectorize columns(Map columns)
this.columns = columns;
return this;
}
-
- /**
- * Enables the "IF NOT EXISTS" clause for the add operation.
- * Ensures the operation does not fail if the specified columns already exist.
- *
- * @return this {@code AlterTableAddVectorize} instance
- */
- public AlterTableAddVectorize ifNotExists() {
- this.ifNotExists = true;
- return this;
- }
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropColumns.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropColumns.java
index 58f72f84..e5c9c026 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropColumns.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropColumns.java
@@ -49,12 +49,6 @@
@NoArgsConstructor
public final class AlterTableDropColumns implements AlterTableOperation {
- /**
- * Flag indicating whether to include an "IF EXISTS" clause in the drop operation.
- * If {@code true}, the operation will proceed only if the specified columns exist.
- */
- private Boolean ifExists = null;
-
/**
* A set of column names to be dropped.
* Ensures that column names are stored in insertion order with no duplicates.
@@ -99,15 +93,4 @@ public AlterTableDropColumns columns(String... columns) {
public String getOperationName() {
return "drop";
}
-
- /**
- * Enables the "IF EXISTS" clause for the drop operation.
- * Ensures the operation only proceeds if the specified columns exist.
- *
- * @return this {@code AlterTableDropColumns} instance
- */
- public AlterTableDropColumns ifExists() {
- this.ifExists = true;
- return this;
- }
}
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropVectorize.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropVectorize.java
index 06490364..728c15a9 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropVectorize.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/AlterTableDropVectorize.java
@@ -49,12 +49,6 @@
@Getter
public class AlterTableDropVectorize implements AlterTableOperation {
- /**
- * Flag indicating whether to include an "IF EXISTS" clause in the drop operation.
- * If {@code true}, the operation will proceed only if the specified columns exist.
- */
- private Boolean ifExists = null;
-
/**
* A set of column names to be dropped.
* Ensures that column names are stored in insertion order and no duplicates are included.
@@ -95,17 +89,6 @@ public AlterTableDropVectorize columns(String... columns) {
return this;
}
- /**
- * Enables the "IF EXISTS" clause for the drop operation.
- * Ensures the operation only proceeds if the specified columns exist.
- *
- * @return this {@code AlterTableDropVectorize} instance
- */
- public AlterTableDropVectorize ifExists() {
- this.ifExists = true;
- return this;
- }
-
/**
* Returns the name of this operation, which is "dropVectorize".
*
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/AlterTableOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/AlterTableOptions.java
index 32c40b0d..0fa62c35 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/AlterTableOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/AlterTableOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.commands.CommandType;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CountRowsOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CountRowsOptions.java
index c1ae963a..779d1787 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CountRowsOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CountRowsOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateIndexOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateIndexOptions.java
index 3ea563f4..76438f6a 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateIndexOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateIndexOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateTableOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateTableOptions.java
index 628f433c..7dcfdada 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateTableOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateTableOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.commands.CommandType;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateVectorIndexOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateVectorIndexOptions.java
index e283f427..6f131c1d 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateVectorIndexOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/CreateVectorIndexOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableIndexOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableIndexOptions.java
index 42509617..6e5b455f 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableIndexOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableIndexOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableOptions.java
index dab4e765..ab6f7ebb 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/DropTableOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Setter;
import lombok.experimental.Accessors;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/EstimatedCountRowsOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/EstimatedCountRowsOptions.java
index 1d5cee4d..d47729cf 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/EstimatedCountRowsOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/EstimatedCountRowsOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListIndexesOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListIndexesOptions.java
index 3cd9cd30..8029efa4 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListIndexesOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListIndexesOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.internal.serdes.tables.RowSerializer;
import static com.datastax.astra.client.core.commands.CommandType.TABLE_ADMIN;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListTablesOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListTablesOptions.java
index 26f4e7c9..3b7e6893 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListTablesOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/ListTablesOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.internal.serdes.tables.RowSerializer;
import static com.datastax.astra.client.core.commands.CommandType.TABLE_ADMIN;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteManyOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteManyOptions.java
index 2b6000dd..ff7c7dc1 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteManyOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteManyOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteOneOptions.java
index 794ab1a3..93a458fb 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableDeleteOneOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Sort;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOneOptions.java
index b7f3e0dd..75d876fd 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOneOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
import lombok.Getter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOptions.java
index 76bd9b34..3602b3d1 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableFindOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
import lombok.Getter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertManyOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertManyOptions.java
index 26f0b46b..e6688458 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertManyOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertManyOptions.java
@@ -21,7 +21,7 @@
*/
import com.datastax.astra.client.core.options.DataAPIClientOptions;
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertOneOptions.java
index 8120a369..9d81daae 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableInsertOneOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableUpdateOneOptions.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableUpdateOneOptions.java
index b61b963f..3d56df65 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableUpdateOneOptions.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/TableUpdateOneOptions.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.query.Sort;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/package-info.java
new file mode 100644
index 00000000..9b0887e2
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/options/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Options and Inputs for Tables commands.
+ */
+package com.datastax.astra.client.tables.commands.options;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/package-info.java
new file mode 100644
index 00000000..671f4f71
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Command Definitions for operating on Tables.
+ */
+package com.datastax.astra.client.tables.commands;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/package-info.java
new file mode 100644
index 00000000..103e9251
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/commands/results/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Outputs and DTO for Tables Commands.
+ */
+package com.datastax.astra.client.tables.commands.results;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/TableCursor.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/cursor/TableCursor.java
similarity index 98%
rename from astra-db-java/src/main/java/com/datastax/astra/client/core/paging/TableCursor.java
rename to astra-db-java/src/main/java/com/datastax/astra/client/tables/cursor/TableCursor.java
index 2ebf0274..8de505f3 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/core/paging/TableCursor.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/cursor/TableCursor.java
@@ -1,4 +1,4 @@
-package com.datastax.astra.client.core.paging;
+package com.datastax.astra.client.tables.cursor;
/*-
* #%L
@@ -20,6 +20,8 @@
* #L%
*/
+import com.datastax.astra.client.core.paging.CursorState;
+import com.datastax.astra.client.core.paging.Page;
import com.datastax.astra.client.core.query.Filter;
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/cursor/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/cursor/package-info.java
new file mode 100644
index 00000000..eba66b1b
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/cursor/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects representing cursors working with find tables commands.
+ */
+package com.datastax.astra.client.tables.cursor;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/package-info.java
new file mode 100644
index 00000000..368d68cd
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/columns/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects representing Table Columns
+ */
+package com.datastax.astra.client.tables.definition.columns;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/package-info.java
new file mode 100644
index 00000000..0c8a8b06
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/indexes/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects representing Table Indexes.
+ */
+package com.datastax.astra.client.tables.definition.indexes;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/package-info.java
new file mode 100644
index 00000000..3909e4cd
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects describing the structure of a Table.
+ */
+package com.datastax.astra.client.tables.definition;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java
index 063da771..6247ddfe 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/Row.java
@@ -21,7 +21,7 @@
*/
import com.datastax.astra.client.collections.definition.documents.Document;
-import com.datastax.astra.client.core.types.DataAPIKeywords;
+import com.datastax.astra.client.core.DataAPIKeywords;
import com.datastax.astra.client.core.vector.DataAPIVector;
import com.datastax.astra.client.tables.definition.TableDuration;
import com.datastax.astra.internal.serdes.DataAPISerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/package-info.java
new file mode 100644
index 00000000..b8d4fc4a
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/definition/rows/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Objects representing Table Rows, like primary key.
+ */
+package com.datastax.astra.client.tables.definition.rows;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/exceptions/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/exceptions/package-info.java
new file mode 100644
index 00000000..fd3dd08b
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/exceptions/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Specializations of the exceptions to work with Tables.
+ */
+package com.datastax.astra.client.tables.exceptions;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/package-info.java
new file mode 100644
index 00000000..a1e02c93
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/mapping/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Annotations Set to map objects as Row Entities.
+ */
+package com.datastax.astra.client.tables.mapping;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/client/tables/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/client/tables/package-info.java
new file mode 100644
index 00000000..c659a154
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/client/tables/package-info.java
@@ -0,0 +1,24 @@
+/**
+ * Top package to interact with Tables.
+ */
+package com.datastax.astra.client.tables;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/command/AbstractCommandRunner.java b/astra-db-java/src/main/java/com/datastax/astra/internal/command/AbstractCommandRunner.java
index 42fd0851..8a4c7f2d 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/command/AbstractCommandRunner.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/command/AbstractCommandRunner.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.client.core.commands.Command;
import com.datastax.astra.client.core.commands.CommandRunner;
import com.datastax.astra.client.core.http.HttpClientOptions;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/command/ExecutionInfos.java b/astra-db-java/src/main/java/com/datastax/astra/internal/command/ExecutionInfos.java
index a531ab6a..88ca81c7 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/command/ExecutionInfos.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/command/ExecutionInfos.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.commands.BaseOptions;
+import com.datastax.astra.client.core.options.BaseOptions;
import com.datastax.astra.internal.api.DataAPIResponse;
import com.datastax.astra.internal.api.ApiResponseHttp;
import com.datastax.astra.client.core.commands.Command;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/package-info.java
new file mode 100644
index 00000000..4391237d
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/reflection/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Utilities for reflection at runtime
+ */
+package com.datastax.astra.internal.reflection;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/DocumentSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/DocumentSerializer.java
index 35085f54..fc17f037 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/DocumentSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/DocumentSerializer.java
@@ -37,9 +37,9 @@
*/
import com.datastax.astra.client.collections.definition.CollectionDefaultIdTypes;
-import com.datastax.astra.client.core.types.ObjectId;
-import com.datastax.astra.client.core.types.UUIDv6;
-import com.datastax.astra.client.core.types.UUIDv7;
+import com.datastax.astra.client.collections.definition.documents.types.ObjectId;
+import com.datastax.astra.client.collections.definition.documents.types.UUIDv6;
+import com.datastax.astra.client.collections.definition.documents.types.UUIDv7;
import com.datastax.astra.client.core.vector.DataAPIVector;
import com.datastax.astra.client.core.vector.SimilarityMetric;
import com.datastax.astra.internal.serdes.DataAPISerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/ObjectIdDeserializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/ObjectIdDeserializer.java
index 2ae6e820..d4c28ad3 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/ObjectIdDeserializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/ObjectIdDeserializer.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.types.ObjectId;
+import com.datastax.astra.client.collections.definition.documents.types.ObjectId;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/ObjectIdSerializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/ObjectIdSerializer.java
index b1d05a70..7d344347 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/ObjectIdSerializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/ObjectIdSerializer.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.types.ObjectId;
+import com.datastax.astra.client.collections.definition.documents.types.ObjectId;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/UUID6Serializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/UUID6Serializer.java
index aa15de61..377787e2 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/UUID6Serializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/UUID6Serializer.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.types.UUIDv6;
+import com.datastax.astra.client.collections.definition.documents.types.UUIDv6;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/UUID7Serializer.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/UUID7Serializer.java
index 47a890e7..eb940b19 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/UUID7Serializer.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/UUID7Serializer.java
@@ -20,7 +20,7 @@
* #L%
*/
-import com.datastax.astra.client.core.types.UUIDv7;
+import com.datastax.astra.client.collections.definition.documents.types.UUIDv7;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/package-info.java
new file mode 100644
index 00000000..9e137d9c
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/collections/package-info.java
@@ -0,0 +1,24 @@
+/**
+ * Custom Serializers to work with Collections.
+ */
+package com.datastax.astra.internal.serdes.collections;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/package-info.java
new file mode 100644
index 00000000..20875da9
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Utilities classes for Serialization and Deserialization
+ */
+package com.datastax.astra.internal.serdes;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/shared/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/shared/package-info.java
new file mode 100644
index 00000000..537eeb15
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/shared/package-info.java
@@ -0,0 +1,24 @@
+/**
+ * Custom Serializers applied for both tables and collections.
+ */
+package com.datastax.astra.internal.serdes.shared;
+
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/package-info.java b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/package-info.java
new file mode 100644
index 00000000..f3686d67
--- /dev/null
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/serdes/tables/package-info.java
@@ -0,0 +1,23 @@
+/**
+ * Custom Serializers to work with Tables
+ */
+package com.datastax.astra.internal.serdes.tables;
+/*-
+ * #%L
+ * Data API Java Client
+ * --
+ * Copyright (C) 2024 DataStax
+ * --
+ * Licensed under the Apache License, Version 2.0
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * #L%
+ */
diff --git a/astra-db-java/src/main/java/com/datastax/astra/internal/utils/OptionsUtils.java b/astra-db-java/src/main/java/com/datastax/astra/internal/utils/OptionsUtils.java
index 7e75009b..0db58e56 100644
--- a/astra-db-java/src/main/java/com/datastax/astra/internal/utils/OptionsUtils.java
+++ b/astra-db-java/src/main/java/com/datastax/astra/internal/utils/OptionsUtils.java
@@ -22,7 +22,7 @@
import com.datastax.astra.client.core.query.Projection;
import com.datastax.astra.client.core.query.Sort;
-import com.datastax.astra.client.core.types.DataAPIKeywords;
+import com.datastax.astra.client.core.DataAPIKeywords;
import java.util.Arrays;
import java.util.LinkedHashMap;
diff --git a/astra-db-java/src/main/java/overview.html b/astra-db-java/src/main/java/overview.html
index 32499351..008ff5d4 100644
--- a/astra-db-java/src/main/java/overview.html
+++ b/astra-db-java/src/main/java/overview.html
@@ -40,7 +40,7 @@ Installation
<dependency>
<groupId>com.datastax.astra</groupId>
<artifactId>astra-db-java</artifactId>
- <version>1.0.0-SNAPSHOT</version>
+ <version>2.0.0-PREVIEW</version>
</dependency>
@@ -85,7 +85,5 @@ QuickStart
}
-
-