+ static async insertOrReplaceLanguage (caption: MVideoCaption, transaction: Transaction) {
+ const existing = await VideoCaptionModel.loadByVideoIdAndLanguage(caption.videoId, caption.language, transaction)
+
+ // Delete existing file
+ if (existing) await existing.destroy({ transaction })
+
+ return caption.save({ transaction })
+ }
+
+ static listVideoCaptions (videoId: number, transaction?: Transaction): Promise<MVideoCaptionVideo[]> {