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,571 lines (1,300 loc) • 64.2 kB
JavaScript
const Service = require('../service.js');
const AppwriteException = require('../exception.js');
const InputFile = require('../inputFile.js');
const client = require('../client.js');
const Stream = require('stream');
const { promisify } = require('util');
const fs = require('fs');
const { File } = require('undici');
const Query = require('../query.js');
class Databases extends Service {
constructor(client)
{
super(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}
*/
async list(queries, search) {
const apiPath = '/databases';
let payload = {};
if (typeof queries !== 'undefined') {
payload['queries'] = queries;
}
if (typeof search !== 'undefined') {
payload['search'] = search;
}
return await this.client.call('get', apiPath, {
'content-type': 'application/json',
}, payload);
}
/**
* Create database
*
* Create a new Database.
*
*
* @param {string} databaseId
* @param {string} name
* @param {boolean} enabled
* @throws {AppwriteException}
* @returns {Promise}
*/
async create(databaseId, name, enabled) {
const apiPath = '/databases';
let payload = {};
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof name === 'undefined') {
throw new AppwriteException('Missing required parameter: "name"');
}
if (typeof databaseId !== 'undefined') {
payload['databaseId'] = databaseId;
}
if (typeof name !== 'undefined') {
payload['name'] = name;
}
if (typeof enabled !== 'undefined') {
payload['enabled'] = enabled;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async get(databaseId) {
const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);
let payload = {};
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
return await this.client.call('get', apiPath, {
'content-type': 'application/json',
}, payload);
}
/**
* Update database
*
* Update a database by its unique ID.
*
* @param {string} databaseId
* @param {string} name
* @param {boolean} enabled
* @throws {AppwriteException}
* @returns {Promise}
*/
async update(databaseId, name, enabled) {
const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);
let payload = {};
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof name === 'undefined') {
throw new AppwriteException('Missing required parameter: "name"');
}
if (typeof name !== 'undefined') {
payload['name'] = name;
}
if (typeof enabled !== 'undefined') {
payload['enabled'] = enabled;
}
return await this.client.call('put', apiPath, {
'content-type': 'application/json',
}, 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) {
const apiPath = '/databases/{databaseId}'.replace('{databaseId}', databaseId);
let payload = {};
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
return await this.client.call('delete', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async listCollections(databaseId, queries, search) {
const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);
let payload = {};
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof queries !== 'undefined') {
payload['queries'] = queries;
}
if (typeof search !== 'undefined') {
payload['search'] = search;
}
return await this.client.call('get', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createCollection(databaseId, collectionId, name, permissions, documentSecurity, enabled) {
const apiPath = '/databases/{databaseId}/collections'.replace('{databaseId}', databaseId);
let payload = {};
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"');
}
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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async getCollection(databaseId, collectionId) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === 'undefined') {
throw new AppwriteException('Missing required parameter: "collectionId"');
}
return await this.client.call('get', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateCollection(databaseId, collectionId, name, permissions, documentSecurity, enabled) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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"');
}
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;
}
return await this.client.call('put', apiPath, {
'content-type': 'application/json',
}, 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) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === 'undefined') {
throw new AppwriteException('Missing required parameter: "collectionId"');
}
return await this.client.call('delete', apiPath, {
'content-type': 'application/json',
}, payload);
}
/**
* List attributes
*
* List attributes in the collection.
*
* @param {string} databaseId
* @param {string} collectionId
* @param {string[]} queries
* @throws {AppwriteException}
* @returns {Promise}
*/
async listAttributes(databaseId, collectionId, queries) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof collectionId === 'undefined') {
throw new AppwriteException('Missing required parameter: "collectionId"');
}
if (typeof queries !== 'undefined') {
payload['queries'] = queries;
}
return await this.client.call('get', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createBooleanAttribute(databaseId, collectionId, key, required, xdefault, array) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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 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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateBooleanAttribute(databaseId, collectionId, key, required, xdefault) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/boolean/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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"');
}
if (typeof required !== 'undefined') {
payload['required'] = required;
}
if (typeof xdefault !== 'undefined') {
payload['default'] = xdefault;
}
return await this.client.call('patch', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createDatetimeAttribute(databaseId, collectionId, key, required, xdefault, array) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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 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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateDatetimeAttribute(databaseId, collectionId, key, required, xdefault) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/datetime/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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"');
}
if (typeof required !== 'undefined') {
payload['required'] = required;
}
if (typeof xdefault !== 'undefined') {
payload['default'] = xdefault;
}
return await this.client.call('patch', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createEmailAttribute(databaseId, collectionId, key, required, xdefault, array) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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 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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateEmailAttribute(databaseId, collectionId, key, required, xdefault) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/email/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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"');
}
if (typeof required !== 'undefined') {
payload['required'] = required;
}
if (typeof xdefault !== 'undefined') {
payload['default'] = xdefault;
}
return await this.client.call('patch', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createEnumAttribute(databaseId, collectionId, key, elements, required, xdefault, array) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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 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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateEnumAttribute(databaseId, collectionId, key, elements, required, xdefault) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/enum/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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"');
}
if (typeof elements !== 'undefined') {
payload['elements'] = elements;
}
if (typeof required !== 'undefined') {
payload['required'] = required;
}
if (typeof xdefault !== 'undefined') {
payload['default'] = xdefault;
}
return await this.client.call('patch', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createFloatAttribute(databaseId, collectionId, key, required, min, max, xdefault, array) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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 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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateFloatAttribute(databaseId, collectionId, key, required, min, max, xdefault) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/float/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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 min === 'undefined') {
throw new AppwriteException('Missing required parameter: "min"');
}
if (typeof max === 'undefined') {
throw new AppwriteException('Missing required parameter: "max"');
}
if (typeof xdefault === 'undefined') {
throw new AppwriteException('Missing required parameter: "xdefault"');
}
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;
}
return await this.client.call('patch', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createIntegerAttribute(databaseId, collectionId, key, required, min, max, xdefault, array) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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 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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateIntegerAttribute(databaseId, collectionId, key, required, min, max, xdefault) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/integer/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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 min === 'undefined') {
throw new AppwriteException('Missing required parameter: "min"');
}
if (typeof max === 'undefined') {
throw new AppwriteException('Missing required parameter: "max"');
}
if (typeof xdefault === 'undefined') {
throw new AppwriteException('Missing required parameter: "xdefault"');
}
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;
}
return await this.client.call('patch', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createIpAttribute(databaseId, collectionId, key, required, xdefault, array) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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 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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateIpAttribute(databaseId, collectionId, key, required, xdefault) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/ip/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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"');
}
if (typeof required !== 'undefined') {
payload['required'] = required;
}
if (typeof xdefault !== 'undefined') {
payload['default'] = xdefault;
}
return await this.client.call('patch', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createRelationshipAttribute(databaseId, collectionId, relatedCollectionId, type, twoWay, key, twoWayKey, onDelete) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/relationship'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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"');
}
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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createStringAttribute(databaseId, collectionId, key, size, required, xdefault, array, encrypt) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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"');
}
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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateStringAttribute(databaseId, collectionId, key, required, xdefault) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/string/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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"');
}
if (typeof required !== 'undefined') {
payload['required'] = required;
}
if (typeof xdefault !== 'undefined') {
payload['default'] = xdefault;
}
return await this.client.call('patch', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async createUrlAttribute(databaseId, collectionId, key, required, xdefault, array) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId);
let payload = {};
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 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;
}
return await this.client.call('post', apiPath, {
'content-type': 'application/json',
}, 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}
*/
async updateUrlAttribute(databaseId, collectionId, key, required, xdefault) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/url/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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"');
}
if (typeof required !== 'undefined') {
payload['required'] = required;
}
if (typeof xdefault !== 'undefined') {
payload['default'] = xdefault;
}
return await this.client.call('patch', apiPath, {
'content-type': 'application/json',
}, 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) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}', databaseId).replace('{collectionId}', collectionId).replace('{key}', key);
let payload = {};
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"');
}
return await this.client.call('get', apiPath, {
'content-type': 'application/json',
}, payload);
}
/**
* Delete attribute
*
* Deletes an attribute.
*
* @param {string} databaseId
* @param {string} collectionId
* @param {string} key
* @throws {AppwriteException}
* @returns {Promise}
*/
async deleteAttribute(databaseId, collectionId, key) {
const apiPath = '/databases/{databaseId}/collections/{collectionId}/attributes/{key}'.replace('{databaseId}',