Upsert cache file on create activity

This commit is contained in:
Chocobozzz 2018-10-02 14:39:35 +02:00
parent 278711b595
commit b88a459664
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
3 changed files with 15 additions and 11 deletions

View File

@ -22,6 +22,16 @@ function cacheFileActivityObjectToDBAttributes (cacheFileObject: CacheFileObject
} }
} }
async function createOrUpdateCacheFile (cacheFileObject: CacheFileObject, video: VideoModel, byActor: { id?: number }, t: Transaction) {
const redundancyModel = await VideoRedundancyModel.loadByUrl(cacheFileObject.id, t)
if (!redundancyModel) {
await createCacheFile(cacheFileObject, video, byActor, t)
} else {
await updateCacheFile(cacheFileObject, redundancyModel, video, byActor, t)
}
}
function createCacheFile (cacheFileObject: CacheFileObject, video: VideoModel, byActor: { id?: number }, t: Transaction) { function createCacheFile (cacheFileObject: CacheFileObject, video: VideoModel, byActor: { id?: number }, t: Transaction) {
const attributes = cacheFileActivityObjectToDBAttributes(cacheFileObject, video, byActor) const attributes = cacheFileActivityObjectToDBAttributes(cacheFileObject, video, byActor)
@ -48,6 +58,7 @@ function updateCacheFile (
} }
export { export {
createOrUpdateCacheFile,
createCacheFile, createCacheFile,
updateCacheFile, updateCacheFile,
cacheFileActivityObjectToDBAttributes cacheFileActivityObjectToDBAttributes

View File

@ -11,7 +11,7 @@ import { addVideoComment, resolveThread } from '../video-comments'
import { getOrCreateVideoAndAccountAndChannel } from '../videos' import { getOrCreateVideoAndAccountAndChannel } from '../videos'
import { forwardVideoRelatedActivity } from '../send/utils' import { forwardVideoRelatedActivity } from '../send/utils'
import { Redis } from '../../redis' import { Redis } from '../../redis'
import { createCacheFile } from '../cache-file' import { createOrUpdateCacheFile } from '../cache-file'
async function processCreateActivity (activity: ActivityCreate, byActor: ActorModel) { async function processCreateActivity (activity: ActivityCreate, byActor: ActorModel) {
const activityObject = activity.object const activityObject = activity.object
@ -105,7 +105,7 @@ async function processCacheFile (byActor: ActorModel, activity: ActivityCreate)
const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: cacheFile.object }) const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: cacheFile.object })
await sequelizeTypescript.transaction(async t => { await sequelizeTypescript.transaction(async t => {
return createCacheFile(cacheFile, video, byActor, t) return createOrUpdateCacheFile(cacheFile, video, byActor, t)
}) })
if (video.isOwned()) { if (video.isOwned()) {

View File

@ -10,8 +10,7 @@ import { fetchAvatarIfExists, updateActorAvatarInstance, updateActorInstance } f
import { getOrCreateVideoAndAccountAndChannel, getOrCreateVideoChannelFromVideoObject, updateVideoFromAP } from '../videos' import { getOrCreateVideoAndAccountAndChannel, getOrCreateVideoChannelFromVideoObject, updateVideoFromAP } from '../videos'
import { sanitizeAndCheckVideoTorrentObject } from '../../../helpers/custom-validators/activitypub/videos' import { sanitizeAndCheckVideoTorrentObject } from '../../../helpers/custom-validators/activitypub/videos'
import { isCacheFileObjectValid } from '../../../helpers/custom-validators/activitypub/cache-file' import { isCacheFileObjectValid } from '../../../helpers/custom-validators/activitypub/cache-file'
import { VideoRedundancyModel } from '../../../models/redundancy/video-redundancy' import { createOrUpdateCacheFile } from '../cache-file'
import { createCacheFile, updateCacheFile } from '../cache-file'
import { forwardVideoRelatedActivity } from '../send/utils' import { forwardVideoRelatedActivity } from '../send/utils'
async function processUpdateActivity (activity: ActivityUpdate, byActor: ActorModel) { async function processUpdateActivity (activity: ActivityUpdate, byActor: ActorModel) {
@ -77,13 +76,7 @@ async function processUpdateCacheFile (byActor: ActorModel, activity: ActivityUp
const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: cacheFileObject.object }) const { video } = await getOrCreateVideoAndAccountAndChannel({ videoObject: cacheFileObject.object })
await sequelizeTypescript.transaction(async t => { await sequelizeTypescript.transaction(async t => {
const redundancyModel = await VideoRedundancyModel.loadByUrl(cacheFileObject.id, t) await createOrUpdateCacheFile(cacheFileObject, video, byActor, t)
if (!redundancyModel) {
await createCacheFile(cacheFileObject, video, byActor, t)
} else {
await updateCacheFile(cacheFileObject, redundancyModel, video, byActor, t)
}
}) })
if (video.isOwned()) { if (video.isOwned()) {