X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server%2Fhelpers%2Fdatabase-utils.ts;h=6c5068fb0d631622d21e4fab74f6262dde5d1a2d;hb=2284f202070aa2e49156cc52b3b1596a7d5aadec;hp=1005d2cf19694f16e3f0cf1f000834a9c3a83972;hpb=06215f15e0a9fea2ef95b8b49cb2b5868fb64017;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/database-utils.ts b/server/helpers/database-utils.ts index 1005d2cf1..6c5068fb0 100644 --- a/server/helpers/database-utils.ts +++ b/server/helpers/database-utils.ts @@ -2,6 +2,7 @@ import * as retry from 'async/retry' import * as Bluebird from 'bluebird' import { Model } from 'sequelize-typescript' import { logger } from './logger' +import { Transaction } from 'sequelize' function retryTransactionWrapper ( functionToRetry: (arg1: A, arg2: B, arg3: C) => Promise | Bluebird, @@ -62,22 +63,28 @@ function updateInstanceWithAnother > (instanceToUpdate: Model const obj = baseInstance.toJSON() for (const key of Object.keys(obj)) { - instanceToUpdate.set(key, obj[key]) + instanceToUpdate[key] = obj[key] } } function resetSequelizeInstance (instance: Model, savedFields: object) { Object.keys(savedFields).forEach(key => { - const value = savedFields[key] - instance.set(key, value) + instance[key] = savedFields[key] }) } +function afterCommitIfTransaction (t: Transaction, fn: Function) { + if (t) return t.afterCommit(() => fn()) + + return fn() +} + // --------------------------------------------------------------------------- export { resetSequelizeInstance, retryTransactionWrapper, transactionRetryer, - updateInstanceWithAnother + updateInstanceWithAnother, + afterCommitIfTransaction }