--- /dev/null
+import * as Sequelize from 'sequelize'
+
+async function up (utils: {
+ transaction: Sequelize.Transaction,
+ queryInterface: Sequelize.QueryInterface,
+ sequelize: Sequelize.Sequelize,
+ db: any
+}): Promise<void> {
+ {
+ const query = `INSERT INTO "videoShare" (url, "actorId", "videoId", "createdAt", "updatedAt") ` +
+ `(` +
+ `SELECT ` +
+ `video.url || '/announces/' || "videoChannel"."actorId" as url, ` +
+ `"videoChannel"."actorId" AS "actorId", ` +
+ `"video"."id" AS "videoId", ` +
+ `NOW() AS "createdAt", ` +
+ `NOW() AS "updatedAt" ` +
+ `FROM video ` +
+ `INNER JOIN "videoChannel" ON "video"."channelId" = "videoChannel"."id" ` +
+ `WHERE "video"."remote" = false AND "video"."privacy" != 3 AND "video"."state" = 1` +
+ `) ` +
+ `ON CONFLICT DO NOTHING`
+
+ await utils.sequelize.query(query)
+ }
+
+ {
+ const query = `INSERT INTO "videoShare" (url, "actorId", "videoId", "createdAt", "updatedAt") ` +
+ `(` +
+ `SELECT ` +
+ `video.url || '/announces/' || (SELECT id FROM actor WHERE "preferredUsername" = 'peertube' ORDER BY id ASC LIMIT 1) as url, ` +
+ `(SELECT id FROM actor WHERE "preferredUsername" = 'peertube' ORDER BY id ASC LIMIT 1) AS "actorId", ` +
+ `"video"."id" AS "videoId", ` +
+ `NOW() AS "createdAt", ` +
+ `NOW() AS "updatedAt" ` +
+ `FROM video ` +
+ `WHERE "video"."remote" = false AND "video"."privacy" != 3 AND "video"."state" = 1` +
+ `) ` +
+ `ON CONFLICT DO NOTHING`
+
+ await utils.sequelize.query(query)
+ }
+}
+
+function down (options) {
+ throw new Error('Not implemented.')
+}
+
+export {
+ up,
+ down
+}
})
}
-async function onVideoFileOptimizerSuccess (video: VideoModel, isNewVideo: boolean) {
- if (video === undefined) return undefined
+async function onVideoFileOptimizerSuccess (videoArg: VideoModel, isNewVideo: boolean) {
+ if (videoArg === undefined) return undefined
// Outside the transaction (IO on disk)
- const { videoFileResolution } = await video.getOriginalFileResolution()
+ const { videoFileResolution } = await videoArg.getOriginalFileResolution()
return sequelizeTypescript.transaction(async t => {
// Maybe the video changed in database, refresh it
- const videoDatabase = await VideoModel.loadAndPopulateAccountAndServerAndTags(video.uuid, t)
+ let videoDatabase = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoArg.uuid, t)
// Video does not exist anymore
if (!videoDatabase) return undefined
logger.info('Transcoding jobs created for uuid %s.', videoDatabase.uuid, { resolutionsEnabled })
} else {
// No transcoding to do, it's now published
- video.state = VideoState.PUBLISHED
- video = await video.save({ transaction: t })
+ videoDatabase.state = VideoState.PUBLISHED
+ videoDatabase = await videoDatabase.save({ transaction: t })
- logger.info('No transcoding jobs created for video %s (no resolutions).', video.uuid)
+ logger.info('No transcoding jobs created for video %s (no resolutions).', videoDatabase.uuid, { privacy: videoDatabase.privacy })
}
- return federateVideoIfNeeded(video, isNewVideo, t)
+ return federateVideoIfNeeded(videoDatabase, isNewVideo, t)
})
}