couchbase
Version:
The official Couchbase Node.js Client Library.
402 lines (401 loc) • 10.8 kB
TypeScript
import { CppTransactions, CppTransaction, CppTransactionLinks, CppTransactionGetMetaData } from './binding';
import { Cluster } from './cluster';
import { Collection } from './collection';
import { DurabilityLevel } from './generaltypes';
import { QueryMetaData, QueryProfileMode, QueryResult, QueryScanConsistency } from './querytypes';
import { Scope } from './scope';
import { Transcoder } from './transcoders';
import { Cas } from './utilities';
/**
* Represents the path to a document.
*
* @category Transactions
*/
export declare class DocumentId {
constructor();
/**
* The name of the bucket containing the document.
*/
bucket: string;
/**
* The name of the scope containing the document.
*/
scope: string;
/**
* The name of the collection containing the document.
*/
collection: string;
/**
* The key of the docuemnt.
*/
key: string;
}
/**
* Specifies the configuration options for a Transaction Keyspace.
*
* @category Transactions
*/
export interface TransactionKeyspace {
/**
* The name of the bucket for the Keyspace.
*/
bucket: string;
/**
* The name of the scope for the Keyspace.
*/
scope?: string;
/**
* The name of the collection for the Keyspace.
*/
collection?: string;
}
/**
* Specifies the configuration options for Transactions cleanup.
*
* @category Transactions
*/
export interface TransactionsCleanupConfig {
/**
* Specifies the period of the cleanup system.
*/
cleanupWindow?: number;
/**
* Specifies whether or not the cleanup system should clean lost attempts.
*/
disableLostAttemptCleanup?: boolean;
/**
* Specifies whether or not the cleanup system should clean client attempts.
*/
disableClientAttemptCleanup?: boolean;
}
/**
* Specifies the configuration options for Transactions queries.
*
* @category Transactions
*/
export interface TransactionsQueryConfig {
/**
* Specifies the default scan consistency level for queries.
*/
scanConsistency?: QueryScanConsistency;
}
/**
* Specifies the configuration options for Transactions.
*
* @category Transactions
*/
export interface TransactionsConfig {
/**
* Specifies the level of synchronous durability level.
*/
durabilityLevel?: DurabilityLevel;
/**
* Specifies the default timeout for KV operations, specified in millseconds.
*
* @deprecated Currently a no-op. CXXCBC-391: Adds support for ExtSDKIntegration which uses KV durable timeout internally.
*/
kvTimeout?: number;
/**
* Specifies the default timeout for transactions.
*/
timeout?: number;
/**
* Specifies the configuration for queries.
*/
queryConfig?: TransactionsQueryConfig;
/**
* Specifies the configuration for the cleanup system.
*/
cleanupConfig?: TransactionsCleanupConfig;
/**
* Specifies the Keyspace (bucket, scope & collection) for the transaction metadata.
*/
metadataCollection?: TransactionKeyspace;
}
/**
* Specifies the configuration options for a Transaction.
*
* @category Transactions
*/
export interface TransactionOptions {
/**
* Specifies the level of synchronous durability level.
*/
durabilityLevel?: DurabilityLevel;
/**
* Specifies the timeout for the transaction.
*/
timeout?: number;
}
/**
* Contains the results of a Transaction.
*
* @category Transactions
*/
export declare class TransactionResult {
/**
* @internal
*/
constructor(data: {
transactionId: string;
unstagingComplete: boolean;
});
/**
* The ID of the completed transaction.
*/
transactionId: string;
/**
* Whether all documents were successfully unstaged and are now available
* for non-transactional operations to see.
*/
unstagingComplete: boolean;
}
/**
* Contains the results of a transactional Get operation.
*
* @category Transactions
*/
export declare class TransactionGetResult {
/**
* @internal
*/
constructor(data: TransactionGetResult);
/**
* The id of the document.
*/
id: DocumentId;
/**
* The content of the document.
*/
content: any;
/**
* The CAS of the document.
*/
cas: Cas;
/**
* @internal
*/
_links: CppTransactionLinks;
/**
* @internal
*/
_metadata: CppTransactionGetMetaData;
}
/**
* Contains the results of a transactional Query operation.
*
* @category Transactions
*/
export declare class TransactionQueryResult<TRow = any> {
/**
* The rows which have been returned by the query.
*/
rows: TRow[];
/**
* The meta-data which has been returned by the query.
*/
meta: QueryMetaData;
/**
* @internal
*/
constructor(data: QueryResult);
}
/**
* @category Transactions
*/
export interface TransactionQueryOptions {
/**
* Values to be used for the placeholders within the query.
*/
parameters?: {
[key: string]: any;
} | any[];
/**
* Specifies the consistency requirements when executing the query.
*
* @see QueryScanConsistency
*/
scanConsistency?: QueryScanConsistency;
/**
* Specifies whether this is an ad-hoc query, or if it should be prepared
* for faster execution in the future.
*/
adhoc?: boolean;
/**
* The returned client context id for this query.
*/
clientContextId?: string;
/**
* This is an advanced option, see the query service reference for more
* information on the proper use and tuning of this option.
*/
maxParallelism?: number;
/**
* This is an advanced option, see the query service reference for more
* information on the proper use and tuning of this option.
*/
pipelineBatch?: number;
/**
* This is an advanced option, see the query service reference for more
* information on the proper use and tuning of this option.
*/
pipelineCap?: number;
/**
* This is an advanced option, see the query service reference for more
* information on the proper use and tuning of this option. Specified
* in milliseconds.
*/
scanWait?: number;
/**
* This is an advanced option, see the query service reference for more
* information on the proper use and tuning of this option.
*/
scanCap?: number;
/**
* Specifies that this query should be executed in read-only mode, disabling
* the ability for the query to make any changes to the data.
*/
readOnly?: boolean;
/**
* Specifies the level of profiling that should be used for the query.
*/
profile?: QueryProfileMode;
/**
* Specifies whether metrics should be captured as part of the execution of
* the query.
*/
metrics?: boolean;
/**
* Specifies any additional parameters which should be passed to the query engine
* when executing the query.
*/
raw?: {
[key: string]: any;
};
/**
* Specifies the scope to run this query in.
*/
scope?: Scope;
}
/**
* @category Transactions
*/
export interface TransactionGetOptions {
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
}
/**
* @category Transactions
*/
export interface TransactionInsertOptions {
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
}
/**
* @category Transactions
*/
export interface TransactionReplaceOptions {
/**
* Specifies an explicit transcoder to use for this specific operation.
*/
transcoder?: Transcoder;
}
/**
* Provides an interface to preform transactional operations in a transaction.
*
* @category Transactions
*/
export declare class TransactionAttemptContext {
private _impl;
private _transcoder;
/**
* @internal
*/
constructor(txns: Transactions, config?: TransactionOptions);
/**
@internal
*/
get impl(): CppTransaction;
/**
* @internal
*/
_newAttempt(): Promise<void>;
/**
* Retrieves the value of a document from the collection.
*
* @param collection The collection the document lives in.
* @param key The document key to retrieve.
* @param options Optional parameters for this operation.
*/
get(collection: Collection, key: string, options?: TransactionGetOptions): Promise<TransactionGetResult>;
/**
* Inserts a new document to the collection, failing if the document already exists.
*
* @param collection The collection the document lives in.
* @param key The document key to insert.
* @param content The document content to insert.
* @param options Optional parameters for this operation.
*/
insert(collection: Collection, key: string, content: any, options?: TransactionInsertOptions): Promise<TransactionGetResult>;
/**
* Replaces a document in a collection.
*
* @param doc The document to replace.
* @param content The document content to insert.
* @param options Optional parameters for this operation.
*/
replace(doc: TransactionGetResult, content: any, options?: TransactionReplaceOptions): Promise<TransactionGetResult>;
/**
* Removes a document from a collection.
*
* @param doc The document to remove.
*/
remove(doc: TransactionGetResult): Promise<void>;
/**
* Executes a query in the context of this transaction.
*
* @param statement The statement to execute.
* @param options Optional parameters for this operation.
*/
query<TRow = any>(statement: string, options?: TransactionQueryOptions): Promise<TransactionQueryResult<TRow>>;
/**
* @internal
*/
_commit(): Promise<TransactionResult>;
/**
* @internal
*/
_rollback(): Promise<void>;
}
/**
* Provides an interface to access transactions.
*
* @category Transactions
*/
export declare class Transactions {
private _cluster;
private _impl;
/**
@internal
*/
constructor(cluster: Cluster, config?: TransactionsConfig);
/**
@internal
*/
get impl(): CppTransactions;
/**
@internal
*/
_close(): Promise<void>;
/**
* Executes a transaction.
*
* @param logicFn The transaction lambda to execute.
* @param config Configuration operations for the transaction.
*/
run(logicFn: (attempt: TransactionAttemptContext) => Promise<void>, config?: TransactionOptions): Promise<TransactionResult>;
}