UNPKG

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

234 lines (209 loc) 11.4 kB
import { Service } from '../service'; import { AppwriteException, Client, type Payload, UploadProgress } from '../client'; import type { Models } from '../models'; import { ExecutionMethod } from '../enums/execution-method'; export class Functions { client: Client; constructor(client: Client) { this.client = client; } /** * Get a list of all the current user function execution logs. You can use the query params to filter your results. * * @param {string} params.functionId - Function 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. You may filter on the following attributes: trigger, status, responseStatusCode, duration, requestMethod, requestPath, deploymentId * @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.ExecutionList>} */ listExecutions(params: { functionId: string, queries?: string[], total?: boolean }): Promise<Models.ExecutionList>; /** * Get a list of all the current user function execution logs. You can use the query params to filter your results. * * @param {string} functionId - Function 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. You may filter on the following attributes: trigger, status, responseStatusCode, duration, requestMethod, requestPath, deploymentId * @param {boolean} total - When set to false, the total count returned will be 0 and will not be calculated. * @throws {AppwriteException} * @returns {Promise<Models.ExecutionList>} * @deprecated Use the object parameter style method for a better developer experience. */ listExecutions(functionId: string, queries?: string[], total?: boolean): Promise<Models.ExecutionList>; listExecutions( paramsOrFirst: { functionId: string, queries?: string[], total?: boolean } | string, ...rest: [(string[])?, (boolean)?] ): Promise<Models.ExecutionList> { let params: { functionId: string, queries?: string[], total?: boolean }; if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) { params = (paramsOrFirst || {}) as { functionId: string, queries?: string[], total?: boolean }; } else { params = { functionId: paramsOrFirst as string, queries: rest[0] as string[], total: rest[1] as boolean }; } const functionId = params.functionId; const queries = params.queries; const total = params.total; if (typeof functionId === 'undefined') { throw new AppwriteException('Missing required parameter: "functionId"'); } const apiPath = '/functions/{functionId}/executions'.replace('{functionId}', functionId); const payload: Payload = {}; if (typeof queries !== 'undefined') { payload['queries'] = queries; } 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 ); } /** * Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously. * * @param {string} params.functionId - Function ID. * @param {string} params.body - HTTP body of execution. Default value is empty string. * @param {boolean} params.async - Execute code in the background. Default value is false. * @param {string} params.xpath - HTTP path of execution. Path can include query params. Default value is / * @param {ExecutionMethod} params.method - HTTP method of execution. Default value is POST. * @param {object} params.headers - HTTP headers of execution. Defaults to empty. * @param {string} params.scheduledAt - Scheduled execution time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future with precision in minutes. * @throws {AppwriteException} * @returns {Promise<Models.Execution>} */ createExecution(params: { functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string }): Promise<Models.Execution>; /** * Trigger a function execution. The returned object will return you the current execution status. You can ping the `Get Execution` endpoint to get updates on the current execution status. Once this endpoint is called, your function execution process will start asynchronously. * * @param {string} functionId - Function ID. * @param {string} body - HTTP body of execution. Default value is empty string. * @param {boolean} async - Execute code in the background. Default value is false. * @param {string} xpath - HTTP path of execution. Path can include query params. Default value is / * @param {ExecutionMethod} method - HTTP method of execution. Default value is POST. * @param {object} headers - HTTP headers of execution. Defaults to empty. * @param {string} scheduledAt - Scheduled execution time in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future with precision in minutes. * @throws {AppwriteException} * @returns {Promise<Models.Execution>} * @deprecated Use the object parameter style method for a better developer experience. */ createExecution(functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string): Promise<Models.Execution>; createExecution( paramsOrFirst: { functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string } | string, ...rest: [(string)?, (boolean)?, (string)?, (ExecutionMethod)?, (object)?, (string)?] ): Promise<Models.Execution> { let params: { functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string }; if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) { params = (paramsOrFirst || {}) as { functionId: string, body?: string, async?: boolean, xpath?: string, method?: ExecutionMethod, headers?: object, scheduledAt?: string }; } else { params = { functionId: paramsOrFirst as string, body: rest[0] as string, async: rest[1] as boolean, xpath: rest[2] as string, method: rest[3] as ExecutionMethod, headers: rest[4] as object, scheduledAt: rest[5] as string }; } const functionId = params.functionId; const body = params.body; const async = params.async; const xpath = params.xpath; const method = params.method; const headers = params.headers; const scheduledAt = params.scheduledAt; if (typeof functionId === 'undefined') { throw new AppwriteException('Missing required parameter: "functionId"'); } const apiPath = '/functions/{functionId}/executions'.replace('{functionId}', functionId); const payload: Payload = {}; if (typeof body !== 'undefined') { payload['body'] = body; } if (typeof async !== 'undefined') { payload['async'] = async; } if (typeof xpath !== 'undefined') { payload['path'] = xpath; } if (typeof method !== 'undefined') { payload['method'] = method; } if (typeof headers !== 'undefined') { payload['headers'] = headers; } if (typeof scheduledAt !== 'undefined') { payload['scheduledAt'] = scheduledAt; } 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 function execution log by its unique ID. * * @param {string} params.functionId - Function ID. * @param {string} params.executionId - Execution ID. * @throws {AppwriteException} * @returns {Promise<Models.Execution>} */ getExecution(params: { functionId: string, executionId: string }): Promise<Models.Execution>; /** * Get a function execution log by its unique ID. * * @param {string} functionId - Function ID. * @param {string} executionId - Execution ID. * @throws {AppwriteException} * @returns {Promise<Models.Execution>} * @deprecated Use the object parameter style method for a better developer experience. */ getExecution(functionId: string, executionId: string): Promise<Models.Execution>; getExecution( paramsOrFirst: { functionId: string, executionId: string } | string, ...rest: [(string)?] ): Promise<Models.Execution> { let params: { functionId: string, executionId: string }; if ((paramsOrFirst && typeof paramsOrFirst === 'object' && !Array.isArray(paramsOrFirst))) { params = (paramsOrFirst || {}) as { functionId: string, executionId: string }; } else { params = { functionId: paramsOrFirst as string, executionId: rest[0] as string }; } const functionId = params.functionId; const executionId = params.executionId; if (typeof functionId === 'undefined') { throw new AppwriteException('Missing required parameter: "functionId"'); } if (typeof executionId === 'undefined') { throw new AppwriteException('Missing required parameter: "executionId"'); } const apiPath = '/functions/{functionId}/executions/{executionId}'.replace('{functionId}', functionId).replace('{executionId}', executionId); 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 ); } }