]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/helpers/utils.js
Server: improve requests scheduler
[github/Chocobozzz/PeerTube.git] / server / helpers / utils.js
index 9d4d51c46197dc6e35a8bce2bff7de3c75d968e2..a902850cdd044026247350d479b8de07dd45e51b 100644 (file)
@@ -1,12 +1,21 @@
 'use strict'
 
 const crypto = require('crypto')
+const retry = require('async/retry')
 
 const logger = require('./logger')
 
 const utils = {
-  cleanForExit: cleanForExit,
-  generateRandomString: generateRandomString
+  badRequest,
+  cleanForExit,
+  generateRandomString,
+  isTestInstance,
+  getFormatedObjects,
+  transactionRetryer
+}
+
+function badRequest (req, res, next) {
+  res.type('json').status(400).end()
 }
 
 function generateRandomString (size, callback) {
@@ -17,9 +26,38 @@ function generateRandomString (size, callback) {
   })
 }
 
-function cleanForExit (webtorrent_process) {
+function cleanForExit (webtorrentProcess) {
   logger.info('Gracefully exiting.')
-  process.kill(-webtorrent_process.pid)
+  process.kill(-webtorrentProcess.pid)
+}
+
+function isTestInstance () {
+  return (process.env.NODE_ENV === 'test')
+}
+
+function getFormatedObjects (objects, objectsTotal) {
+  const formatedObjects = []
+
+  objects.forEach(function (object) {
+    formatedObjects.push(object.toFormatedJSON())
+  })
+
+  return {
+    total: objectsTotal,
+    data: formatedObjects
+  }
+}
+
+function transactionRetryer (func, callback) {
+  retry({
+    times: 5,
+
+    errorFilter: function (err) {
+      const willRetry = (err.name === 'SequelizeDatabaseError')
+      logger.debug('Maybe retrying the transaction function.', { willRetry })
+      return willRetry
+    }
+  }, func, callback)
 }
 
 // ---------------------------------------------------------------------------