Table,
UpdatedAt
} from 'sequelize-typescript'
+import { afterCommitIfTransaction } from '@server/helpers/database-utils'
+import { MVideoImportDefault, MVideoImportFormattable } from '@server/types/models/video/video-import'
+import { VideoImport, VideoImportState } from '@shared/models'
+import { AttributesOnly } from '@shared/typescript-utils'
+import { isVideoImportStateValid, isVideoImportTargetUrlValid } from '../../helpers/custom-validators/video-imports'
+import { isVideoMagnetUriValid } from '../../helpers/custom-validators/videos'
import { CONSTRAINTS_FIELDS, VIDEO_IMPORT_STATES } from '../../initializers/constants'
+import { UserModel } from '../user/user'
import { getSort, throwIfNotValid } from '../utils'
import { ScopeNames as VideoModelScopeNames, VideoModel } from './video'
-import { isVideoImportStateValid, isVideoImportTargetUrlValid } from '../../helpers/custom-validators/video-imports'
-import { VideoImport, VideoImportState } from '../../../shared'
-import { isVideoMagnetUriValid } from '../../helpers/custom-validators/videos'
-import { UserModel } from '../account/user'
-import * as Bluebird from 'bluebird'
-import { MVideoImportDefault, MVideoImportFormattable } from '@server/typings/models/video/video-import'
@DefaultScope(() => ({
include: [
}
]
})
-export class VideoImportModel extends Model<VideoImportModel> {
+export class VideoImportModel extends Model<Partial<AttributesOnly<VideoImportModel>>> {
@CreatedAt
createdAt: Date
@AfterUpdate
static deleteVideoIfFailed (instance: VideoImportModel, options) {
if (instance.state === VideoImportState.FAILED) {
- return instance.Video.destroy({ transaction: options.transaction })
+ return afterCommitIfTransaction(options.transaction, () => instance.Video.destroy())
}
return undefined
}
- static loadAndPopulateVideo (id: number): Bluebird<MVideoImportDefault> {
+ static loadAndPopulateVideo (id: number): Promise<MVideoImportDefault> {
return VideoImportModel.findByPk(id)
}