UNPKG

node-appwrite

Version:

Appwrite is an open-source self-hosted backend server that abstract and simplify complex and repetitive development tasks behind a very simple REST API

607 lines (586 loc) 22.5 kB
import { Client } from '../client.mjs'; import { Models } from '../models.mjs'; import { RelationshipType } from '../enums/relationship-type.mjs'; import { RelationMutate } from '../enums/relation-mutate.mjs'; import { IndexType } from '../enums/index-type.mjs'; import '../query.mjs'; declare class Databases { client: Client; constructor(client: Client); /** * List databases * * Get a list of all databases from the current Appwrite project. You can use the search parameter to filter your results. * * @param {string[]} queries * @param {string} search * @throws {AppwriteException} * @returns {Promise<Models.DatabaseList>} */ list(queries?: string[], search?: string): Promise<Models.DatabaseList>; /** * Create database * * Create a new Database. * * @param {string} databaseId * @param {string} name * @param {boolean} enabled * @throws {AppwriteException} * @returns {Promise<Models.Database>} */ create(databaseId: string, name: string, enabled?: boolean): Promise<Models.Database>; /** * Get database * * Get a database by its unique ID. This endpoint response returns a JSON object with the database metadata. * * @param {string} databaseId * @throws {AppwriteException} * @returns {Promise<Models.Database>} */ get(databaseId: string): Promise<Models.Database>; /** * Update database * * Update a database by its unique ID. * * @param {string} databaseId * @param {string} name * @param {boolean} enabled * @throws {AppwriteException} * @returns {Promise<Models.Database>} */ update(databaseId: string, name: string, enabled?: boolean): Promise<Models.Database>; /** * Delete database * * Delete a database by its unique ID. Only API keys with with databases.write scope can delete a database. * * @param {string} databaseId * @throws {AppwriteException} * @returns {Promise<{}>} */ delete(databaseId: string): Promise<{}>; /** * List collections * * Get a list of all collections that belong to the provided databaseId. You can use the search parameter to filter your results. * * @param {string} databaseId * @param {string[]} queries * @param {string} search * @throws {AppwriteException} * @returns {Promise<Models.CollectionList>} */ listCollections(databaseId: string, queries?: string[], search?: string): Promise<Models.CollectionList>; /** * Create collection * * Create a new Collection. Before using this route, you should create a new database resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. * * @param {string} databaseId * @param {string} collectionId * @param {string} name * @param {string[]} permissions * @param {boolean} documentSecurity * @param {boolean} enabled * @throws {AppwriteException} * @returns {Promise<Models.Collection>} */ createCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise<Models.Collection>; /** * Get collection * * Get a collection by its unique ID. This endpoint response returns a JSON object with the collection metadata. * * @param {string} databaseId * @param {string} collectionId * @throws {AppwriteException} * @returns {Promise<Models.Collection>} */ getCollection(databaseId: string, collectionId: string): Promise<Models.Collection>; /** * Update collection * * Update a collection by its unique ID. * * @param {string} databaseId * @param {string} collectionId * @param {string} name * @param {string[]} permissions * @param {boolean} documentSecurity * @param {boolean} enabled * @throws {AppwriteException} * @returns {Promise<Models.Collection>} */ updateCollection(databaseId: string, collectionId: string, name: string, permissions?: string[], documentSecurity?: boolean, enabled?: boolean): Promise<Models.Collection>; /** * Delete collection * * Delete a collection by its unique ID. Only users with write permissions have access to delete this resource. * * @param {string} databaseId * @param {string} collectionId * @throws {AppwriteException} * @returns {Promise<{}>} */ deleteCollection(databaseId: string, collectionId: string): Promise<{}>; /** * List attributes * * List attributes in the collection. * * @param {string} databaseId * @param {string} collectionId * @param {string[]} queries * @throws {AppwriteException} * @returns {Promise<Models.AttributeList>} */ listAttributes(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.AttributeList>; /** * Create boolean attribute * * Create a boolean attribute. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {boolean} xdefault * @param {boolean} array * @throws {AppwriteException} * @returns {Promise<Models.AttributeBoolean>} */ createBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean, array?: boolean): Promise<Models.AttributeBoolean>; /** * Update boolean attribute * * Update a boolean attribute. Changing the `default` value will not update already existing documents. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {boolean} xdefault * @throws {AppwriteException} * @returns {Promise<Models.AttributeBoolean>} */ updateBooleanAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: boolean): Promise<Models.AttributeBoolean>; /** * Create datetime attribute * * Create a date time attribute according to the ISO 8601 standard. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {string} xdefault * @param {boolean} array * @throws {AppwriteException} * @returns {Promise<Models.AttributeDatetime>} */ createDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeDatetime>; /** * Update dateTime attribute * * Update a date time attribute. Changing the `default` value will not update already existing documents. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {string} xdefault * @throws {AppwriteException} * @returns {Promise<Models.AttributeDatetime>} */ updateDatetimeAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string): Promise<Models.AttributeDatetime>; /** * Create email attribute * * Create an email attribute. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {string} xdefault * @param {boolean} array * @throws {AppwriteException} * @returns {Promise<Models.AttributeEmail>} */ createEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeEmail>; /** * Update email attribute * * Update an email attribute. Changing the `default` value will not update already existing documents. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {string} xdefault * @throws {AppwriteException} * @returns {Promise<Models.AttributeEmail>} */ updateEmailAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string): Promise<Models.AttributeEmail>; /** * Create enum attribute * * Create an enumeration attribute. The `elements` param acts as a white-list of accepted values for this attribute. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {string[]} elements * @param {boolean} required * @param {string} xdefault * @param {boolean} array * @throws {AppwriteException} * @returns {Promise<Models.AttributeEnum>} */ createEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeEnum>; /** * Update enum attribute * * Update an enum attribute. Changing the `default` value will not update already existing documents. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {string[]} elements * @param {boolean} required * @param {string} xdefault * @throws {AppwriteException} * @returns {Promise<Models.AttributeEnum>} */ updateEnumAttribute(databaseId: string, collectionId: string, key: string, elements: string[], required: boolean, xdefault?: string): Promise<Models.AttributeEnum>; /** * Create float attribute * * Create a float attribute. Optionally, minimum and maximum values can be provided. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {number} min * @param {number} max * @param {number} xdefault * @param {boolean} array * @throws {AppwriteException} * @returns {Promise<Models.AttributeFloat>} */ createFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise<Models.AttributeFloat>; /** * Update float attribute * * Update a float attribute. Changing the `default` value will not update already existing documents. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {number} min * @param {number} max * @param {number} xdefault * @throws {AppwriteException} * @returns {Promise<Models.AttributeFloat>} */ updateFloatAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number): Promise<Models.AttributeFloat>; /** * Create integer attribute * * Create an integer attribute. Optionally, minimum and maximum values can be provided. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {number} min * @param {number} max * @param {number} xdefault * @param {boolean} array * @throws {AppwriteException} * @returns {Promise<Models.AttributeInteger>} */ createIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min?: number, max?: number, xdefault?: number, array?: boolean): Promise<Models.AttributeInteger>; /** * Update integer attribute * * Update an integer attribute. Changing the `default` value will not update already existing documents. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {number} min * @param {number} max * @param {number} xdefault * @throws {AppwriteException} * @returns {Promise<Models.AttributeInteger>} */ updateIntegerAttribute(databaseId: string, collectionId: string, key: string, required: boolean, min: number, max: number, xdefault?: number): Promise<Models.AttributeInteger>; /** * Create IP address attribute * * Create IP address attribute. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {string} xdefault * @param {boolean} array * @throws {AppwriteException} * @returns {Promise<Models.AttributeIp>} */ createIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeIp>; /** * Update IP address attribute * * Update an ip attribute. Changing the `default` value will not update already existing documents. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {string} xdefault * @throws {AppwriteException} * @returns {Promise<Models.AttributeIp>} */ updateIpAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string): Promise<Models.AttributeIp>; /** * Create relationship attribute * * Create relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). * * @param {string} databaseId * @param {string} collectionId * @param {string} relatedCollectionId * @param {RelationshipType} type * @param {boolean} twoWay * @param {string} key * @param {string} twoWayKey * @param {RelationMutate} onDelete * @throws {AppwriteException} * @returns {Promise<Models.AttributeRelationship>} */ createRelationshipAttribute(databaseId: string, collectionId: string, relatedCollectionId: string, type: RelationshipType, twoWay?: boolean, key?: string, twoWayKey?: string, onDelete?: RelationMutate): Promise<Models.AttributeRelationship>; /** * Create string attribute * * Create a string attribute. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {number} size * @param {boolean} required * @param {string} xdefault * @param {boolean} array * @param {boolean} encrypt * @throws {AppwriteException} * @returns {Promise<Models.AttributeString>} */ createStringAttribute(databaseId: string, collectionId: string, key: string, size: number, required: boolean, xdefault?: string, array?: boolean, encrypt?: boolean): Promise<Models.AttributeString>; /** * Update string attribute * * Update a string attribute. Changing the `default` value will not update already existing documents. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {string} xdefault * @throws {AppwriteException} * @returns {Promise<Models.AttributeString>} */ updateStringAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string): Promise<Models.AttributeString>; /** * Create URL attribute * * Create a URL attribute. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {string} xdefault * @param {boolean} array * @throws {AppwriteException} * @returns {Promise<Models.AttributeUrl>} */ createUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string, array?: boolean): Promise<Models.AttributeUrl>; /** * Update URL attribute * * Update an url attribute. Changing the `default` value will not update already existing documents. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {boolean} required * @param {string} xdefault * @throws {AppwriteException} * @returns {Promise<Models.AttributeUrl>} */ updateUrlAttribute(databaseId: string, collectionId: string, key: string, required: boolean, xdefault?: string): Promise<Models.AttributeUrl>; /** * Get attribute * * Get attribute by ID. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @throws {AppwriteException} * @returns {Promise<{}>} */ getAttribute(databaseId: string, collectionId: string, key: string): Promise<{}>; /** * Delete attribute * * Deletes an attribute. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @throws {AppwriteException} * @returns {Promise<{}>} */ deleteAttribute(databaseId: string, collectionId: string, key: string): Promise<{}>; /** * Update relationship attribute * * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {RelationMutate} onDelete * @throws {AppwriteException} * @returns {Promise<Models.AttributeRelationship>} */ updateRelationshipAttribute(databaseId: string, collectionId: string, key: string, onDelete?: RelationMutate): Promise<Models.AttributeRelationship>; /** * List documents * * Get a list of all the user&#039;s documents in a given collection. You can use the query params to filter your results. * * @param {string} databaseId * @param {string} collectionId * @param {string[]} queries * @throws {AppwriteException} * @returns {Promise<Models.DocumentList<Document>>} */ listDocuments<Document extends Models.Document>(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.DocumentList<Document>>; /** * Create document * * Create a new Document. Before using this route, you should create a new collection resource using either a [server integration](https://appwrite.io/docs/server/databases#databasesCreateCollection) API or directly from your database console. * * @param {string} databaseId * @param {string} collectionId * @param {string} documentId * @param {Omit<Document, keyof Models.Document>} data * @param {string[]} permissions * @throws {AppwriteException} * @returns {Promise<Document>} */ createDocument<Document extends Models.Document>(databaseId: string, collectionId: string, documentId: string, data: Omit<Document, keyof Models.Document>, permissions?: string[]): Promise<Document>; /** * Get document * * Get a document by its unique ID. This endpoint response returns a JSON object with the document data. * * @param {string} databaseId * @param {string} collectionId * @param {string} documentId * @param {string[]} queries * @throws {AppwriteException} * @returns {Promise<Document>} */ getDocument<Document extends Models.Document>(databaseId: string, collectionId: string, documentId: string, queries?: string[]): Promise<Document>; /** * Update document * * Update a document by its unique ID. Using the patch method you can pass only specific fields that will get updated. * * @param {string} databaseId * @param {string} collectionId * @param {string} documentId * @param {Partial<Omit<Document, keyof Models.Document>>} data * @param {string[]} permissions * @throws {AppwriteException} * @returns {Promise<Document>} */ updateDocument<Document extends Models.Document>(databaseId: string, collectionId: string, documentId: string, data?: Partial<Omit<Document, keyof Models.Document>>, permissions?: string[]): Promise<Document>; /** * Delete document * * Delete a document by its unique ID. * * @param {string} databaseId * @param {string} collectionId * @param {string} documentId * @throws {AppwriteException} * @returns {Promise<{}>} */ deleteDocument(databaseId: string, collectionId: string, documentId: string): Promise<{}>; /** * List indexes * * List indexes in the collection. * * @param {string} databaseId * @param {string} collectionId * @param {string[]} queries * @throws {AppwriteException} * @returns {Promise<Models.IndexList>} */ listIndexes(databaseId: string, collectionId: string, queries?: string[]): Promise<Models.IndexList>; /** * Create index * * Creates an index on the attributes listed. Your index should include all the attributes you will query in a single request. Attributes can be `key`, `fulltext`, and `unique`. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @param {IndexType} type * @param {string[]} attributes * @param {string[]} orders * @throws {AppwriteException} * @returns {Promise<Models.Index>} */ createIndex(databaseId: string, collectionId: string, key: string, type: IndexType, attributes: string[], orders?: string[]): Promise<Models.Index>; /** * Get index * * Get index by ID. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @throws {AppwriteException} * @returns {Promise<Models.Index>} */ getIndex(databaseId: string, collectionId: string, key: string): Promise<Models.Index>; /** * Delete index * * Delete an index. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @throws {AppwriteException} * @returns {Promise<{}>} */ deleteIndex(databaseId: string, collectionId: string, key: string): Promise<{}>; } export { Databases };