-import { AllowNull, BelongsTo, Column, CreatedAt, Default, ForeignKey, Model, Sequelize, Table, UpdatedAt } from 'sequelize-typescript'
-import { ScopeNames as VideoScopeNames, VideoModel } from './video'
+import { Op, Transaction } from 'sequelize'
+import { AllowNull, BelongsTo, Column, CreatedAt, Default, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
+import { MScheduleVideoUpdateFormattable, MScheduleVideoUpdate } from '@server/types/models'
+import { AttributesOnly } from '@shared/typescript-utils'
import { VideoPrivacy } from '../../../shared/models/videos'
-import { Transaction } from 'sequelize'
+import { VideoModel } from './video'
@Table({
tableName: 'scheduleVideoUpdate',
}
]
})
-export class ScheduleVideoUpdateModel extends Model<ScheduleVideoUpdateModel> {
+export class ScheduleVideoUpdateModel extends Model<Partial<AttributesOnly<ScheduleVideoUpdateModel>>> {
@AllowNull(false)
@Default(null)
@AllowNull(true)
@Default(null)
@Column
- privacy: VideoPrivacy.PUBLIC | VideoPrivacy.UNLISTED
+ privacy: VideoPrivacy.PUBLIC | VideoPrivacy.UNLISTED | VideoPrivacy.INTERNAL
@CreatedAt
createdAt: Date
attributes: [ 'id' ],
where: {
updateAt: {
- [Sequelize.Op.lte]: new Date()
+ [Op.lte]: new Date()
}
}
}
.then(res => !!res)
}
- static listVideosToUpdate (t: Transaction) {
+ static listVideosToUpdate (transaction?: Transaction) {
const query = {
where: {
updateAt: {
- [Sequelize.Op.lte]: new Date()
+ [Op.lte]: new Date()
}
},
- include: [
- {
- model: VideoModel.scope(
- [
- VideoScopeNames.WITH_FILES,
- VideoScopeNames.WITH_ACCOUNT_DETAILS,
- VideoScopeNames.WITH_BLACKLISTED
- ]
- )
- }
- ],
- transaction: t
+ transaction
}
- return ScheduleVideoUpdateModel.findAll(query)
+ return ScheduleVideoUpdateModel.findAll<MScheduleVideoUpdate>(query)
}
static deleteByVideoId (videoId: number, t: Transaction) {
return ScheduleVideoUpdateModel.destroy(query)
}
- toFormattedJSON () {
+ toFormattedJSON (this: MScheduleVideoUpdateFormattable) {
return {
updateAt: this.updateAt,
privacy: this.privacy || undefined