]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/models/video/video-blacklist.ts
Add ability to unfederate a local video (on blacklist)
[github/Chocobozzz/PeerTube.git] / server / models / video / video-blacklist.ts
index 3adcec149f402a1956f952e51b8bdbd3a9e588ca..3b567e488cac0bcda98f2c9adc714faf8a8459f4 100644 (file)
@@ -1,7 +1,9 @@
-import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript'
-import { SortType } from '../../helpers/utils'
-import { getSortOnModel } from '../utils'
+import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
+import { getSortOnModel, SortType, throwIfNotValid } from '../utils'
 import { VideoModel } from './video'
+import { isVideoBlacklistReasonValid } from '../../helpers/custom-validators/video-blacklist'
+import { VideoBlacklist } from '../../../shared/models/videos'
+import { CONSTRAINTS_FIELDS } from '../../initializers'
 
 @Table({
   tableName: 'videoBlacklist',
@@ -14,6 +16,15 @@ import { VideoModel } from './video'
 })
 export class VideoBlacklistModel extends Model<VideoBlacklistModel> {
 
+  @AllowNull(true)
+  @Is('VideoBlacklistReason', value => throwIfNotValid(value, isVideoBlacklistReasonValid, 'reason'))
+  @Column(DataType.STRING(CONSTRAINTS_FIELDS.VIDEO_BLACKLIST.REASON.max))
+  reason: string
+
+  @AllowNull(false)
+  @Column
+  unfederated: boolean
+
   @CreatedAt
   createdAt: Date
 
@@ -36,8 +47,13 @@ export class VideoBlacklistModel extends Model<VideoBlacklistModel> {
     const query = {
       offset: start,
       limit: count,
-      order: [ getSortOnModel(sort.sortModel, sort.sortValue) ],
-      include: [ { model: VideoModel } ]
+      order: getSortOnModel(sort.sortModel, sort.sortValue),
+      include: [
+        {
+          model: VideoModel,
+          required: true
+        }
+      ]
     }
 
     return VideoBlacklistModel.findAndCountAll(query)
@@ -59,22 +75,27 @@ export class VideoBlacklistModel extends Model<VideoBlacklistModel> {
     return VideoBlacklistModel.findOne(query)
   }
 
-  toFormattedJSON () {
+  toFormattedJSON (): VideoBlacklist {
     const video = this.Video
 
     return {
       id: this.id,
-      videoId: this.videoId,
       createdAt: this.createdAt,
       updatedAt: this.updatedAt,
-      name: video.name,
-      uuid: video.uuid,
-      description: video.description,
-      duration: video.duration,
-      views: video.views,
-      likes: video.likes,
-      dislikes: video.dislikes,
-      nsfw: video.nsfw
+      reason: this.reason,
+      unfederated: this.unfederated,
+
+      video: {
+        id: video.id,
+        name: video.name,
+        uuid: video.uuid,
+        description: video.description,
+        duration: video.duration,
+        views: video.views,
+        likes: video.likes,
+        dislikes: video.dislikes,
+        nsfw: video.nsfw
+      }
     }
   }
 }