--- displayed_sidebar: servicesSidebar --- import ParameterTypes from "@site/src/components/ParameterTypes" # IdempotencyKeyService ## Constructors #### constructor `**new IdempotencyKeyService**(«destructured»)` ##### Parameters ## Properties `", "description": "", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "__container__", "type": "`any`", "description": "", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "__moduleDeclaration__", "type": "`Record`", "description": "", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "idempotencyKeyRepository_", "type": "Repository<[IdempotencyKey](IdempotencyKey.mdx)>", "description": "", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "manager_", "type": "EntityManager", "description": "", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "transactionManager_", "type": "`undefined` \\| EntityManager", "description": "", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ]} /> ## Accessors #### activeManager\_ `Protected` **activeManager\_**: [object Object] ## Methods #### atomicPhase\_ `Protected **atomicPhase_**(work, isolationOrErrorHandler?, maybeErrorHandlerOrDontFail?): Promise<TResult>` Wraps some work within a transactional block. If the service already has a transaction manager attached this will be reused, otherwise a new transaction manager is created. ##### Type Parameters ##### Parameters Promise<TResult>", "description": "the transactional work to be done", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "isolationOrErrorHandler", "type": "`IsolationLevel` \\| (`error`: `TError`) => Promise<void \\| TResult>", "description": "the isolation level to be used for the work.", "optional": true, "defaultValue": "", "expandable": false, "children": [] }, { "name": "maybeErrorHandlerOrDontFail", "type": "(`error`: `TError`) => Promise<void \\| TResult>", "description": "Potential error handler", "optional": true, "defaultValue": "", "expandable": false, "children": [] } ]} /> ##### Returns Promise<TResult> ___ #### create `**create**(payload): Promise<[IdempotencyKey](IdempotencyKey.mdx)>` Creates an idempotency key for a request. If no idempotency key is provided in request, we will create a unique identifier. ##### Parameters ##### Returns Promise<[IdempotencyKey](IdempotencyKey.mdx)> ___ #### initializeRequest `**initializeRequest**(headerKey, reqMethod, reqParams, reqPath): Promise<[IdempotencyKey](IdempotencyKey.mdx)>` Execute the initial steps in a idempotent request. ##### Parameters `", "description": "params of request", "optional": false, "defaultValue": "", "expandable": false, "children": [] }, { "name": "reqPath", "type": "`string`", "description": "path of request", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ]} /> ##### Returns Promise<[IdempotencyKey](IdempotencyKey.mdx)> ___ #### lock `**lock**(idempotencyKey): Promise<[IdempotencyKey](IdempotencyKey.mdx)>` Locks an idempotency. ##### Parameters ##### Returns Promise<[IdempotencyKey](IdempotencyKey.mdx)> ___ #### retrieve `**retrieve**(idempotencyKeyOrSelector): Promise<[IdempotencyKey](IdempotencyKey.mdx)>` Retrieves an idempotency key ##### Parameters ##### Returns Promise<[IdempotencyKey](IdempotencyKey.mdx)> ___ #### shouldRetryTransaction\_ `Protected **shouldRetryTransaction_**(err): boolean` ##### Parameters ` \\| ``{ code: string }``", "description": "", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ]} /> ##### Returns `boolean` ___ #### update `**update**(idempotencyKey, update): Promise<[IdempotencyKey](IdempotencyKey.mdx)>` Locks an idempotency. ##### Parameters ##### Returns Promise<[IdempotencyKey](IdempotencyKey.mdx)> ___ #### withTransaction `**withTransaction**(transactionManager?): [IdempotencyKeyService](IdempotencyKeyService.mdx)` ##### Parameters ##### Returns [IdempotencyKeyService](IdempotencyKeyService.mdx) ___ #### workStage `**workStage**(idempotencyKey, callback): Promise<[IdempotencyKey](IdempotencyKey.mdx)>` Performs an atomic work stage. An atomic work stage contains some related functionality, that needs to be transactionally executed in isolation. An idempotent request will always consist of 2 or more of these phases. The required phases are "started" and "finished". ##### Parameters Promise<[IdempotencyCallbackResult](../types/IdempotencyCallbackResult.mdx)>", "description": "functionality to execute within the phase", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ]} /> ##### Returns Promise<[IdempotencyKey](IdempotencyKey.mdx)>