]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/activitypub/cache-file.ts
Try to fix travis redundancy tests
[github/Chocobozzz/PeerTube.git] / server / lib / activitypub / cache-file.ts
index 20558daf9bbca290c3b4cc9fa6018911d82a4f2c..5286d8e6ddc9294900c1402f8b63730f5ecd3f6b 100644 (file)
@@ -1,7 +1,7 @@
 import { CacheFileObject } from '../../../shared/index'
 import { VideoModel } from '../../models/video/video'
-import { sequelizeTypescript } from '../../initializers'
 import { VideoRedundancyModel } from '../../models/redundancy/video-redundancy'
+import { Transaction } from 'sequelize'
 
 function cacheFileActivityObjectToDBAttributes (cacheFileObject: CacheFileObject, video: VideoModel, byActor: { id?: number }) {
   const url = cacheFileObject.url
@@ -22,21 +22,29 @@ function cacheFileActivityObjectToDBAttributes (cacheFileObject: CacheFileObject
   }
 }
 
-function createCacheFile (cacheFileObject: CacheFileObject, video: VideoModel, byActor: { id?: number }) {
-  return sequelizeTypescript.transaction(async t => {
-    const attributes = cacheFileActivityObjectToDBAttributes(cacheFileObject, video, byActor)
+function createCacheFile (cacheFileObject: CacheFileObject, video: VideoModel, byActor: { id?: number }, t: Transaction) {
+  const attributes = cacheFileActivityObjectToDBAttributes(cacheFileObject, video, byActor)
 
-    return VideoRedundancyModel.create(attributes, { transaction: t })
-  })
+  return VideoRedundancyModel.create(attributes, { transaction: t })
 }
 
-function updateCacheFile (cacheFileObject: CacheFileObject, redundancyModel: VideoRedundancyModel, byActor: { id?: number }) {
-  const attributes = cacheFileActivityObjectToDBAttributes(cacheFileObject, redundancyModel.VideoFile.Video, byActor)
+function updateCacheFile (
+  cacheFileObject: CacheFileObject,
+  redundancyModel: VideoRedundancyModel,
+  video: VideoModel,
+  byActor: { id?: number },
+  t: Transaction
+) {
+  if (redundancyModel.actorId !== byActor.id) {
+    throw new Error('Cannot update redundancy ' + redundancyModel.url + ' of another actor.')
+  }
+
+  const attributes = cacheFileActivityObjectToDBAttributes(cacheFileObject, video, byActor)
 
   redundancyModel.set('expires', attributes.expiresOn)
   redundancyModel.set('fileUrl', attributes.fileUrl)
 
-  return redundancyModel.save()
+  return redundancyModel.save({ transaction: t })
 }
 
 export {