arangojs
Version:
The official ArangoDB JavaScript driver.
537 lines • 16.3 kB
TypeScript
/**
* ```ts
* import type { Document, Edge } from "arangojs/documents";
* ```
*
* The "documents" module provides document/edge related types for TypeScript.
*
* @packageDocumentation
*/
/**
* Common ArangoDB metadata properties of a document.
*/
export type DocumentMetadata = {
/**
* Key of the document, which uniquely identifies the document within its
* collection.
*/
_key: string;
/**
* Unique ID of the document, which is composed of the collection name
* and the document `_key`.
*/
_id: string;
/**
* Revision of the document data.
*/
_rev: string;
};
/**
* ArangoDB metadata defining the relations of an edge document.
*/
export type EdgeMetadata = {
/**
* Unique ID of the document that acts as the edge's start vertex.
*/
_from: string;
/**
* Unique ID of the document that acts as the edge's end vertex.
*/
_to: string;
};
/**
* Type representing an object that can be stored in a collection.
*/
export type DocumentData<T extends Record<string, any> = any> = T & Partial<DocumentMetadata> & Partial<EdgeMetadata>;
/**
* Type representing an object that can be stored in an edge collection.
*/
export type EdgeData<T extends Record<string, any> = any> = T & Partial<DocumentMetadata> & EdgeMetadata;
/**
* Type representing a document stored in a collection.
*/
export type Document<T extends Record<string, any> = any> = T & DocumentMetadata & Partial<EdgeMetadata>;
/**
* Type representing an edge document stored in an edge collection.
*/
export type Edge<T extends Record<string, any> = any> = T & DocumentMetadata & EdgeMetadata;
/**
* Type representing patch data for a given object type to represent a payload
* ArangoDB can apply in a document PATCH request (i.e. a partial update).
*
* This differs from `Partial` in that it also applies itself to any nested
* objects recursively.
*/
export type Patch<T = Record<string, any>> = {
[K in keyof T]?: T[K] | Patch<T[K]>;
};
/**
* Options for checking whether a document exists in a collection.
*/
export type DocumentExistsOptions = {
/**
* If set to `true`, the request will explicitly permit ArangoDB to return a
* potentially dirty or stale result and arangojs will load balance the
* request without distinguishing between leaders and followers.
*/
allowDirtyRead?: boolean;
/**
* If set to a document revision, the document will only match if its `_rev`
* matches the given revision.
*/
ifMatch?: string;
/**
* If set to a document revision, the document will only match if its `_rev`
* does not match the given revision.
*/
ifNoneMatch?: string;
};
/**
* Options for retrieving a document from a collection.
*/
export type ReadDocumentOptions = {
/**
* If set to `true`, `null` is returned instead of an exception being thrown
* if the document does not exist.
*/
graceful?: boolean;
/**
* If set to `true`, the request will explicitly permit ArangoDB to return a
* potentially dirty or stale result and arangojs will load balance the
* request without distinguishing between leaders and followers.
*/
allowDirtyRead?: boolean;
/**
* If set to a document revision, the request will fail with an error if the
* document exists but its `_rev` does not match the given revision.
*/
ifMatch?: string;
/**
* If set to a document revision, the request will fail with an error if the
* document exists and its `_rev` matches the given revision. Note that an
* `HttpError` with code 304 will be thrown instead of an `ArangoError`.
*/
ifNoneMatch?: string;
};
/**
* Options for retrieving multiple documents from a collection.
*/
export type BulkReadDocumentsOptions = {
/**
* If set to `true`, the request will explicitly permit ArangoDB to return a
* potentially dirty or stale result and arangojs will load balance the
* request without distinguishing between leaders and followers.
*/
allowDirtyRead?: boolean;
/**
* If set to `false`, the existing document will only be modified if its
* `_rev` property matches the same property on the new data.
*
* Default: `true`
*/
ignoreRevs?: boolean;
};
/**
* Options for inserting a new document into a collection.
*/
export type InsertDocumentOptions = {
/**
* If set to `true`, data will be synchronized to disk before returning.
*
* Default: `false`
*/
waitForSync?: boolean;
/**
* If set to `true`, no data will be returned by the server. This option can
* be used to reduce network traffic.
*
* Default: `false`
*/
silent?: boolean;
/**
* If set to `true`, the complete new document will be returned as the `new`
* property on the result object. Has no effect if `silent` is set to `true`.
*
* Default: `false`
*/
returnNew?: boolean;
/**
* If set to `true`, the complete old document will be returned as the `old`
* property on the result object. Has no effect if `silent` is set to `true`.
* This option is only available when `overwriteMode` is set to `"update"` or
* `"replace"`.
*
* Default: `false`
*/
returnOld?: boolean;
/**
* Defines what should happen if a document with the same `_key` or `_id`
* already exists, instead of throwing an exception.
*
* Default: `"conflict"
*/
overwriteMode?: "ignore" | "update" | "replace" | "conflict";
/**
* If set to `false`, properties with a value of `null` will be removed from
* the new document.
*
* Default: `true`
*/
keepNull?: boolean;
/**
* If set to `false`, object properties that already exist in the old
* document will be overwritten rather than merged when an existing document
* with the same `_key` or `_id` is updated. This does not affect arrays.
*
* Default: `true`
*/
mergeObjects?: boolean;
/**
* If set to `true`, new entries will be added to in-memory index caches if
* document insertions affect the edge index or cache-enabled persistent
* indexes.
*
* Default: `false`
*/
refillIndexCaches?: boolean;
/**
* If set, the attribute with the name specified by the option is looked up
* in the stored document and the attribute value is compared numerically to
* the value of the versioning attribute in the supplied document that is
* supposed to update/replace it.
*/
versionAttribute?: string;
};
/**
* Options for replacing an existing document in a collection.
*/
export type ReplaceDocumentOptions = {
/**
* If set to `true`, data will be synchronized to disk before returning.
*
* Default: `false`
*/
waitForSync?: boolean;
/**
* If set to `true`, no data will be returned by the server. This option can
* be used to reduce network traffic.
*
* Default: `false`
*/
silent?: boolean;
/**
* If set to `true`, the complete new document will be returned as the `new`
* property on the result object. Has no effect if `silent` is set to `true`.
*
* Default: `false`
*/
returnNew?: boolean;
/**
* If set to `false`, the existing document will only be modified if its
* `_rev` property matches the same property on the new data.
*
* Default: `true`
*/
ignoreRevs?: boolean;
/**
* If set to `true`, the complete old document will be returned as the `old`
* property on the result object. Has no effect if `silent` is set to `true`.
*
* Default: `false`
*/
returnOld?: boolean;
/**
* If set to a document revision, the document will only be replaced if its
* `_rev` matches the given revision.
*/
ifMatch?: string;
/**
* If set to `true`, existing entries in in-memory index caches will be
* updated if document replacements affect the edge index or cache-enabled
* persistent indexes.
*
* Default: `false`
*/
refillIndexCaches?: boolean;
/**
* If set, the attribute with the name specified by the option is looked up
* in the stored document and the attribute value is compared numerically to
* the value of the versioning attribute in the supplied document that is
* supposed to update/replace it.
*/
versionAttribute?: string;
};
/**
* Options for updating a document in a collection.
*/
export type UpdateDocumentOptions = {
/**
* If set to `true`, data will be synchronized to disk before returning.
*
* Default: `false`
*/
waitForSync?: boolean;
/**
* If set to `true`, no data will be returned by the server. This option can
* be used to reduce network traffic.
*
* Default: `false`
*/
silent?: boolean;
/**
* If set to `true`, the complete new document will be returned as the `new`
* property on the result object. Has no effect if `silent` is set to `true`.
*
* Default: `false`
*/
returnNew?: boolean;
/**
* If set to `false`, the existing document will only be modified if its
* `_rev` property matches the same property on the new data.
*
* Default: `true`
*/
ignoreRevs?: boolean;
/**
* If set to `true`, the complete old document will be returned as the `old`
* property on the result object. Has no effect if `silent` is set to `true`.
*
* Default: `false`
*/
returnOld?: boolean;
/**
* If set to `false`, properties with a value of `null` will be removed from
* the new document.
*
* Default: `true`
*/
keepNull?: boolean;
/**
* If set to `false`, object properties that already exist in the old
* document will be overwritten rather than merged. This does not affect
* arrays.
*
* Default: `true`
*/
mergeObjects?: boolean;
/**
* If set to a document revision, the document will only be updated if its
* `_rev` matches the given revision.
*/
ifMatch?: string;
/**
* If set to `true`, existing entries in in-memory index caches will be
* updated if document updates affect the edge index or cache-enabled
* persistent indexes.
*
* Default: `false`
*/
refillIndexCaches?: boolean;
/**
* If set, the attribute with the name specified by the option is looked up
* in the stored document and the attribute value is compared numerically to
* the value of the versioning attribute in the supplied document that is
* supposed to update/replace it.
*/
versionAttribute?: string;
};
/**
* Options for removing a document from a collection.
*/
export type RemoveDocumentOptions = {
/**
* If set to `true`, changes will be synchronized to disk before returning.
*
* Default: `false`
*/
waitForSync?: boolean;
/**
* If set to `false`, the existing document will only be modified if its
* `_rev` property matches the same property on the new data.
*
* Default: `true`
*/
ignoreRevs?: boolean;
/**
* If set to `true`, the complete old document will be returned as the `old`
* property on the result object. Has no effect if `silent` is set to `true`.
*
* Default: `false`
*/
returnOld?: boolean;
/**
* If set to `true`, no data will be returned by the server. This option can
* be used to reduce network traffic.
*
* Default: `false`
*/
silent?: boolean;
/**
* If set to a document revision, the document will only be removed if its
* `_rev` matches the given revision.
*/
ifMatch?: string;
/**
* If set to `true`, existing entries in in-memory index caches will be
* deleted if document removals affect the edge index or cache-enabled
* persistent indexes.
*
* Default: `false`
*/
refillIndexCaches?: boolean;
};
/**
* Options for bulk importing documents into a collection.
*/
export type ImportDocumentsOptions = {
/**
* (Edge collections only.) Prefix to prepend to `_from` attribute values.
*/
fromPrefix?: string;
/**
* (Edge collections only.) Prefix to prepend to `_to` attribute values.
*/
toPrefix?: string;
/**
* If set to `true`, the collection is truncated before the data is imported.
*
* Default: `false`
*/
overwrite?: boolean;
/**
* Whether to wait for the documents to have been synced to disk.
*/
waitForSync?: boolean;
/**
* Controls behavior when a unique constraint is violated on the document key.
*
* * `"error"`: the document will not be imported.
* * `"update`: the document will be merged into the existing document.
* * `"replace"`: the document will replace the existing document.
* * `"ignore"`: the document will not be imported and the unique constraint
* error will be ignored.
*
* Default: `"error"`
*/
onDuplicate?: "error" | "update" | "replace" | "ignore";
/**
* If set to `true`, the import will abort if any error occurs.
*/
complete?: boolean;
/**
* Whether the response should contain additional details about documents
* that could not be imported.
*/
details?: boolean;
};
/**
* Options for retrieving a document's edges from a collection.
*/
export type DocumentEdgesOptions = {
/**
* If set to `true`, the request will explicitly permit ArangoDB to return a
* potentially dirty or stale result and arangojs will load balance the
* request without distinguishing between leaders and followers.
*/
allowDirtyRead?: boolean;
};
/**
* Represents a bulk operation failure for an individual document.
*/
export type DocumentOperationFailure = {
/**
* Indicates that the operation failed.
*/
error: true;
/**
* Human-readable description of the failure.
*/
errorMessage: string;
/**
* Numeric representation of the failure.
*/
errorNum: number;
};
/**
* Metadata returned by a document operation.
*/
export type DocumentOperationMetadata = DocumentMetadata & {
/**
* Revision of the document that was updated or replaced by this operation.
*/
_oldRev?: string;
};
/**
* Result of a collection bulk import.
*/
export type ImportDocumentsResult = {
/**
* Whether the import failed.
*/
error: false;
/**
* Number of new documents imported.
*/
created: number;
/**
* Number of documents that failed with an error.
*/
errors: number;
/**
* Number of empty documents.
*/
empty: number;
/**
* Number of documents updated.
*/
updated: number;
/**
* Number of documents that failed with an error that is ignored.
*/
ignored: number;
/**
* Additional details about any errors encountered during the import.
*/
details?: string[];
};
/**
* Result of retrieving edges in a collection.
*/
export type DocumentEdgesResult<T extends Record<string, any> = any> = {
edges: Edge<T>[];
stats: {
scannedIndex: number;
filtered: number;
};
};
/**
* A value that can be used to identify a document within a collection in
* arangojs methods, i.e. a partial ArangoDB document or the value of a
* document's `_key` or `_id`.
*
* See {@link DocumentMetadata}.
*/
export type DocumentSelector = ObjectWithDocumentId | ObjectWithDocumentKey | string;
/**
* An object with an ArangoDB document `_id` property.
*
* See {@link DocumentMetadata}.
*/
export type ObjectWithDocumentId = {
[key: string]: any;
_id: string;
};
/**
* An object with an ArangoDB document `_key` property.
*
* See {@link DocumentMetadata}.
*/
export type ObjectWithDocumentKey = {
[key: string]: any;
_key: string;
};
/**
* @internal
*/
export declare function _documentHandle(selector: DocumentSelector, collectionName: string, strict?: boolean): string;
//# sourceMappingURL=documents.d.ts.map