@datastax/astra-mongoose
Version:
Astra's NodeJS Mongoose compatibility client
112 lines (111 loc) • 5.73 kB
TypeScript
import { Collection, Collection as AstraCollection, CollectionDescriptor, CollectionOptions, CreateTableDefinition, Db as AstraDb, DropCollectionOptions, ListCollectionsOptions, ListTablesOptions, RawDataAPIResponse, Table as AstraTable, TableDescriptor, TableOptions, CreateTableOptions, DropTableOptions, CreateCollectionOptions } from '@datastax/astra-db-ts';
/**
* Defines the base database class for interacting with Astra DB. Responsible for creating collections and tables.
* This class abstracts the operations for both collections mode and tables mode. There is a separate TablesDb class
* for tables and CollectionsDb class for collections.
*/
export declare abstract class BaseDb {
astraDb: AstraDb;
/**
* Whether we're using "tables mode" or "collections mode". If tables mode, then `collection()` returns
* a Table instance, **not** a Collection instance. Also, if tables mode, `createCollection()` throws an
* error for Mongoose `syncIndexes()` compatibility reasons.
*/
isTable: boolean;
name: string;
constructor(astraDb: AstraDb, keyspaceName: string, isTable?: boolean);
/**
* Get a collection by name.
* @param name The name of the collection.
*/
abstract collection<DocType extends Record<string, unknown> = Record<string, unknown>>(name: string, options: Record<string, unknown>): AstraCollection<DocType> | AstraTable<DocType>;
/**
* Create a new collection with the specified name and options.
* @param name The name of the collection to be created.
* @param options Additional options for creating the collection.
*/
abstract createCollection<DocType extends Record<string, unknown> = Record<string, unknown>>(name: string, options?: CreateCollectionOptions<DocType>): Promise<Collection<DocType>>;
/**
* Create a new table with the specified name and definition
* @param name
* @param definition
*/
createTable<DocType extends Record<string, unknown> = Record<string, unknown>>(name: string, definition: CreateTableDefinition, options?: Omit<CreateTableOptions, 'definition'>): Promise<AstraTable<DocType, Partial<import("@datastax/astra-db-ts").FoundRow<DocType>>, import("@datastax/astra-db-ts").FoundRow<DocType>>>;
/**
* Drop a collection by name.
* @param name The name of the collection to be dropped.
*/
dropCollection(name: string, options?: DropCollectionOptions): Promise<void>;
/**
* Drop a table by name. This function does **not** throw an error if the table does not exist.
* @param name
*/
dropTable(name: string, options?: DropTableOptions): Promise<void>;
/**
* List all collections in the database.
* @param options Additional options for listing collections.
*/
listCollections(options: ListCollectionsOptions & {
nameOnly: true;
}): Promise<string[]>;
listCollections(options?: ListCollectionsOptions & {
nameOnly?: false;
}): Promise<CollectionDescriptor[]>;
/**
* List all tables in the database.
*/
listTables(options: ListTablesOptions & {
nameOnly: true;
}): Promise<string[]>;
listTables(options?: ListTablesOptions & {
nameOnly?: false;
}): Promise<TableDescriptor[]>;
/**
* Execute a command against the database.
* @param command The command to be executed.
*/
command(command: Record<string, unknown>): Promise<RawDataAPIResponse>;
}
/**
* Db instance that creates and manages collections.
* @extends BaseDb
*/
export declare class CollectionsDb extends BaseDb {
/**
* Creates an instance of CollectionsDb. Do not instantiate this class directly.
* @param astraDb The AstraDb instance to interact with the database.
* @param keyspaceName The name of the keyspace to use.
*/
constructor(astraDb: AstraDb, keyspaceName: string);
/**
* Get a collection by name.
* @param name The name of the collection.
*/
collection<DocType extends Record<string, unknown> = Record<string, unknown>>(name: string, options: CollectionOptions): Collection<DocType, import("@datastax/astra-db-ts").FoundDoc<DocType>>;
/**
* Send a CreateCollection command to Data API.
*/
createCollection<DocType extends Record<string, unknown> = Record<string, unknown>>(name: string, options?: CreateCollectionOptions<DocType>): Promise<Collection<DocType, import("@datastax/astra-db-ts").FoundDoc<DocType>>>;
}
/**
* Db instance that creates and manages tables.
* @extends BaseDb
*/
export declare class TablesDb extends BaseDb {
/**
* Creates an instance of TablesDb. Do not instantiate this class directly.
* @param astraDb The AstraDb instance to interact with the database.
* @param keyspaceName The name of the keyspace to use.
*/
constructor(astraDb: AstraDb, keyspaceName: string);
/**
* Get a table by name. This method is called `collection()` for compatibility with Mongoose, which calls
* this method for getting a Mongoose Collection instance, which may map to a table in Astra DB when using tables mode.
* @param name The name of the table.
*/
collection<DocType extends Record<string, unknown> = Record<string, unknown>>(name: string, options: TableOptions): AstraTable<DocType, Partial<import("@datastax/astra-db-ts").FoundRow<DocType>>, import("@datastax/astra-db-ts").FoundRow<DocType>>;
/**
* Throws an error, astra-mongoose does not support creating collections in tables mode.
*/
createCollection<DocType extends Record<string, unknown> = Record<string, unknown>>(name: string, options?: CreateCollectionOptions<DocType>): Promise<Collection<DocType>>;
}