diff options
Diffstat (limited to 'server/helpers/database-utils.ts')
-rw-r--r-- | server/helpers/database-utils.ts | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/server/helpers/database-utils.ts b/server/helpers/database-utils.ts index 169b80065..dacd747c9 100644 --- a/server/helpers/database-utils.ts +++ b/server/helpers/database-utils.ts | |||
@@ -4,12 +4,15 @@ import * as Bluebird from 'bluebird' | |||
4 | import { logger } from './logger' | 4 | import { logger } from './logger' |
5 | 5 | ||
6 | type RetryTransactionWrapperOptions = { errorMessage: string, arguments?: any[] } | 6 | type RetryTransactionWrapperOptions = { errorMessage: string, arguments?: any[] } |
7 | function retryTransactionWrapper (functionToRetry: (...args) => Promise<any> | Bluebird<any>, options: RetryTransactionWrapperOptions) { | 7 | function retryTransactionWrapper <T> ( |
8 | functionToRetry: (...args) => Promise<T> | Bluebird<T>, | ||
9 | options: RetryTransactionWrapperOptions | ||
10 | ): Promise<T> { | ||
8 | const args = options.arguments ? options.arguments : [] | 11 | const args = options.arguments ? options.arguments : [] |
9 | 12 | ||
10 | return transactionRetryer(callback => { | 13 | return transactionRetryer<T>(callback => { |
11 | functionToRetry.apply(this, args) | 14 | functionToRetry.apply(this, args) |
12 | .then(result => callback(null, result)) | 15 | .then((result: T) => callback(null, result)) |
13 | .catch(err => callback(err)) | 16 | .catch(err => callback(err)) |
14 | }) | 17 | }) |
15 | .catch(err => { | 18 | .catch(err => { |
@@ -18,8 +21,8 @@ function retryTransactionWrapper (functionToRetry: (...args) => Promise<any> | B | |||
18 | }) | 21 | }) |
19 | } | 22 | } |
20 | 23 | ||
21 | function transactionRetryer (func: Function) { | 24 | function transactionRetryer <T> (func: (err: any, data: T) => any) { |
22 | return new Promise((res, rej) => { | 25 | return new Promise<T>((res, rej) => { |
23 | retry({ | 26 | retry({ |
24 | times: 5, | 27 | times: 5, |
25 | 28 | ||