]> 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 a77116e0833f44335848d3a4c8ccf0dec1af7bb9..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) {
@@ -22,6 +31,35 @@ function cleanForExit (webtorrentProcess) {
   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)
+}
+
 // ---------------------------------------------------------------------------
 
 module.exports = utils