X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server%2Fmodels%2Fvideo%2Fschedule-video-update.ts;h=d462c20c763ca7df8917e8cd6a20b88759faec1e;hb=025d858e7997d6b9895fa6b7beaf23bf5ff814af;hp=d4e37beb5ce245eaccb95e7a3923baa9257b8a6f;hpb=2baea0c77cc765f7cbca9c9a2f4272268892a35c;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/schedule-video-update.ts b/server/models/video/schedule-video-update.ts index d4e37beb5..d462c20c7 100644 --- a/server/models/video/schedule-video-update.ts +++ b/server/models/video/schedule-video-update.ts @@ -1,7 +1,9 @@ -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/core-utils' import { VideoPrivacy } from '../../../shared/models/videos' -import { Transaction } from 'sequelize' +import { VideoModel } from './video' @Table({ tableName: 'scheduleVideoUpdate', @@ -15,7 +17,7 @@ import { Transaction } from 'sequelize' } ] }) -export class ScheduleVideoUpdateModel extends Model { +export class ScheduleVideoUpdateModel extends Model>> { @AllowNull(false) @Default(null) @@ -25,7 +27,7 @@ export class ScheduleVideoUpdateModel extends Model { @AllowNull(true) @Default(null) @Column - privacy: VideoPrivacy + privacy: VideoPrivacy.PUBLIC | VideoPrivacy.UNLISTED | VideoPrivacy.INTERNAL @CreatedAt createdAt: Date @@ -45,27 +47,49 @@ export class ScheduleVideoUpdateModel extends Model { }) Video: VideoModel - static listVideosToUpdate (t: Transaction) { + static areVideosToUpdate () { const query = { + logging: false, + attributes: [ 'id' ], where: { updateAt: { - [Sequelize.Op.lte]: new Date() + [Op.lte]: new Date() } - }, - include: [ - { - model: VideoModel.scope( - [ - VideoScopeNames.WITH_FILES, - VideoScopeNames.WITH_ACCOUNT_DETAILS - ] - ) + } + } + + return ScheduleVideoUpdateModel.findOne(query) + .then(res => !!res) + } + + static listVideosToUpdate (transaction?: Transaction) { + const query = { + where: { + updateAt: { + [Op.lte]: new Date() } - ], + }, + transaction + } + + return ScheduleVideoUpdateModel.findAll(query) + } + + static deleteByVideoId (videoId: number, t: Transaction) { + const query = { + where: { + videoId + }, transaction: t } - return ScheduleVideoUpdateModel.findAll(query) + return ScheduleVideoUpdateModel.destroy(query) } + toFormattedJSON (this: MScheduleVideoUpdateFormattable) { + return { + updateAt: this.updateAt, + privacy: this.privacy || undefined + } + } }