X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-live-session.ts;h=9426f5d11510c18ea754892a501a9c93c90c8c37;hb=f89189907bbdff6c4bc6d3460ed9ef4c49515f17;hp=8366208729bdcc72b1571a66e4ed9c28a1f922aa;hpb=64324ac646b0938e35cd88771492623b640bd0d8;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-live-session.ts b/server/models/video/video-live-session.ts index 836620872..9426f5d11 100644 --- a/server/models/video/video-live-session.ts +++ b/server/models/video/video-live-session.ts @@ -1,10 +1,23 @@ import { FindOptions } from 'sequelize' -import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Model, Scopes, Table, UpdatedAt } from 'sequelize-typescript' +import { + AllowNull, + BeforeDestroy, + BelongsTo, + Column, + CreatedAt, + DataType, + ForeignKey, + Model, + Scopes, + Table, + UpdatedAt +} from 'sequelize-typescript' import { MVideoLiveSession, MVideoLiveSessionReplay } from '@server/types/models' import { uuidToShort } from '@shared/extra-utils' import { LiveVideoError, LiveVideoSession } from '@shared/models' import { AttributesOnly } from '@shared/typescript-utils' import { VideoModel } from './video' +import { VideoLiveReplaySettingModel } from './video-live-replay-setting' export enum ScopeNames { WITH_REPLAY = 'WITH_REPLAY' @@ -17,6 +30,10 @@ export enum ScopeNames { model: VideoModel.unscoped(), as: 'ReplayVideo', required: false + }, + { + model: VideoLiveReplaySettingModel, + required: false } ] } @@ -30,6 +47,10 @@ export enum ScopeNames { }, { fields: [ 'liveVideoId' ] + }, + { + fields: [ 'replaySettingId' ], + unique: true } ] }) @@ -53,6 +74,14 @@ export class VideoLiveSessionModel extends Model VideoModel) @Column replayVideoId: number @@ -81,6 +110,27 @@ export class VideoLiveSessionModel extends Model VideoLiveReplaySettingModel) + @Column + replaySettingId: number + + @BelongsTo(() => VideoLiveReplaySettingModel, { + foreignKey: { + allowNull: true + }, + onDelete: 'set null' + }) + ReplaySetting: VideoLiveReplaySettingModel + + @BeforeDestroy + static deleteReplaySetting (instance: VideoLiveSessionModel) { + return VideoLiveReplaySettingModel.destroy({ + where: { + id: instance.replaySettingId + } + }) + } + static load (id: number): Promise { return VideoLiveSessionModel.findOne({ where: { id } @@ -97,12 +147,30 @@ export class VideoLiveSessionModel extends Model