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,462 lines (1,443 loc) • 65.8 kB
JavaScript
'use strict';
var client = require('../client');
class Databases {
constructor(client) {
this.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>}
*/
async 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 = {
"content-type": "application/json"
};
return await this.client.call(
"get",
uri,
apiHeaders,
payload
);
}
/**
* Create database
*
* Create a new Database.
*
* @param {string} databaseId
* @param {string} name
* @param {boolean} enabled
* @throws {AppwriteException}
* @returns {Promise<Models.Database>}
*/
async create(databaseId, name, enabled) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof name === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async get(databaseId) {
if (typeof databaseId === "undefined") {
throw new client.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 await this.client.call(
"get",
uri,
apiHeaders,
payload
);
}
/**
* Update database
*
* Update a database by its unique ID.
*
* @param {string} databaseId
* @param {string} name
* @param {boolean} enabled
* @throws {AppwriteException}
* @returns {Promise<Models.Database>}
*/
async update(databaseId, name, enabled) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof name === "undefined") {
throw new client.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 await this.client.call(
"put",
uri,
apiHeaders,
payload
);
}
/**
* 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<{}>}
*/
async delete(databaseId) {
if (typeof databaseId === "undefined") {
throw new client.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 await this.client.call(
"delete",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async listCollections(databaseId, queries, search) {
if (typeof databaseId === "undefined") {
throw new client.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 = {
"content-type": "application/json"
};
return await this.client.call(
"get",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createCollection(databaseId, collectionId, name, permissions, documentSecurity, enabled) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof name === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async getCollection(databaseId, collectionId) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.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 await this.client.call(
"get",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateCollection(databaseId, collectionId, name, permissions, documentSecurity, enabled) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof name === "undefined") {
throw new client.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 await this.client.call(
"put",
uri,
apiHeaders,
payload
);
}
/**
* 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<{}>}
*/
async deleteCollection(databaseId, collectionId) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.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 await this.client.call(
"delete",
uri,
apiHeaders,
payload
);
}
/**
* List attributes
*
* List attributes in the collection.
*
* @param {string} databaseId
* @param {string} collectionId
* @param {string[]} queries
* @throws {AppwriteException}
* @returns {Promise<Models.AttributeList>}
*/
async listAttributes(databaseId, collectionId, queries) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.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 = {
"content-type": "application/json"
};
return await this.client.call(
"get",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createBooleanAttribute(databaseId, collectionId, key, required, xdefault, array) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateBooleanAttribute(databaseId, collectionId, key, required, xdefault) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.AppwriteException('Missing required parameter: "required"');
}
if (typeof xdefault === "undefined") {
throw new client.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;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders = {
"content-type": "application/json"
};
return await this.client.call(
"patch",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createDatetimeAttribute(databaseId, collectionId, key, required, xdefault, array) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateDatetimeAttribute(databaseId, collectionId, key, required, xdefault) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.AppwriteException('Missing required parameter: "required"');
}
if (typeof xdefault === "undefined") {
throw new client.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;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders = {
"content-type": "application/json"
};
return await this.client.call(
"patch",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createEmailAttribute(databaseId, collectionId, key, required, xdefault, array) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateEmailAttribute(databaseId, collectionId, key, required, xdefault) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.AppwriteException('Missing required parameter: "required"');
}
if (typeof xdefault === "undefined") {
throw new client.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;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders = {
"content-type": "application/json"
};
return await this.client.call(
"patch",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createEnumAttribute(databaseId, collectionId, key, elements, required, xdefault, array) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof elements === "undefined") {
throw new client.AppwriteException('Missing required parameter: "elements"');
}
if (typeof required === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateEnumAttribute(databaseId, collectionId, key, elements, required, xdefault) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof elements === "undefined") {
throw new client.AppwriteException('Missing required parameter: "elements"');
}
if (typeof required === "undefined") {
throw new client.AppwriteException('Missing required parameter: "required"');
}
if (typeof xdefault === "undefined") {
throw new client.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;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders = {
"content-type": "application/json"
};
return await this.client.call(
"patch",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createFloatAttribute(databaseId, collectionId, key, required, min, max, xdefault, array) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateFloatAttribute(databaseId, collectionId, key, required, min, max, xdefault) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.AppwriteException('Missing required parameter: "required"');
}
if (typeof min === "undefined") {
throw new client.AppwriteException('Missing required parameter: "min"');
}
if (typeof max === "undefined") {
throw new client.AppwriteException('Missing required parameter: "max"');
}
if (typeof xdefault === "undefined") {
throw new client.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;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders = {
"content-type": "application/json"
};
return await this.client.call(
"patch",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createIntegerAttribute(databaseId, collectionId, key, required, min, max, xdefault, array) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateIntegerAttribute(databaseId, collectionId, key, required, min, max, xdefault) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.AppwriteException('Missing required parameter: "required"');
}
if (typeof min === "undefined") {
throw new client.AppwriteException('Missing required parameter: "min"');
}
if (typeof max === "undefined") {
throw new client.AppwriteException('Missing required parameter: "max"');
}
if (typeof xdefault === "undefined") {
throw new client.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;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders = {
"content-type": "application/json"
};
return await this.client.call(
"patch",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createIpAttribute(databaseId, collectionId, key, required, xdefault, array) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateIpAttribute(databaseId, collectionId, key, required, xdefault) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.AppwriteException('Missing required parameter: "required"');
}
if (typeof xdefault === "undefined") {
throw new client.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;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders = {
"content-type": "application/json"
};
return await this.client.call(
"patch",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createRelationshipAttribute(databaseId, collectionId, relatedCollectionId, type, twoWay, key, twoWayKey, onDelete) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof relatedCollectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "relatedCollectionId"');
}
if (typeof type === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createStringAttribute(databaseId, collectionId, key, size, required, xdefault, array, encrypt) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof size === "undefined") {
throw new client.AppwriteException('Missing required parameter: "size"');
}
if (typeof required === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateStringAttribute(databaseId, collectionId, key, required, xdefault) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.AppwriteException('Missing required parameter: "required"');
}
if (typeof xdefault === "undefined") {
throw new client.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;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders = {
"content-type": "application/json"
};
return await this.client.call(
"patch",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async createUrlAttribute(databaseId, collectionId, key, required, xdefault, array) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.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 await this.client.call(
"post",
uri,
apiHeaders,
payload
);
}
/**
* 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>}
*/
async updateUrlAttribute(databaseId, collectionId, key, required, xdefault) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteException('Missing required parameter: "key"');
}
if (typeof required === "undefined") {
throw new client.AppwriteException('Missing required parameter: "required"');
}
if (typeof xdefault === "undefined") {
throw new client.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;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders = {
"content-type": "application/json"
};
return await this.client.call(
"patch",
uri,
apiHeaders,
payload
);
}
/**
* Get attribute
*
* Get attribute by ID.
*
* @param {string} databaseId
* @param {string} collectionId
* @param {string} key
* @throws {AppwriteException}
* @returns {Promise<{}>}
*/
async getAttribute(databaseId, collectionId, key) {
if (typeof databaseId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === "undefined") {
throw new client.AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof key === "undefined") {
throw new client.AppwriteExce