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

1,466 lines (1,447 loc) 68.5 kB
import { AppwriteException } from '../client.mjs'; // src/services/databases.ts var Databases = class { constructor(client) { this.client = client; } /** * 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, search) { const apiPath = "/databases"; const payload = {}; if (typeof queries !== "undefined") { payload["queries"] = queries; } if (typeof search !== "undefined") { payload["search"] = search; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = {}; return this.client.call( "get", uri, apiHeaders, payload ); } /** * Create a new Database. * * @param {string} databaseId * @param {string} name * @param {boolean} enabled * @throws {AppwriteException} * @returns {Promise<Models.Database>} */ create(databaseId, name, enabled) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof name === "undefined") { throw new AppwriteException('Missing required parameter: "name"'); } const apiPath = "/databases"; const payload = {}; if (typeof databaseId !== "undefined") { payload["databaseId"] = databaseId; } if (typeof name !== "undefined") { payload["name"] = name; } if (typeof enabled !== "undefined") { payload["enabled"] = enabled; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } const apiPath = "/databases/{databaseId}".replace("{databaseId}", databaseId); const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = {}; return this.client.call( "get", uri, apiHeaders, payload ); } /** * Update a database by its unique ID. * * @param {string} databaseId * @param {string} name * @param {boolean} enabled * @throws {AppwriteException} * @returns {Promise<Models.Database>} */ update(databaseId, name, enabled) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof name === "undefined") { throw new AppwriteException('Missing required parameter: "name"'); } const apiPath = "/databases/{databaseId}".replace("{databaseId}", databaseId); const payload = {}; if (typeof name !== "undefined") { payload["name"] = name; } if (typeof enabled !== "undefined") { payload["enabled"] = enabled; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "put", uri, apiHeaders, payload ); } /** * 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) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } const apiPath = "/databases/{databaseId}".replace("{databaseId}", databaseId); const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "delete", uri, apiHeaders, payload ); } /** * 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, queries, search) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } const apiPath = "/databases/{databaseId}/collections".replace("{databaseId}", databaseId); const payload = {}; if (typeof queries !== "undefined") { payload["queries"] = queries; } if (typeof search !== "undefined") { payload["search"] = search; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = {}; return this.client.call( "get", uri, apiHeaders, payload ); } /** * 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, collectionId, name, permissions, documentSecurity, enabled) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof name === "undefined") { throw new AppwriteException('Missing required parameter: "name"'); } const apiPath = "/databases/{databaseId}/collections".replace("{databaseId}", databaseId); const payload = {}; if (typeof collectionId !== "undefined") { payload["collectionId"] = collectionId; } if (typeof name !== "undefined") { payload["name"] = name; } if (typeof permissions !== "undefined") { payload["permissions"] = permissions; } if (typeof documentSecurity !== "undefined") { payload["documentSecurity"] = documentSecurity; } if (typeof enabled !== "undefined") { payload["enabled"] = enabled; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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, collectionId) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = {}; return this.client.call( "get", uri, apiHeaders, payload ); } /** * 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, collectionId, name, permissions, documentSecurity, enabled) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof name === "undefined") { throw new AppwriteException('Missing required parameter: "name"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof name !== "undefined") { payload["name"] = name; } if (typeof permissions !== "undefined") { payload["permissions"] = permissions; } if (typeof documentSecurity !== "undefined") { payload["documentSecurity"] = documentSecurity; } if (typeof enabled !== "undefined") { payload["enabled"] = enabled; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "put", uri, apiHeaders, payload ); } /** * 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, collectionId) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "delete", uri, apiHeaders, payload ); } /** * List attributes in the collection. * * @param {string} databaseId * @param {string} collectionId * @param {string[]} queries * @throws {AppwriteException} * @returns {Promise<Models.AttributeList>} */ listAttributes(databaseId, collectionId, queries) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof queries !== "undefined") { payload["queries"] = queries; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = {}; return this.client.call( "get", uri, apiHeaders, payload ); } /** * 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, collectionId, key, required, xdefault, array) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/boolean".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof key !== "undefined") { payload["key"] = key; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof array !== "undefined") { payload["array"] = array; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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 * @param {string} newKey * @throws {AppwriteException} * @returns {Promise<Models.AttributeBoolean>} */ updateBooleanAttribute(databaseId, collectionId, key, required, xdefault, newKey) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } if (typeof xdefault === "undefined") { throw new AppwriteException('Missing required parameter: "xdefault"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/boolean/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof newKey !== "undefined") { payload["newKey"] = newKey; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "patch", uri, apiHeaders, payload ); } /** * 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, collectionId, key, required, xdefault, array) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/datetime".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof key !== "undefined") { payload["key"] = key; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof array !== "undefined") { payload["array"] = array; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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 * @param {string} newKey * @throws {AppwriteException} * @returns {Promise<Models.AttributeDatetime>} */ updateDatetimeAttribute(databaseId, collectionId, key, required, xdefault, newKey) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } if (typeof xdefault === "undefined") { throw new AppwriteException('Missing required parameter: "xdefault"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/datetime/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof newKey !== "undefined") { payload["newKey"] = newKey; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "patch", uri, apiHeaders, payload ); } /** * 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, collectionId, key, required, xdefault, array) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/email".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof key !== "undefined") { payload["key"] = key; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof array !== "undefined") { payload["array"] = array; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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 * @param {string} newKey * @throws {AppwriteException} * @returns {Promise<Models.AttributeEmail>} */ updateEmailAttribute(databaseId, collectionId, key, required, xdefault, newKey) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } if (typeof xdefault === "undefined") { throw new AppwriteException('Missing required parameter: "xdefault"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/email/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof newKey !== "undefined") { payload["newKey"] = newKey; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "patch", uri, apiHeaders, payload ); } /** * 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, collectionId, key, elements, required, xdefault, array) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof elements === "undefined") { throw new AppwriteException('Missing required parameter: "elements"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/enum".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof key !== "undefined") { payload["key"] = key; } if (typeof elements !== "undefined") { payload["elements"] = elements; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof array !== "undefined") { payload["array"] = array; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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 * @param {string} newKey * @throws {AppwriteException} * @returns {Promise<Models.AttributeEnum>} */ updateEnumAttribute(databaseId, collectionId, key, elements, required, xdefault, newKey) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof elements === "undefined") { throw new AppwriteException('Missing required parameter: "elements"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } if (typeof xdefault === "undefined") { throw new AppwriteException('Missing required parameter: "xdefault"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/enum/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; if (typeof elements !== "undefined") { payload["elements"] = elements; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof newKey !== "undefined") { payload["newKey"] = newKey; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "patch", uri, apiHeaders, payload ); } /** * 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, collectionId, key, required, min, max, xdefault, array) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/float".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof key !== "undefined") { payload["key"] = key; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof min !== "undefined") { payload["min"] = min; } if (typeof max !== "undefined") { payload["max"] = max; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof array !== "undefined") { payload["array"] = array; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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} xdefault * @param {number} min * @param {number} max * @param {string} newKey * @throws {AppwriteException} * @returns {Promise<Models.AttributeFloat>} */ updateFloatAttribute(databaseId, collectionId, key, required, xdefault, min, max, newKey) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } if (typeof xdefault === "undefined") { throw new AppwriteException('Missing required parameter: "xdefault"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/float/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; if (typeof required !== "undefined") { payload["required"] = required; } if (typeof min !== "undefined") { payload["min"] = min; } if (typeof max !== "undefined") { payload["max"] = max; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof newKey !== "undefined") { payload["newKey"] = newKey; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "patch", uri, apiHeaders, payload ); } /** * 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, collectionId, key, required, min, max, xdefault, array) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/integer".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof key !== "undefined") { payload["key"] = key; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof min !== "undefined") { payload["min"] = min; } if (typeof max !== "undefined") { payload["max"] = max; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof array !== "undefined") { payload["array"] = array; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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} xdefault * @param {number} min * @param {number} max * @param {string} newKey * @throws {AppwriteException} * @returns {Promise<Models.AttributeInteger>} */ updateIntegerAttribute(databaseId, collectionId, key, required, xdefault, min, max, newKey) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } if (typeof xdefault === "undefined") { throw new AppwriteException('Missing required parameter: "xdefault"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/integer/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; if (typeof required !== "undefined") { payload["required"] = required; } if (typeof min !== "undefined") { payload["min"] = min; } if (typeof max !== "undefined") { payload["max"] = max; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof newKey !== "undefined") { payload["newKey"] = newKey; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "patch", uri, apiHeaders, payload ); } /** * 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, collectionId, key, required, xdefault, array) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/ip".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof key !== "undefined") { payload["key"] = key; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof array !== "undefined") { payload["array"] = array; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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 * @param {string} newKey * @throws {AppwriteException} * @returns {Promise<Models.AttributeIp>} */ updateIpAttribute(databaseId, collectionId, key, required, xdefault, newKey) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } if (typeof xdefault === "undefined") { throw new AppwriteException('Missing required parameter: "xdefault"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/ip/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof newKey !== "undefined") { payload["newKey"] = newKey; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "patch", uri, apiHeaders, payload ); } /** * 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, collectionId, relatedCollectionId, type, twoWay, key, twoWayKey, onDelete) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof relatedCollectionId === "undefined") { throw new AppwriteException('Missing required parameter: "relatedCollectionId"'); } if (typeof type === "undefined") { throw new AppwriteException('Missing required parameter: "type"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/relationship".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof relatedCollectionId !== "undefined") { payload["relatedCollectionId"] = relatedCollectionId; } if (typeof type !== "undefined") { payload["type"] = type; } if (typeof twoWay !== "undefined") { payload["twoWay"] = twoWay; } if (typeof key !== "undefined") { payload["key"] = key; } if (typeof twoWayKey !== "undefined") { payload["twoWayKey"] = twoWayKey; } if (typeof onDelete !== "undefined") { payload["onDelete"] = onDelete; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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, collectionId, key, size, required, xdefault, array, encrypt) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof size === "undefined") { throw new AppwriteException('Missing required parameter: "size"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/string".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof key !== "undefined") { payload["key"] = key; } if (typeof size !== "undefined") { payload["size"] = size; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof array !== "undefined") { payload["array"] = array; } if (typeof encrypt !== "undefined") { payload["encrypt"] = encrypt; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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 * @param {number} size * @param {string} newKey * @throws {AppwriteException} * @returns {Promise<Models.AttributeString>} */ updateStringAttribute(databaseId, collectionId, key, required, xdefault, size, newKey) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } if (typeof xdefault === "undefined") { throw new AppwriteException('Missing required parameter: "xdefault"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/string/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof size !== "undefined") { payload["size"] = size; } if (typeof newKey !== "undefined") { payload["newKey"] = newKey; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "patch", uri, apiHeaders, payload ); } /** * 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, collectionId, key, required, xdefault, array) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/url".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId); const payload = {}; if (typeof key !== "undefined") { payload["key"] = key; } if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof array !== "undefined") { payload["array"] = array; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "post", uri, apiHeaders, payload ); } /** * 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 * @param {string} newKey * @throws {AppwriteException} * @returns {Promise<Models.AttributeUrl>} */ updateUrlAttribute(databaseId, collectionId, key, required, xdefault, newKey) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } if (typeof required === "undefined") { throw new AppwriteException('Missing required parameter: "required"'); } if (typeof xdefault === "undefined") { throw new AppwriteException('Missing required parameter: "xdefault"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/url/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; if (typeof required !== "undefined") { payload["required"] = required; } if (typeof xdefault !== "undefined") { payload["default"] = xdefault; } if (typeof newKey !== "undefined") { payload["newKey"] = newKey; } const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "patch", uri, apiHeaders, payload ); } /** * Get attribute by ID. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @throws {AppwriteException} * @returns {Promise<{}>} */ getAttribute(databaseId, collectionId, key) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = {}; return this.client.call( "get", uri, apiHeaders, payload ); } /** * Deletes an attribute. * * @param {string} databaseId * @param {string} collectionId * @param {string} key * @throws {AppwriteException} * @returns {Promise<{}>} */ deleteAttribute(databaseId, collectionId, key) { if (typeof databaseId === "undefined") { throw new AppwriteException('Missing required parameter: "databaseId"'); } if (typeof collectionId === "undefined") { throw new AppwriteException('Missing required parameter: "collectionId"'); } if (typeof key === "undefined") { throw new AppwriteException('Missing required parameter: "key"'); } const apiPath = "/databases/{databaseId}/collections/{collectionId}/attributes/{key}".replace("{databaseId}", databaseId).replace("{collectionId}", collectionId).replace("{key}", key); const payload = {}; const uri = new URL(this.client.config.endpoint + apiPath); const apiHeaders = { "content-type": "application/json" }; return this.client.call( "delete", uri, apiHeaders, payload ); } /** * Update relationship attribute. [Learn more about relationship attributes](https://appwrite.io/docs/databases-relationships#relationship-attributes). * * @param {string} datab