Class AstraDBDatabaseAdmin

java.lang.Object
com.datastax.astra.internal.command.AbstractCommandRunner<AdminOptions>
com.datastax.astra.client.admin.AstraDBDatabaseAdmin
All Implemented Interfaces:
DatabaseAdmin, CommandRunner

public class AstraDBDatabaseAdmin extends AbstractCommandRunner<AdminOptions> implements DatabaseAdmin
Implementation of the DatabaseAdmin interface for Astra. To create the namespace the devops APi is leverage. To use this class a higher token permission is required.
  • Constructor Details

    • AstraDBDatabaseAdmin

      public AstraDBDatabaseAdmin(Database db, AdminOptions adminOptions)
      Initialize a database admin from token and database id.
      Parameters:
      db - target database
      adminOptions - options to use for the admin operations like timeouts
    • AstraDBDatabaseAdmin

      public AstraDBDatabaseAdmin(String token, UUID databaseId, DataAPIClientOptions clientOptions)
      Initialize a database admin from token and database id.
      Parameters:
      token - token value
      databaseId - database identifier
      clientOptions - options used to initialize the http client
  • Method Details

    • getDatabaseInformations

      public com.dtsx.astra.sdk.db.domain.Database getDatabaseInformations()
      Find a database from its id.
      Returns:
      list of db matching the criteria
    • getApiEndpoint

      public String getApiEndpoint()
      Get the API endpoint for the current database.
      Overrides:
      getApiEndpoint in class AbstractCommandRunner<AdminOptions>
      Returns:
      the endpoint as an url.
    • getDatabase

      public Database getDatabase(String keyspace)
      Access teh database with the default token.
      Specified by:
      getDatabase in interface DatabaseAdmin
      Parameters:
      keyspace - The name of the namespace (or keyspace) to retrieve. This parameter should match the exact name of the namespace as it exists in the database.
      Returns:
      client to interact with database DML.
    • getDatabase

      public Database getDatabase(String keyspace, String tokenUser)
      Access teh database with the specialized token.
      Specified by:
      getDatabase in interface DatabaseAdmin
      Parameters:
      keyspace - The name of the namespace (or keyspace) to retrieve. This parameter should match the exact name of the namespace as it exists in the database.
      tokenUser - token with reduce privileges compared to admin token in order to do dml options (CRUD).
      Returns:
      client to interact with database DML.
    • listKeyspaceNames

      public Set<String> listKeyspaceNames()
      Retrieves a stream of keyspaces names available in the current database. This method is essential for applications that need to enumerate all namespaces to perform operations such as displaying available namespaces to users, managing keyspaces programmatically, or executing specific tasks within each keyspace. The returned Stream facilitates efficient processing of keyspace names, enabling operations like filtering, sorting, and mapping without the need for preloading all names into memory.

      Example usage:

       
       // Assuming 'client' is an instance of DataApiClient
       Stream<String> keyspacesNames = client.listKeyspacesNames());
       // Display names in the console
       keyspacesNames.forEach(System.out::println);
       
       
      Specified by:
      listKeyspaceNames in interface DatabaseAdmin
      Returns:
      A Set containing the names of all namespaces within the current database. The stream provides a flexible and efficient means to process the namespace names according to the application's needs.
    • findEmbeddingProviders

      public FindEmbeddingProvidersResult findEmbeddingProviders()
      Retrieve the list of embedding providers available in the current database. Embedding providers are services that provide embeddings for text, images, or other data types. This method returns a map of provider names to EmbeddingProvider instances, allowing applications to access and utilize the embedding services.

      Example usage:

       
       // Assuming 'client' is an instance of DataApiClient
       Map<String, EmbeddingProvider> providers = client.findEmbeddingProvidersAsMap());
       
       
      Specified by:
      findEmbeddingProviders in interface DatabaseAdmin
      Returns:
      list of available providers
    • createKeyspace

      public void createKeyspace(String keyspace, boolean updateDBKeyspace)
      Create a Keyspace providing a name.
      Specified by:
      createKeyspace in interface DatabaseAdmin
      Parameters:
      keyspace - current keyspace.
      updateDBKeyspace - if the keyspace should be updated in the database.
    • dropKeyspace

      public void dropKeyspace(String keyspace)
      Drops (deletes) the specified keyspace from the database. This operation is idempotent; it will not produce an error if the keyspace does not exist. This method is useful for cleaning up data or removing entire keyspaces as part of database maintenance or restructuring. Caution should be exercised when using this method, as dropping a keyspace will remove all the data, collections, or tables contained within it, and this action cannot be undone.

      Example usage:

       
       // Assume 'client' is an instance of your data API client
       String keyspace = "targetKeyspace";
      
       // Drop the keyspace
       client.dropKeyspace(keyspace);
      
       // The keyspace 'targetKeyspace' is now deleted, along with all its contained data
       
       
      This example demonstrates how to safely drop a keyspace by name. The operation ensures that even if the keyspace does not exist, the method call will not interrupt the flow of the application, thereby allowing for flexible and error-tolerant code design.
      Specified by:
      dropKeyspace in interface DatabaseAdmin
      Parameters:
      keyspace - The name of the keyspace to be dropped. This parameter specifies the target keyspace that should be deleted. The operation will proceed silently and without error even if the keyspace does not exist, ensuring consistent behavior.
    • dropKeyspace

      public void dropKeyspace(String keyspace, BaseOptions<?> options)
      Description copied from interface: DatabaseAdmin
      Drops (deletes) the specified keyspace from the database. This operation is idempotent; it will not produce an error if the keyspace does not exist. This method is useful for cleaning up data or removing entire keyspaces as part of database maintenance or restructuring. Caution should be exercised when using this method, as dropping a keyspace will remove all the data, collections, or tables contained within it, and this action cannot be undone.

      Example usage:

       
       // Assume 'client' is an instance of your data API client
       String keyspace = "targetKeyspace";
      
       // Drop the keyspace
       client.dropKeyspace(keyspace);
      
       // The keyspace 'targetKeyspace' is now deleted, along with all its contained data
       
       
      This example demonstrates how to safely drop a keyspace by name. The operation ensures that even if the keyspace does not exist, the method call will not interrupt the flow of the application, thereby allowing for flexible and error-tolerant code design.
      Specified by:
      dropKeyspace in interface DatabaseAdmin
      Parameters:
      keyspace - The name of the keyspace to be dropped. This parameter specifies the target keyspace that should be deleted. The operation will proceed silently and without error even if the keyspace does not exist, ensuring consistent behavior.
      options - The options to use for the operation.
    • getDatabase

      public Database getDatabase()
      Access the Database associated with this admin class.
      Specified by:
      getDatabase in interface DatabaseAdmin
      Returns:
      associated database