appwrite
Version:
Appwrite is an open-source self-hosted backend server that abstracts and simplifies complex and repetitive development tasks behind a very simple REST API
975 lines (880 loc) • 52.7 kB
text/typescript
import { Service } from '../service';
import { AppwriteException, Client, type Payload, UploadProgress } from '../client';
import type { Models } from '../models';
export class TablesDB {
client: Client;
constructor(client: Client) {
this.client = client;
}
/**
* List transactions across all databases.
*
* @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries).
* @throws {AppwriteException}
* @returns {Promise<Models.TransactionList>}
*/
listTransactions(params?: { queries?: string[] }): Promise<Models.TransactionList>;
/**
* List transactions across all databases.
*
* @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries).
* @throws {AppwriteException}
* @returns {Promise<Models.TransactionList>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
listTransactions(queries?: string[]): Promise<Models.TransactionList>;
listTransactions(
paramsOrFirst?: { queries?: string[] } | string[]
): Promise<Models.TransactionList> {
let params: { queries?: string[] };
if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { queries?: string[] };
} else {
params = {
queries: paramsOrFirst as string[]
};
}
const queries = params.queries;
const apiPath = '/tablesdb/transactions';
const payload: Payload = {};
if (typeof queries !== 'undefined') {
payload['queries'] = queries;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
}
return this.client.call(
'get',
uri,
apiHeaders,
payload
);
}
/**
* Create a new transaction.
*
* @param {number} params.ttl - Seconds before the transaction expires.
* @throws {AppwriteException}
* @returns {Promise<Models.Transaction>}
*/
createTransaction(params?: { ttl?: number }): Promise<Models.Transaction>;
/**
* Create a new transaction.
*
* @param {number} ttl - Seconds before the transaction expires.
* @throws {AppwriteException}
* @returns {Promise<Models.Transaction>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
createTransaction(ttl?: number): Promise<Models.Transaction>;
createTransaction(
paramsOrFirst?: { ttl?: number } | number
): Promise<Models.Transaction> {
let params: { ttl?: number };
if (!paramsOrFirst || (paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { ttl?: number };
} else {
params = {
ttl: paramsOrFirst as number
};
}
const ttl = params.ttl;
const apiPath = '/tablesdb/transactions';
const payload: Payload = {};
if (typeof ttl !== 'undefined') {
payload['ttl'] = ttl;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
'content-type': 'application/json',
}
return this.client.call(
'post',
uri,
apiHeaders,
payload
);
}
/**
* Get a transaction by its unique ID.
*
* @param {string} params.transactionId - Transaction ID.
* @throws {AppwriteException}
* @returns {Promise<Models.Transaction>}
*/
getTransaction(params: { transactionId: string }): Promise<Models.Transaction>;
/**
* Get a transaction by its unique ID.
*
* @param {string} transactionId - Transaction ID.
* @throws {AppwriteException}
* @returns {Promise<Models.Transaction>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
getTransaction(transactionId: string): Promise<Models.Transaction>;
getTransaction(
paramsOrFirst: { transactionId: string } | string
): Promise<Models.Transaction> {
let params: { transactionId: string };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { transactionId: string };
} else {
params = {
transactionId: paramsOrFirst as string
};
}
const transactionId = params.transactionId;
if (typeof transactionId === 'undefined') {
throw new AppwriteException('Missing required parameter: "transactionId"');
}
const apiPath = '/tablesdb/transactions/{transactionId}'.replace('{transactionId}', transactionId);
const payload: Payload = {};
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
}
return this.client.call(
'get',
uri,
apiHeaders,
payload
);
}
/**
* Update a transaction, to either commit or roll back its operations.
*
* @param {string} params.transactionId - Transaction ID.
* @param {boolean} params.commit - Commit transaction?
* @param {boolean} params.rollback - Rollback transaction?
* @throws {AppwriteException}
* @returns {Promise<Models.Transaction>}
*/
updateTransaction(params: { transactionId: string, commit?: boolean, rollback?: boolean }): Promise<Models.Transaction>;
/**
* Update a transaction, to either commit or roll back its operations.
*
* @param {string} transactionId - Transaction ID.
* @param {boolean} commit - Commit transaction?
* @param {boolean} rollback - Rollback transaction?
* @throws {AppwriteException}
* @returns {Promise<Models.Transaction>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
updateTransaction(transactionId: string, commit?: boolean, rollback?: boolean): Promise<Models.Transaction>;
updateTransaction(
paramsOrFirst: { transactionId: string, commit?: boolean, rollback?: boolean } | string,
...rest: [(boolean)?, (boolean)?]
): Promise<Models.Transaction> {
let params: { transactionId: string, commit?: boolean, rollback?: boolean };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { transactionId: string, commit?: boolean, rollback?: boolean };
} else {
params = {
transactionId: paramsOrFirst as string,
commit: rest[0] as boolean,
rollback: rest[1] as boolean
};
}
const transactionId = params.transactionId;
const commit = params.commit;
const rollback = params.rollback;
if (typeof transactionId === 'undefined') {
throw new AppwriteException('Missing required parameter: "transactionId"');
}
const apiPath = '/tablesdb/transactions/{transactionId}'.replace('{transactionId}', transactionId);
const payload: Payload = {};
if (typeof commit !== 'undefined') {
payload['commit'] = commit;
}
if (typeof rollback !== 'undefined') {
payload['rollback'] = rollback;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
'content-type': 'application/json',
}
return this.client.call(
'patch',
uri,
apiHeaders,
payload
);
}
/**
* Delete a transaction by its unique ID.
*
* @param {string} params.transactionId - Transaction ID.
* @throws {AppwriteException}
* @returns {Promise<{}>}
*/
deleteTransaction(params: { transactionId: string }): Promise<{}>;
/**
* Delete a transaction by its unique ID.
*
* @param {string} transactionId - Transaction ID.
* @throws {AppwriteException}
* @returns {Promise<{}>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
deleteTransaction(transactionId: string): Promise<{}>;
deleteTransaction(
paramsOrFirst: { transactionId: string } | string
): Promise<{}> {
let params: { transactionId: string };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { transactionId: string };
} else {
params = {
transactionId: paramsOrFirst as string
};
}
const transactionId = params.transactionId;
if (typeof transactionId === 'undefined') {
throw new AppwriteException('Missing required parameter: "transactionId"');
}
const apiPath = '/tablesdb/transactions/{transactionId}'.replace('{transactionId}', transactionId);
const payload: Payload = {};
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
'content-type': 'application/json',
}
return this.client.call(
'delete',
uri,
apiHeaders,
payload
);
}
/**
* Create multiple operations in a single transaction.
*
* @param {string} params.transactionId - Transaction ID.
* @param {object[]} params.operations - Array of staged operations.
* @throws {AppwriteException}
* @returns {Promise<Models.Transaction>}
*/
createOperations(params: { transactionId: string, operations?: object[] }): Promise<Models.Transaction>;
/**
* Create multiple operations in a single transaction.
*
* @param {string} transactionId - Transaction ID.
* @param {object[]} operations - Array of staged operations.
* @throws {AppwriteException}
* @returns {Promise<Models.Transaction>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
createOperations(transactionId: string, operations?: object[]): Promise<Models.Transaction>;
createOperations(
paramsOrFirst: { transactionId: string, operations?: object[] } | string,
...rest: [(object[])?]
): Promise<Models.Transaction> {
let params: { transactionId: string, operations?: object[] };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { transactionId: string, operations?: object[] };
} else {
params = {
transactionId: paramsOrFirst as string,
operations: rest[0] as object[]
};
}
const transactionId = params.transactionId;
const operations = params.operations;
if (typeof transactionId === 'undefined') {
throw new AppwriteException('Missing required parameter: "transactionId"');
}
const apiPath = '/tablesdb/transactions/{transactionId}/operations'.replace('{transactionId}', transactionId);
const payload: Payload = {};
if (typeof operations !== 'undefined') {
payload['operations'] = operations;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
'content-type': 'application/json',
}
return this.client.call(
'post',
uri,
apiHeaders,
payload
);
}
/**
* Get a list of all the user's rows in a given table. You can use the query params to filter your results.
*
* @param {string} params.databaseId - Database ID.
* @param {string} params.tableId - Table ID. You can create a new table using the TablesDB service [server integration](https://appwrite.io/docs/products/databases/tables#create-table).
* @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.
* @param {string} params.transactionId - Transaction ID to read uncommitted changes within the transaction.
* @param {boolean} params.total - When set to false, the total count returned will be 0 and will not be calculated.
* @throws {AppwriteException}
* @returns {Promise<Models.RowList<Row>>}
*/
listRows<Row extends Models.Row = Models.DefaultRow>(params: { databaseId: string, tableId: string, queries?: string[], transactionId?: string, total?: boolean }): Promise<Models.RowList<Row>>;
/**
* Get a list of all the user's rows in a given table. You can use the query params to filter your results.
*
* @param {string} databaseId - Database ID.
* @param {string} tableId - Table ID. You can create a new table using the TablesDB service [server integration](https://appwrite.io/docs/products/databases/tables#create-table).
* @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.
* @param {string} transactionId - Transaction ID to read uncommitted changes within the transaction.
* @param {boolean} total - When set to false, the total count returned will be 0 and will not be calculated.
* @throws {AppwriteException}
* @returns {Promise<Models.RowList<Row>>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
listRows<Row extends Models.Row = Models.DefaultRow>(databaseId: string, tableId: string, queries?: string[], transactionId?: string, total?: boolean): Promise<Models.RowList<Row>>;
listRows<Row extends Models.Row = Models.DefaultRow>(
paramsOrFirst: { databaseId: string, tableId: string, queries?: string[], transactionId?: string, total?: boolean } | string,
...rest: [(string)?, (string[])?, (string)?, (boolean)?]
): Promise<Models.RowList<Row>> {
let params: { databaseId: string, tableId: string, queries?: string[], transactionId?: string, total?: boolean };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { databaseId: string, tableId: string, queries?: string[], transactionId?: string, total?: boolean };
} else {
params = {
databaseId: paramsOrFirst as string,
tableId: rest[0] as string,
queries: rest[1] as string[],
transactionId: rest[2] as string,
total: rest[3] as boolean
};
}
const databaseId = params.databaseId;
const tableId = params.tableId;
const queries = params.queries;
const transactionId = params.transactionId;
const total = params.total;
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof tableId === 'undefined') {
throw new AppwriteException('Missing required parameter: "tableId"');
}
const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows'.replace('{databaseId}', databaseId).replace('{tableId}', tableId);
const payload: Payload = {};
if (typeof queries !== 'undefined') {
payload['queries'] = queries;
}
if (typeof transactionId !== 'undefined') {
payload['transactionId'] = transactionId;
}
if (typeof total !== 'undefined') {
payload['total'] = total;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
}
return this.client.call(
'get',
uri,
apiHeaders,
payload
);
}
/**
* Create a new Row. Before using this route, you should create a new table resource using either a [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable) API or directly from your database console.
*
* @param {string} params.databaseId - Database ID.
* @param {string} params.tableId - Table ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable). Make sure to define columns before creating rows.
* @param {string} params.rowId - Row ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.
* @param {Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>} params.data - Row data as JSON object.
* @param {string[]} params.permissions - An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
* @param {string} params.transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
*/
createRow<Row extends Models.Row = Models.DefaultRow>(params: { databaseId: string, tableId: string, rowId: string, data: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>, permissions?: string[], transactionId?: string }): Promise<Row>;
/**
* Create a new Row. Before using this route, you should create a new table resource using either a [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable) API or directly from your database console.
*
* @param {string} databaseId - Database ID.
* @param {string} tableId - Table ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable). Make sure to define columns before creating rows.
* @param {string} rowId - Row ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can't start with a special char. Max length is 36 chars.
* @param {Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>} data - Row data as JSON object.
* @param {string[]} permissions - An array of permissions strings. By default, only the current user is granted all permissions. [Learn more about permissions](https://appwrite.io/docs/permissions).
* @param {string} transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
createRow<Row extends Models.Row = Models.DefaultRow>(databaseId: string, tableId: string, rowId: string, data: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>, permissions?: string[], transactionId?: string): Promise<Row>;
createRow<Row extends Models.Row = Models.DefaultRow>(
paramsOrFirst: { databaseId: string, tableId: string, rowId: string, data: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>, permissions?: string[], transactionId?: string } | string,
...rest: [(string)?, (string)?, (Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>)?, (string[])?, (string)?]
): Promise<Row> {
let params: { databaseId: string, tableId: string, rowId: string, data: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>, permissions?: string[], transactionId?: string };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { databaseId: string, tableId: string, rowId: string, data: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>, permissions?: string[], transactionId?: string };
} else {
params = {
databaseId: paramsOrFirst as string,
tableId: rest[0] as string,
rowId: rest[1] as string,
data: rest[2] as Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Omit<Row, keyof Models.Row>,
permissions: rest[3] as string[],
transactionId: rest[4] as string
};
}
const databaseId = params.databaseId;
const tableId = params.tableId;
const rowId = params.rowId;
const data = params.data;
const permissions = params.permissions;
const transactionId = params.transactionId;
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof tableId === 'undefined') {
throw new AppwriteException('Missing required parameter: "tableId"');
}
if (typeof rowId === 'undefined') {
throw new AppwriteException('Missing required parameter: "rowId"');
}
if (typeof data === 'undefined') {
throw new AppwriteException('Missing required parameter: "data"');
}
const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows'.replace('{databaseId}', databaseId).replace('{tableId}', tableId);
const payload: Payload = {};
if (typeof rowId !== 'undefined') {
payload['rowId'] = rowId;
}
if (typeof data !== 'undefined') {
payload['data'] = data;
}
if (typeof permissions !== 'undefined') {
payload['permissions'] = permissions;
}
if (typeof transactionId !== 'undefined') {
payload['transactionId'] = transactionId;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
'content-type': 'application/json',
}
return this.client.call(
'post',
uri,
apiHeaders,
payload
);
}
/**
* Get a row by its unique ID. This endpoint response returns a JSON object with the row data.
*
* @param {string} params.databaseId - Database ID.
* @param {string} params.tableId - Table ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable).
* @param {string} params.rowId - Row ID.
* @param {string[]} params.queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.
* @param {string} params.transactionId - Transaction ID to read uncommitted changes within the transaction.
* @throws {AppwriteException}
* @returns {Promise<Row>}
*/
getRow<Row extends Models.Row = Models.DefaultRow>(params: { databaseId: string, tableId: string, rowId: string, queries?: string[], transactionId?: string }): Promise<Row>;
/**
* Get a row by its unique ID. This endpoint response returns a JSON object with the row data.
*
* @param {string} databaseId - Database ID.
* @param {string} tableId - Table ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable).
* @param {string} rowId - Row ID.
* @param {string[]} queries - Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of 100 queries are allowed, each 4096 characters long.
* @param {string} transactionId - Transaction ID to read uncommitted changes within the transaction.
* @throws {AppwriteException}
* @returns {Promise<Row>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
getRow<Row extends Models.Row = Models.DefaultRow>(databaseId: string, tableId: string, rowId: string, queries?: string[], transactionId?: string): Promise<Row>;
getRow<Row extends Models.Row = Models.DefaultRow>(
paramsOrFirst: { databaseId: string, tableId: string, rowId: string, queries?: string[], transactionId?: string } | string,
...rest: [(string)?, (string)?, (string[])?, (string)?]
): Promise<Row> {
let params: { databaseId: string, tableId: string, rowId: string, queries?: string[], transactionId?: string };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { databaseId: string, tableId: string, rowId: string, queries?: string[], transactionId?: string };
} else {
params = {
databaseId: paramsOrFirst as string,
tableId: rest[0] as string,
rowId: rest[1] as string,
queries: rest[2] as string[],
transactionId: rest[3] as string
};
}
const databaseId = params.databaseId;
const tableId = params.tableId;
const rowId = params.rowId;
const queries = params.queries;
const transactionId = params.transactionId;
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof tableId === 'undefined') {
throw new AppwriteException('Missing required parameter: "tableId"');
}
if (typeof rowId === 'undefined') {
throw new AppwriteException('Missing required parameter: "rowId"');
}
const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replace('{databaseId}', databaseId).replace('{tableId}', tableId).replace('{rowId}', rowId);
const payload: Payload = {};
if (typeof queries !== 'undefined') {
payload['queries'] = queries;
}
if (typeof transactionId !== 'undefined') {
payload['transactionId'] = transactionId;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
}
return this.client.call(
'get',
uri,
apiHeaders,
payload
);
}
/**
* Create or update a Row. Before using this route, you should create a new table resource using either a [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable) API or directly from your database console.
*
* @param {string} params.databaseId - Database ID.
* @param {string} params.tableId - Table ID.
* @param {string} params.rowId - Row ID.
* @param {Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>} params.data - Row data as JSON object. Include all required columns of the row to be created or updated.
* @param {string[]} params.permissions - An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).
* @param {string} params.transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
*/
upsertRow<Row extends Models.Row = Models.DefaultRow>(params: { databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string }): Promise<Row>;
/**
* Create or update a Row. Before using this route, you should create a new table resource using either a [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable) API or directly from your database console.
*
* @param {string} databaseId - Database ID.
* @param {string} tableId - Table ID.
* @param {string} rowId - Row ID.
* @param {Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>} data - Row data as JSON object. Include all required columns of the row to be created or updated.
* @param {string[]} permissions - An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).
* @param {string} transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
upsertRow<Row extends Models.Row = Models.DefaultRow>(databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string): Promise<Row>;
upsertRow<Row extends Models.Row = Models.DefaultRow>(
paramsOrFirst: { databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string } | string,
...rest: [(string)?, (string)?, (Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>)?, (string[])?, (string)?]
): Promise<Row> {
let params: { databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string };
} else {
params = {
databaseId: paramsOrFirst as string,
tableId: rest[0] as string,
rowId: rest[1] as string,
data: rest[2] as Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>,
permissions: rest[3] as string[],
transactionId: rest[4] as string
};
}
const databaseId = params.databaseId;
const tableId = params.tableId;
const rowId = params.rowId;
const data = params.data;
const permissions = params.permissions;
const transactionId = params.transactionId;
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof tableId === 'undefined') {
throw new AppwriteException('Missing required parameter: "tableId"');
}
if (typeof rowId === 'undefined') {
throw new AppwriteException('Missing required parameter: "rowId"');
}
const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replace('{databaseId}', databaseId).replace('{tableId}', tableId).replace('{rowId}', rowId);
const payload: Payload = {};
if (typeof data !== 'undefined') {
payload['data'] = data;
}
if (typeof permissions !== 'undefined') {
payload['permissions'] = permissions;
}
if (typeof transactionId !== 'undefined') {
payload['transactionId'] = transactionId;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
'content-type': 'application/json',
}
return this.client.call(
'put',
uri,
apiHeaders,
payload
);
}
/**
* Update a row by its unique ID. Using the patch method you can pass only specific fields that will get updated.
*
* @param {string} params.databaseId - Database ID.
* @param {string} params.tableId - Table ID.
* @param {string} params.rowId - Row ID.
* @param {Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>} params.data - Row data as JSON object. Include only columns and value pairs to be updated.
* @param {string[]} params.permissions - An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).
* @param {string} params.transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
*/
updateRow<Row extends Models.Row = Models.DefaultRow>(params: { databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string }): Promise<Row>;
/**
* Update a row by its unique ID. Using the patch method you can pass only specific fields that will get updated.
*
* @param {string} databaseId - Database ID.
* @param {string} tableId - Table ID.
* @param {string} rowId - Row ID.
* @param {Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>} data - Row data as JSON object. Include only columns and value pairs to be updated.
* @param {string[]} permissions - An array of permissions strings. By default, the current permissions are inherited. [Learn more about permissions](https://appwrite.io/docs/permissions).
* @param {string} transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
updateRow<Row extends Models.Row = Models.DefaultRow>(databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string): Promise<Row>;
updateRow<Row extends Models.Row = Models.DefaultRow>(
paramsOrFirst: { databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string } | string,
...rest: [(string)?, (string)?, (Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>)?, (string[])?, (string)?]
): Promise<Row> {
let params: { databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { databaseId: string, tableId: string, rowId: string, data?: Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>, permissions?: string[], transactionId?: string };
} else {
params = {
databaseId: paramsOrFirst as string,
tableId: rest[0] as string,
rowId: rest[1] as string,
data: rest[2] as Row extends Models.DefaultRow ? Partial<Models.Row> & Record<string, any> : Partial<Models.Row> & Partial<Omit<Row, keyof Models.Row>>,
permissions: rest[3] as string[],
transactionId: rest[4] as string
};
}
const databaseId = params.databaseId;
const tableId = params.tableId;
const rowId = params.rowId;
const data = params.data;
const permissions = params.permissions;
const transactionId = params.transactionId;
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof tableId === 'undefined') {
throw new AppwriteException('Missing required parameter: "tableId"');
}
if (typeof rowId === 'undefined') {
throw new AppwriteException('Missing required parameter: "rowId"');
}
const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replace('{databaseId}', databaseId).replace('{tableId}', tableId).replace('{rowId}', rowId);
const payload: Payload = {};
if (typeof data !== 'undefined') {
payload['data'] = data;
}
if (typeof permissions !== 'undefined') {
payload['permissions'] = permissions;
}
if (typeof transactionId !== 'undefined') {
payload['transactionId'] = transactionId;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
'content-type': 'application/json',
}
return this.client.call(
'patch',
uri,
apiHeaders,
payload
);
}
/**
* Delete a row by its unique ID.
*
* @param {string} params.databaseId - Database ID.
* @param {string} params.tableId - Table ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable).
* @param {string} params.rowId - Row ID.
* @param {string} params.transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<{}>}
*/
deleteRow(params: { databaseId: string, tableId: string, rowId: string, transactionId?: string }): Promise<{}>;
/**
* Delete a row by its unique ID.
*
* @param {string} databaseId - Database ID.
* @param {string} tableId - Table ID. You can create a new table using the Database service [server integration](https://appwrite.io/docs/references/cloud/server-dart/tablesDB#createTable).
* @param {string} rowId - Row ID.
* @param {string} transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<{}>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
deleteRow(databaseId: string, tableId: string, rowId: string, transactionId?: string): Promise<{}>;
deleteRow(
paramsOrFirst: { databaseId: string, tableId: string, rowId: string, transactionId?: string } | string,
...rest: [(string)?, (string)?, (string)?]
): Promise<{}> {
let params: { databaseId: string, tableId: string, rowId: string, transactionId?: string };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { databaseId: string, tableId: string, rowId: string, transactionId?: string };
} else {
params = {
databaseId: paramsOrFirst as string,
tableId: rest[0] as string,
rowId: rest[1] as string,
transactionId: rest[2] as string
};
}
const databaseId = params.databaseId;
const tableId = params.tableId;
const rowId = params.rowId;
const transactionId = params.transactionId;
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof tableId === 'undefined') {
throw new AppwriteException('Missing required parameter: "tableId"');
}
if (typeof rowId === 'undefined') {
throw new AppwriteException('Missing required parameter: "rowId"');
}
const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}'.replace('{databaseId}', databaseId).replace('{tableId}', tableId).replace('{rowId}', rowId);
const payload: Payload = {};
if (typeof transactionId !== 'undefined') {
payload['transactionId'] = transactionId;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
'content-type': 'application/json',
}
return this.client.call(
'delete',
uri,
apiHeaders,
payload
);
}
/**
* Decrement a specific column of a row by a given value.
*
* @param {string} params.databaseId - Database ID.
* @param {string} params.tableId - Table ID.
* @param {string} params.rowId - Row ID.
* @param {string} params.column - Column key.
* @param {number} params.value - Value to increment the column by. The value must be a number.
* @param {number} params.min - Minimum value for the column. If the current value is lesser than this value, an exception will be thrown.
* @param {string} params.transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
*/
decrementRowColumn<Row extends Models.Row = Models.DefaultRow>(params: { databaseId: string, tableId: string, rowId: string, column: string, value?: number, min?: number, transactionId?: string }): Promise<Row>;
/**
* Decrement a specific column of a row by a given value.
*
* @param {string} databaseId - Database ID.
* @param {string} tableId - Table ID.
* @param {string} rowId - Row ID.
* @param {string} column - Column key.
* @param {number} value - Value to increment the column by. The value must be a number.
* @param {number} min - Minimum value for the column. If the current value is lesser than this value, an exception will be thrown.
* @param {string} transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
decrementRowColumn<Row extends Models.Row = Models.DefaultRow>(databaseId: string, tableId: string, rowId: string, column: string, value?: number, min?: number, transactionId?: string): Promise<Row>;
decrementRowColumn<Row extends Models.Row = Models.DefaultRow>(
paramsOrFirst: { databaseId: string, tableId: string, rowId: string, column: string, value?: number, min?: number, transactionId?: string } | string,
...rest: [(string)?, (string)?, (string)?, (number)?, (number)?, (string)?]
): Promise<Row> {
let params: { databaseId: string, tableId: string, rowId: string, column: string, value?: number, min?: number, transactionId?: string };
if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) {
params = (paramsOrFirst || {}) as { databaseId: string, tableId: string, rowId: string, column: string, value?: number, min?: number, transactionId?: string };
} else {
params = {
databaseId: paramsOrFirst as string,
tableId: rest[0] as string,
rowId: rest[1] as string,
column: rest[2] as string,
value: rest[3] as number,
min: rest[4] as number,
transactionId: rest[5] as string
};
}
const databaseId = params.databaseId;
const tableId = params.tableId;
const rowId = params.rowId;
const column = params.column;
const value = params.value;
const min = params.min;
const transactionId = params.transactionId;
if (typeof databaseId === 'undefined') {
throw new AppwriteException('Missing required parameter: "databaseId"');
}
if (typeof tableId === 'undefined') {
throw new AppwriteException('Missing required parameter: "tableId"');
}
if (typeof rowId === 'undefined') {
throw new AppwriteException('Missing required parameter: "rowId"');
}
if (typeof column === 'undefined') {
throw new AppwriteException('Missing required parameter: "column"');
}
const apiPath = '/tablesdb/{databaseId}/tables/{tableId}/rows/{rowId}/{column}/decrement'.replace('{databaseId}', databaseId).replace('{tableId}', tableId).replace('{rowId}', rowId).replace('{column}', column);
const payload: Payload = {};
if (typeof value !== 'undefined') {
payload['value'] = value;
}
if (typeof min !== 'undefined') {
payload['min'] = min;
}
if (typeof transactionId !== 'undefined') {
payload['transactionId'] = transactionId;
}
const uri = new URL(this.client.config.endpoint + apiPath);
const apiHeaders: { [header: string]: string } = {
'content-type': 'application/json',
}
return this.client.call(
'patch',
uri,
apiHeaders,
payload
);
}
/**
* Increment a specific column of a row by a given value.
*
* @param {string} params.databaseId - Database ID.
* @param {string} params.tableId - Table ID.
* @param {string} params.rowId - Row ID.
* @param {string} params.column - Column key.
* @param {number} params.value - Value to increment the column by. The value must be a number.
* @param {number} params.max - Maximum value for the column. If the current value is greater than this value, an error will be thrown.
* @param {string} params.transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
*/
incrementRowColumn<Row extends Models.Row = Models.DefaultRow>(params: { databaseId: string, tableId: string, rowId: string, column: string, value?: number, max?: number, transactionId?: string }): Promise<Row>;
/**
* Increment a specific column of a row by a given value.
*
* @param {string} databaseId - Database ID.
* @param {string} tableId - Table ID.
* @param {string} rowId - Row ID.
* @param {string} column - Column key.
* @param {number} value - Value to increment the column by. The value must be a number.
* @param {number} max - Maximum value for the column. If the current value is greater than this value, an error will be thrown.
* @param {string} transactionId - Transaction ID for staging the operation.
* @throws {AppwriteException}
* @returns {Promise<Row>}
* @deprecated Use the object parameter style method for a better developer experience.
*/
incrementRowColumn<Row extends Models.Row = Models.DefaultRow>(databaseId: string, tableId: string, rowId: string, column: string, value?: number, max?: number, transactionId?: string): Promise<Row>;
incrementRowColumn<Row extends Models.Row = Models.DefaultRow>(
paramsOrFirst: { databaseId: string, tableId: string, rowId: string, column: string, value?: number, ma