UNPKG

oracle-nosqldb

Version:

Node.js driver for Oracle NoSQL Database

630 lines (564 loc) 21.3 kB
/*- * Copyright (c) 2018, 2025 Oracle and/or its affiliates. All rights reserved. * * Licensed under the Universal Permissive License v 1.0 as shown at * https://oss.oracle.com/licenses/upl/ */ import type { TableLimits, TableETag, DefinedTags, FreeFormTags, Durability, FieldRange, RowVersion, TimeToLive, MultiDeleteContinuationKey, QueryContinuationKey } from "./param"; import type { Config } from "./config"; import type { NoSQLClient } from "./nosql_client"; import type { Consistency } from "./constants"; import type { Region } from "./region"; /** * Cloud service only. Base option to specify compartment. */ export interface CompartmentOpt { /** * Cloud service only. * Compartment id or name to use for this operation. * @defaultValue {@link Config#compartment | Config.compartment}. * @see {@link Config.compartment} */ compartment?: string; } /** * Op-premises only. Base option to specify namespace. */ export interface NamespaceOpt { /** * On-premises only. * Namespace to use for this operation. * <p> * Note: if a namespace is specified in the table name for the request * (using the <em>namespace:table_name</em> format), that value will * override this setting. * @defaultValue {@link Config#namespace | Config.namespace}. * @see {@link Config.namespace} */ namespace?: string; } /** * Options passed to {@link NoSQLClient.tableDDL}, * {@link NoSQLClient#setTableLimits} and {@link NoSQLClient#setTableTags}. */ export interface ModifyTableOpt extends CompartmentOpt, NamespaceOpt { /** * Timeout for the operation in milliseconds. Defaults to * {@link Config#ddlTimeout} (if {@link complete} is true, separate * default timeouts are used for issuing the DDL operation and waiting for * its completion, with values of {@link Config#ddlTimeout} and * {@link Config#tablePollTimeout} correspondingly). */ timeout?: number; /** * Cloud service only. * Entity tag that must be matched for the operation to proceed. See * {@link TableETag}. */ matchETag?: TableETag; /** * If set to true, the returned {@link !Promise | Promise} will only * resolve when the operation is completed and the table state becomes * {@link TableState.ACTIVE} or {@link TableState.DROPPED} (if using * {@link NoSQLClient#tableDDL} to execute "DROP TABLE" operation). */ complete?: boolean; /** * If {@link complete} is true, specifies delay between successive polls * while waiting for operation completion. Defaults to * {@link Config#tablePollDelay}. Has no effect if {@link complete} is * not enabled. */ delay?: number; } /** * Options passed to {@link NoSQLClient#tableDDL}. */ export interface TableDDLOpt extends ModifyTableOpt { /** * Cloud service only. * Specifies new table limits for a table. See {@link TableLimits}. Note * that this property is required when creating a table. */ tableLimits?: TableLimits; /** * Cloud Service only. * Defined tags to use for the operation. See {@link DefinedTags}. */ definedTags?: DefinedTags; /** * Cloud Service only. * Free-form tags to use for the operation. See {@link FreeFormTags}. */ freeFormTags?: FreeFormTags; } /** * Base option to specify timeout. */ export interface TimeoutOpt { /** * Timeout for the operation in milliseconds. * @defaultValue {@link Config#timeout | Config.timeout} */ timeout?: number; } /** * Options passed to {@link NoSQLClient#getTable}. */ export interface GetTableOpt extends CompartmentOpt, NamespaceOpt, TimeoutOpt {} /** * Options passed to {@link NoSQLClient#forCompletion} and * {@link NoSQLClient#forTableState}. */ export interface CompletionOpt extends CompartmentOpt, NamespaceOpt { /** * Timeout in milliseconds, i.e. how long to keep polling for operation * completion. Defaults to {@link Config#tablePollTimeout} for table DDL * operations and to {@link Config#adminPollTimeout} for admin DDL * operations. */ timeout?: number; /** * Delay in milliseconds between successive polls, determines how often * the polls are performed. Defaults to {@link Config#tablePollDelay} for * table DDL operations or to {@link Config#adminPollDelay} for admin DDL * operations. */ delay?: number; } /** * Options passed to {@link NoSQLClient#getTableUsage} and * {@link NoSQLClient#tableUsageIterable}. */ export interface TableUsageOpt extends CompartmentOpt, TimeoutOpt { /** * Start time for the time period. Can be {@link !Date | Date}, string * representing date and time or number of milliseconds since epoch * (January 1, 1970, 00:00:00 UTC). For string representation see * {@link !Date.parse | Date.parse()}. If time range is not specified, the * most recent complete usage record is returned. */ startTime?: Date|string|number; /** * End time for the time period, represented same as {@link startTime}. */ endTime?: Date|string|number; /** * Limit to the number of usage records desired. If not specified or value * is 0, there is no limit, but not all usage records may be returned due * to size limitations. */ limit?: number; /** * Index at which to start returning * table usage records. To page table usage records, set this value to * {@link TableUsageResult#nextIndex} returned from previous call to * {@link NoSQLClient#getTableUsage}. These operations are best done in a * loop. See the example at {@link NoSQLClient#getTableUsage}. This option * is not used for {@link NoSQLClient#tableUsageIterable}. * @defaultValue 0 */ startIndex?: number; } /** * Options passed to {@link NoSQLClient#getIndex}. */ export interface GetIndexOpt extends CompartmentOpt, NamespaceOpt, TimeoutOpt {} /** * Options passed to {@link NoSQLClient#getIndexes}. */ export interface GetIndexesOpt extends GetIndexOpt { /** * Return information only about specific * index, same as {@link NoSQLClient#getIndex}. If not specified, * information on all indexes is returned. */ indexName?: string; } /** * Options passed to {@link NoSQLClient#listTables}. */ export interface ListTablesOpt extends TimeoutOpt { /** * Cloud service only. Compartment id or name to use for this operation. * See {@link Config#compartment} for more information. Only tables * belonging to the given compartment (but not its child compartments) * will be listed. * @defaultValue {@link Config#compartment | Config.compartment} */ compartment?: string; /** * On-premises only. If set, list tables from given namespace only, * otherwise list all tables for the user. */ namespace?: string; /** * The index to use to start returning table names. This is related to * the {@link ListTablesResult#lastIndex} from a previous request and can * be used to page table names. * @defaultValue If not set, the list starts at index 0. */ startIndex?: number; /** * The maximum number of table names to return in the operation. * @defaultValue If not set or set to 0, there is no limit. */ limit?: number; } /** * Base option to specify consistency. */ export interface ConsistencyOpt { /** * {@link Consistency} used for the operation. Defaults to * {@link Config#consistency}. */ consistency?: Consistency; } /** * Options passed to {@link NoSQLClient#get}. */ export interface GetOpt extends CompartmentOpt, NamespaceOpt, TimeoutOpt, ConsistencyOpt {} /** * On-premises only. Base option to specify durability. */ export interface DurabilityOpt { /** * On-premises only. Set the desired durability for master/replica * sync/acks. Defaults to {@link Config#durability} or if not set, the * default server-side durability settings are used. See * {@link Durability}. */ durability?: Durability; } /** * Options passed to {@link NoSQLClient#putIfAbsent}, * {@link NoSQLClient#putIfPresent} and {@link NoSQLClient#putIfVersion}. */ export interface PutIfOpt extends CompartmentOpt, NamespaceOpt, TimeoutOpt, DurabilityOpt { /** * If set to true, existing row, its version and modification time will be * returned as part of {@link PutResult} under conditions described in * {@link NoSQLClient#put}. */ returnExisting?: boolean; /** * Sets {@link TimeToLive} value, causing the time to live on the row to * be set to the specified value on Put. This value overrides any default * time to live setting on the table. If passed as number, interpreted as * number of days. * @see {@link TimeToLive}. */ ttl?: TimeToLive|number; /** * If set to true, and there is an existing row, causes the operation to * update the time to live (TTL) value of the row based on the table's * default TTL if set. If the table has no default TTL this state has no * effect. By default updating an existing row has no effect on its TTL. * This option cannot be specified if {@link ttl} is specified. */ updateTTLToDefault?: boolean; /** * If true the value must be an exact match for the table schema or the * operation will fail. An exact match means that there are no required * fields missing and that there are no extra, unknown fields. The default * behavior is to not require an exact match. */ exactMatch?: boolean; /** * Sets the number of generated identity values that are requested from * the server during a put. This takes precedence over the DDL identity * CACHE option set during creation of the identity column. Must be * positive integer. * @defaultValue If not set, the DDL identity CACHE value is used. */ identityCacheSize?: number; } /** * Options passed to {@link NoSQLClient#put}. */ export interface PutOpt extends PutIfOpt { /** * If set to true, do put only if there is no existing row that matches * the primary key. Exclusive with {@link ifPresent} and * {@link matchVersion}. */ ifAbsent?: boolean; /** * If set to true, do put only if there is existing row that matches * the primary key. Exclusive with {@link ifAbsent} and * {@link matchVersion}. */ ifPresent?: boolean; /** * If set, do a put only if there is an existing row that matches the * primary key and its {@link RowVersion} matches the value provided. * Exclusive with {@link ifAbsent} and {@link ifPresent}. */ matchVersion?: RowVersion; } /** * Options passed to {@link NoSQLClient#deleteIfVersion}. */ export interface DeleteIfOpt extends CompartmentOpt, NamespaceOpt, TimeoutOpt, DurabilityOpt { /** * If set to true, existing row, its version and modification time will be * returned as part of {@link DeleteResult} under conditions described in * {@link NoSQLClient#delete}. */ returnExisting?: boolean; } /** * Options passed to {@link NoSQLClient#delete}. */ export interface DeleteOpt extends DeleteIfOpt { /** * If set, delete only if there is an existing row that matches the * primary key and its {@link RowVersion} matches the value provided. */ matchVersion?: RowVersion; } /** * Options passed to {@link NoSQLClient#deleteRange}. */ export interface MultiDeleteOpt extends CompartmentOpt, NamespaceOpt, TimeoutOpt, DurabilityOpt { /** * Field range based on columns not provided in partial key. For more * details, see {@link FieldRange}. */ fieldRange?: FieldRange; /** * The limit on the total KB written during the operation. This value can * only reduce the system defined limit. An attempt to increase the limit * beyond the system defined limit will result in error. */ maxWriteKB?: number; /** * Continuation key returned in {@link MultiDeleteResult} from the * previous call to this API and can be used to continue this operation. * Operations with a continuation key still require the primary key. */ continuationKey?: MultiDeleteContinuationKey | null; } /** * Abort-if-unsuccessful option used by {@link NoSQLClient#writeMany}, * {@link NoSQLClient#putMany} and {@link NoSQLClient#deleteMany}. */ export interface AbortOnFailOpt { /** * If set to true, aborts the whole transaction if any of the put or * delete operations fails. This is only applicable to * failures due to inability to satisfy {@link PutOpt#ifAbsent}, * {@link PutOpt#ifPresent} or {@link PutOpt#matchVersion} options for put * operation or {@link DeleteOpt#matchVersion} for delete operation, see * {@link NoSQLClient#put} and {@link NoSQLClient#delete}. Other failures * will result in error. * <p> * For {@link NoSQLClient#writeMany}, this option can be overriden by * {@link WriteOperation#abortOnFail} on per-operation basis. */ abortOnFail?: boolean; } /** * Options passed to {@link NoSQLClient#writeMany}. * <p> * Use this interface ot specify options that should be the same for all put * and delete sub operations (options relevant only to put but not to * delete will be ignored for delete operations). Options for specific sub * operation, other than {@link WriteMultipleOpt#compartment}, * {@link WriteMultipleOpt#timeout} and {@link WriteMultipleOpt#durability} * may be specified in {@link WriteOperation} and will override values * specified here. For list of options, see {@link WriteOperation}. */ export interface WriteMultipleOpt extends PutOpt, DeleteOpt, AbortOnFailOpt {} /** * Options passed to {@link NoSQLClient#putMany}. */ export interface PutManyOpt extends PutOpt, AbortOnFailOpt {} /** * Options passed to {@link NoSQLClient#deleteMany}. */ export interface DeleteManyOpt extends DeleteOpt, AbortOnFailOpt {} /** * Options passed to {@link NoSQLClient#prepare}. */ export interface PrepareOpt extends CompartmentOpt, NamespaceOpt, TimeoutOpt { /** * If <em>true</em>, requests a printout of query execution plan to be * included in the returned {@link PreparedStatement} as * {@link PreparedStatement#queryPlan}. */ getQueryPlan?: boolean; /** * If <em>true</em>, requests a JSON value of query result schema to be * included in the returned {@link PreparedStatement} as * {@link PreparedStatement#resultSchema}. */ getResultSchema?: boolean; } /** * Options passed to {@link NoSQLClient#query} and * {@link NoSQLClient#queryIterable}. */ export interface QueryOpt extends CompartmentOpt, NamespaceOpt, TimeoutOpt, ConsistencyOpt { /** * On-premises only. * {@link Durability} value used for the update query operation. Defaults * to {@link Config#durability} or if not set, default server-side * durability settings are used. This option only applies for update * queries, i.e. queries issued via INSERT, UPDATE, UPSERT and DELETE * statements. For read-only SELECT queries this option is ignored. */ durability?: Durability; /** * Sets the limit on number of rows returned by the operation. This allows * an operation to return less than the default amount of data. */ limit?: number; /** * Sets the limit on the total data read during this operation, in KB. * This value can only reduce the system defined limit. An attempt to * increase the limit beyond the system defined limit will result in * error. This limit is independent of read units consumed by the * operation. */ maxReadKB?: number; /** * Sets the limit on the total data written during this operation, in KB. * Relevant for update and delete queries. This value can only reduce the * system defined limit. An attempt to increase the limit beyond the * system defined limit will result in error. This limit is independent of * the write units consumed by the operation. */ maxWriteKB?: number; /** * Maximum amount of memory in megabytes that may be used locally in this * query execution for operations such as duplicate elimination (which may * be required if using an index on an array or a map) and sorting. Such * operations may require significant amount of memory as they need to * cache full result set or a large subset of it in locally. If memory * consumption exceeds this value, error will result. Default is 1GB. * Defaults to {@link Config#maxMemoryMB}. */ maxMemoryMB?: number; /** * Note: this option is not used and ignored when using * {@link NoSQLClient#queryIterable}. * <p> * Continuation key returned in {@link QueryResult} from previous call to * this API used to continue the query. If there are no more results, * continuation key will be null. Note that it is possible that * continuation key is not null, but the query has no more results * remaining. In this case the next call to {@link NoSQLClient#query} will * result in {@link QueryResult#rows} being empty array and next * continuation key being null. This is possible if the previous call to * {@link NoSQLClient#query} fetched all remaing rows in the result set * but was stopped due to the set limitations, including * {@link maxReadKB}, {@link maxWriteKB} and {@link limit}. In this case * the server will not look ahead to check if any more results remain. */ continuationKey?: QueryContinuationKey | null; } /** * Options passed to {@link NoSQLClient#adminDDL}. */ export interface AdminDDLOpt { /** * Timeout for the operation in milliseconds. Defaults to * {@link Config#ddlTimeout}. If {@link complete} is true, separate * default timeouts are used for issuing the DDL operation and waiting for * its completion, with values of {@link Config#ddlTimeout} and * {@link Config#adminPollTimeout} respectively. */ timeout?: number; /** * If set to true, the returned {@link !Promise | Promise} will only * resolve when the admin operation is completed. */ complete?: boolean; /** * If {@link complete} is true, specifies delay between successive polls * while waiting for operation completion. Defaults to * {@link Config#adminPollDelay}. Has no effect if {@link complete} is not * enabled. */ delay?: number; } /** * Options passed to {@link NoSQLClient#adminStatus}. */ export interface AdminStatusOpt extends TimeoutOpt {} /** * Options passed to {@link NoSQLClient#listNamespaces}, * {@link NoSQLClient#listUsers} and {@link NoSQLClient#listRoles}. */ export interface AdminListOpt { /** * Timeout for the operation in milliseconds. Defaults to 30 seconds. * @defaultValue 30000 (30 seconds) */ timeout?: number; /** * Specifies delay between successive polls while waiting for operation * completion. Defaults to {@link Config#adminPollDelay}. */ delay?: number; } /** * Cloud Service only. Options passed to {@link NoSQLClient#addReplica}. * @see {@link NoSQLClient#addReplica} */ export interface AddReplicaOpt extends ModifyTableOpt { /** * Read units for the replica table. * @defaultValue Read units for the existing table */ readUnits?: number; /** * Write units for the replica table. * @defaultValue Write units for the existing table */ writeUnits?: number; } /** * Cloud Service only. Options passed to {@link NoSQLClient#getReplicaStats}. * @see {@link NoSQLClient#getReplicaStats} */ export interface ReplicaStatsOpt extends CompartmentOpt, TimeoutOpt { /** * Region from which to query replica statats stats information. If not * set, stats from all replicas (regions) will be returned. */ region?: Region|string; /** * Start time from which to retrieve replica stats records. Can be * {@link !Date | Date}, string representing date and time or number of * milliseconds since epoch (January 1, 1970, 00:00:00 UTC). For string * representation see {@link !Date.parse | Date.parse()}. * <p> * If start time is not set, the number of most recent complete stats * records are returned, up to {@link limit}, per replica. */ startTime?: Date|string|number; /** * Limit to the number of replica stats record returned by one call to * {@link NoSQLClient#getReplicaStats}. * <p> * Note that this limit is for the number of stats records for each * replica. E.g. if you have 3 replicas and the limit is 1000, then up * to 1000 stats records for each replica can be returned, up to 3000 * stats records total. * @defaultValue 1000 */ limit?: number; }