X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-blacklist.ts;h=67f7cd4871c0aeef041996ff11f557002e26ebfd;hb=156c50af3085468a47b8ae73fe8cfcae46b42398;hp=6db56271907d9456d9f1239c4c1985158c5d9732;hpb=3fd3ab2d34d512b160a5e6084d7609be7b4f4452;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-blacklist.ts b/server/models/video/video-blacklist.ts index 6db562719..67f7cd487 100644 --- a/server/models/video/video-blacklist.ts +++ b/server/models/video/video-blacklist.ts @@ -1,7 +1,23 @@ -import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript' -import { SortType } from '../../helpers' -import { getSortOnModel } from '../utils' +import { + AfterCreate, + AfterDestroy, + 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 { Emailer } from '../../lib/emailer' +import { VideoBlacklist } from '../../../shared/models/videos' +import { CONSTRAINTS_FIELDS } from '../../initializers' @Table({ tableName: 'videoBlacklist', @@ -14,6 +30,11 @@ import { VideoModel } from './video' }) export class VideoBlacklistModel extends Model { + @AllowNull(true) + @Is('VideoBlacklistReason', value => throwIfNotValid(value, isVideoBlacklistReasonValid, 'reason')) + @Column(DataType.STRING(CONSTRAINTS_FIELDS.VIDEO_BLACKLIST.REASON.max)) + reason: string + @CreatedAt createdAt: Date @@ -32,12 +53,27 @@ export class VideoBlacklistModel extends Model { }) Video: VideoModel + @AfterCreate + static sendBlacklistEmailNotification (instance: VideoBlacklistModel) { + return Emailer.Instance.addVideoBlacklistReportJob(instance.videoId, instance.reason) + } + + @AfterDestroy + static sendUnblacklistEmailNotification (instance: VideoBlacklistModel) { + return Emailer.Instance.addVideoUnblacklistReportJob(instance.videoId) + } + static listForApi (start: number, count: number, sort: SortType) { 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 +95,26 @@ export class VideoBlacklistModel extends Model { 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, + + 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 + } } } }