]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/database-utils.ts
Add context menu to player
[github/Chocobozzz/PeerTube.git] / server / helpers / database-utils.ts
index fb8ad22b06436849355a5009e200f8e34c9bb5bd..b3ff42a37b2c68541dd503d008e3f66d1c48f741 100644 (file)
@@ -1,5 +1,6 @@
 import * as retry from 'async/retry'
 import * as Bluebird from 'bluebird'
+import { Model } from 'sequelize-typescript'
 import { logger } from './logger'
 
 type RetryTransactionWrapperOptions = { errorMessage: string, arguments?: any[] }
@@ -15,7 +16,7 @@ function retryTransactionWrapper <T> (
         .catch(err => callback(err))
   })
   .catch(err => {
-    logger.error(options.errorMessage, err)
+    logger.error(options.errorMessage, { err })
     throw err
   })
 }
@@ -27,16 +28,25 @@ function transactionRetryer <T> (func: (err: any, data: T) => any) {
 
       errorFilter: err => {
         const willRetry = (err.name === 'SequelizeDatabaseError')
-        logger.debug('Maybe retrying the transaction function.', { willRetry })
+        logger.debug('Maybe retrying the transaction function.', { willRetry, err })
         return willRetry
       }
     }, func, (err, data) => err ? rej(err) : res(data))
   })
 }
 
+function updateInstanceWithAnother <T extends Model<T>> (instanceToUpdate: Model<T>, baseInstance: Model<T>) {
+  const obj = baseInstance.toJSON()
+
+  for (const key of Object.keys(obj)) {
+    instanceToUpdate.set(key, obj[key])
+  }
+}
+
 // ---------------------------------------------------------------------------
 
 export {
   retryTransactionWrapper,
-  transactionRetryer
+  transactionRetryer,
+  updateInstanceWithAnother
 }