--- 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<`string`, `unknown`\\>", "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` `get` **activeManager_**(): `EntityManager` #### Returns `EntityManager` ## Methods ### atomicPhase\_ `Protected` **atomicPhase_**<`TResult`, `TError`\>(`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. #### 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`\> ", "optional": false, "defaultValue": "", "description": "the result of the transactional work", "expandable": false, "children": [] } ]} /> ___ ### 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)\> ", "optional": false, "defaultValue": "", "description": "the created idempotency key", "expandable": false, "children": [] } ]} /> ___ ### 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)\> ", "optional": false, "defaultValue": "", "description": "the existing or created idempotency key", "expandable": false, "children": [] } ]} /> ___ ### lock **lock**(`idempotencyKey`): `Promise`<[`IdempotencyKey`](IdempotencyKey.mdx)\> Locks an idempotency. #### Parameters #### Returns `Promise`<[`IdempotencyKey`](IdempotencyKey.mdx)\> ", "optional": false, "defaultValue": "", "description": "result of the update operation", "expandable": false, "children": [] } ]} /> ___ ### retrieve **retrieve**(`idempotencyKeyOrSelector`): `Promise`<[`IdempotencyKey`](IdempotencyKey.mdx)\> Retrieves an idempotency key #### Parameters ", "description": "key or selector to retrieve", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ]} /> #### Returns `Promise`<[`IdempotencyKey`](IdempotencyKey.mdx)\> ", "optional": false, "defaultValue": "", "description": "idempotency key", "expandable": false, "children": [] } ]} /> ___ ### 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 ", "description": "update object", "optional": false, "defaultValue": "", "expandable": false, "children": [] } ]} /> #### Returns `Promise`<[`IdempotencyKey`](IdempotencyKey.mdx)\> ", "optional": false, "defaultValue": "", "description": "result of the update operation", "expandable": false, "children": [] } ]} /> ___ ### 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)\> ", "optional": false, "defaultValue": "", "description": "new updated idempotency key", "expandable": false, "children": [] } ]} />