Video: VideoModel
@BeforeDestroy
- static async removeFiles (instance: VideoCaptionModel) {
+ static async removeFiles (instance: VideoCaptionModel, options) {
if (!instance.Video) {
- instance.Video = await instance.$get('Video')
+ instance.Video = await instance.$get('Video', { transaction: options.transaction })
}
if (instance.isOwned()) {
return undefined
}
- static loadByVideoIdAndLanguage (videoId: string | number, language: string): Promise<MVideoCaptionVideo> {
+ static loadByVideoIdAndLanguage (videoId: string | number, language: string, transaction?: Transaction): Promise<MVideoCaptionVideo> {
const videoInclude = {
model: VideoModel.unscoped(),
attributes: [ 'id', 'remote', 'uuid' ],
},
include: [
videoInclude
- ]
+ ],
+ transaction
}
return VideoCaptionModel.findOne(query)
}
static async insertOrReplaceLanguage (caption: MVideoCaption, transaction: Transaction) {
- const existing = await VideoCaptionModel.loadByVideoIdAndLanguage(caption.videoId, caption.language)
+ 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): Promise<MVideoCaptionVideo[]> {
+ static listVideoCaptions (videoId: number, transaction?: Transaction): Promise<MVideoCaptionVideo[]> {
const query = {
order: [ [ 'language', 'ASC' ] ] as OrderItem[],
where: {
videoId
- }
+ },
+ transaction
}
return VideoCaptionModel.scope(ScopeNames.WITH_VIDEO_UUID_AND_REMOTE).findAll(query)
return this.fileUrl
}
+
+ isEqual (this: MVideoCaption, other: MVideoCaption) {
+ if (this.fileUrl) return this.fileUrl === other.fileUrl
+
+ return this.filename === other.filename
+ }
}