An administrative class for managing non-Astra databases, including creating, listing, and deleting keyspaces.

Shouldn't be instantiated directly; use Db.admin to obtain an instance of this class.

Note that the environment parameter MUST match the one used in the DataAPIClient options.

Example

const client = new DataAPIClient('*TOKEN*');

// Create an admin instance through a Db
const db = client.db('*ENDPOINT*');
const dbAdmin1 = db.admin({ environment: 'dse' });
const dbAdmin2 = db.admin({ environment: 'dse', adminToken: 'stronger-token' });

await admin1.createKeyspace({
  replication: {
  class: 'NetworkTopologyStrategy',
  datacenter1: 3,
  datacenter2: 2,
  },
});

const keyspaces = await admin1.listKeyspaces();
console.log(keyspaces);

See

  • Db.admin
  • DataAPIDbAdmin.dbAdmin

Hierarchy (view full)

Constructors

Properties

#db: Db
#httpClient: DataAPIHttpClient<"admin">

Accessors

Methods

  • Creates a new, additional, keyspace for this database.

    NB. The operation will always wait for the operation to complete, regardless of the AstraAdminBlockingOptions. Expect it to take roughly 8-10 seconds.

    Parameters

    • keyspace: string

      The name of the new keyspace.

    • Optional options: DataAPICreateKeyspaceOptions

      The options for the timeout & replication behavior of the operation.

    Returns Promise<void>

    A promise that resolves when the operation completes.

    Example

    await dbAdmin.createKeyspace('my_keyspace');

    await dbAdmin.createKeyspace('my_keyspace', {
      replication: {
      class: 'SimpleStrategy',
      replicationFactor: 3,
      },
    });

    await dbAdmin.createKeyspace('my_keyspace', {
      replication: {
      class: 'NetworkTopologyStrategy',
      datacenter1: 3,
      datacenter2: 2,
      },
    });
  • Gets the underlying Db object. The options for the db were set when the DataAPIDbAdmin instance, or whatever spawned it, was created.

    Returns Db

    The underlying Db object.

    Example

    const dbAdmin = client.admin().dbAdmin('<endpoint>', {
      keyspace: 'my-keyspace',
      useHttp2: false,
    });

    const db = dbAdmin.db();
    console.log(db.keyspace);
  • Drops a keyspace from this database.

    NB. The operation will always wait for the operation to complete, regardless of the AstraAdminBlockingOptions. Expect it to take roughly 8-10 seconds.

    Parameters

    • keyspace: string

      The name of the keyspace to drop.

    • Optional options: WithTimeout<"keyspaceAdminTimeoutMs">

      The options for the timeout of the operation.

    Returns Promise<void>

    A promise that resolves when the operation completes.

    Example

    // ['default_keyspace', 'my_other_keyspace']
    console.log(await dbAdmin.listKeyspaces());

    await dbAdmin.dropKeyspace('my_other_keyspace');

    // ['default_keyspace', 'my_other_keyspace']
    console.log(await dbAdmin.listKeyspaces());
  • Returns detailed information about the availability and usage of the vectorize embedding providers available on the current database (may vary based on cloud provider & region).

    Parameters

    • Optional options: WithTimeout<"databaseAdminTimeoutMs">

      The options for the timeout of the operation.

    Returns Promise<FindEmbeddingProvidersResult>

    The available embedding providers.

    Example

    const { embeddingProviders } = await dbAdmin.findEmbeddingProviders();

    // ['text-embedding-3-small', 'text-embedding-3-large', 'text-embedding-ada-002']
    console.log(embeddingProviders['openai'].models.map(m => m.name));
  • Lists the keyspaces in the database.

    The first element in the returned array is the default keyspace of the database, and the rest are additional keyspaces in no particular order.

    Parameters

    • Optional options: WithTimeout<"keyspaceAdminTimeoutMs">

    Returns Promise<string[]>

    A promise that resolves to list of all the keyspaces in the database.

    Example

    const keyspaces = await dbAdmin.listKeyspaces();

    // ['default_keyspace', 'my_other_keyspace']
    console.log(keyspaces);