UNPKG

@rocket.chat/apps-engine

Version:

The engine code for the Rocket.Chat Apps which manages, runs, translates, coordinates and all of that.

89 lines (88 loc) 4.63 kB
import type { RocketChatAssociationRecord } from '../metadata'; /** * Provides an accessor write data to the App's persistent storage. * A App only has access to its own persistent storage and does not * have access to any other App's. */ export interface IPersistence { /** * Creates a new record in the App's persistent storage, returning the resulting "id". * * @param data the actual data to store, must be an object otherwise it will error out. * @return the resulting record's id */ create(data: object): Promise<string>; /** * Creates a new record in the App's persistent storage with the associated information * being provided. * * @param data the actual data to store, must be an object otherwise it will error out * @param association the association data which includes the model and record id * @return the resulting record's id */ createWithAssociation(data: object, association: RocketChatAssociationRecord): Promise<string>; /** * Creates a new record in the App's persistent storage with the data being * associated with more than one Rocket.Chat record. * * @param data the actual data to store, must be an object otherwise it will error out * @param associations an array of association data which includes the model and record id * @return the resulting record's id */ createWithAssociations(data: object, associations: Array<RocketChatAssociationRecord>): Promise<string>; /** * Updates an existing record with the data provided in the App's persistent storage. * This will throw an error if the record doesn't currently exist or if the data is not an object. * * @param id the data record's id * @param data the actual data to store, must be an object otherwise it will error out * @param upsert whether a record should be created if the id to be updated does not exist * @return the id of the updated/upserted record */ update(id: string, data: object, upsert?: boolean): Promise<string>; /** * Updates an existing record with the data provided in the App's persistent storage which are * associated with provided information. * This will throw an error if the record doesn't currently exist or if the data is not an object. * * @param association the association record * @param data the actual data to store, must be an object otherwise it will error out * @param upsert whether a record should be created if the id to be updated does not exist * @return the id of the updated/upserted record */ updateByAssociation(association: RocketChatAssociationRecord, data: object, upsert?: boolean): Promise<string>; /** * Updates an existing record with the data provided in the App's persistent storage which are * associated with more than one Rocket.Chat record. * This will throw an error if the record doesn't currently exist or if the data is not an object. * * @param associations an array of association data which includes the model and record id * @param data the actual data to store, must be an object otherwise it will error out * @param upsert whether a record should be created if the id to be updated does not exist * @return the id of the updated/upserted record */ updateByAssociations(associations: Array<RocketChatAssociationRecord>, data: object, upsert?: boolean): Promise<string>; /** * Removes a record by the provided id and returns the removed record. * * @param id of the record to remove * @return the data record which was removed */ remove(id: string): Promise<object>; /** * Removes all of the records in persistent storage which are associated with the provided information. * * @param association the information about the association for the records to be removed * @return the data of the removed records */ removeByAssociation(association: RocketChatAssociationRecord): Promise<Array<object>>; /** * Removes all of the records in persistent storage which are associated with the provided information. * More than one association acts like an AND which means a record in persistent storage must have all * of the associations to be considered a match. * * @param associations the information about the associations for the records to be removed * @return the data of the removed records */ removeByAssociations(associations: Array<RocketChatAssociationRecord>): Promise<Array<object>>; }