X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-blacklist.ts;h=d9fe9dfc964ed9dc861aa132e8a7a74d3371cbb0;hb=b876eaf11a1ed9683664d94767ca684ba5b77753;hp=23e992685870615eb83ce910b58a9a12c3904694;hpb=cef534ed53e4518fe0acf581bfe880788d42fc36;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-blacklist.ts b/server/models/video/video-blacklist.ts index 23e992685..d9fe9dfc9 100644 --- a/server/models/video/video-blacklist.ts +++ b/server/models/video/video-blacklist.ts @@ -1,23 +1,11 @@ -import { - AfterCreate, - AfterDestroy, - AllowNull, - BelongsTo, - Column, - CreatedAt, - DataType, - ForeignKey, - Is, - Model, - Table, - UpdatedAt -} from 'sequelize-typescript' +import { AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, 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' +import { ScopeNames as VideoChannelScopeNames, VideoChannelModel } from './video-channel' +import { isVideoBlacklistReasonValid, isVideoBlacklistTypeValid } from '../../helpers/custom-validators/video-blacklist' +import { VideoBlacklist, VideoBlacklistType } from '../../../shared/models/videos' +import { CONSTRAINTS_FIELDS } from '../../initializers/constants' +import { FindOptions } from 'sequelize' @Table({ tableName: 'videoBlacklist', @@ -31,10 +19,20 @@ import { CONSTRAINTS_FIELDS } from '../../initializers' export class VideoBlacklistModel extends Model { @AllowNull(true) - @Is('VideoBlacklistReason', value => throwIfNotValid(value, isVideoBlacklistReasonValid, 'reason')) + @Is('VideoBlacklistReason', value => throwIfNotValid(value, isVideoBlacklistReasonValid, 'reason', true)) @Column(DataType.STRING(CONSTRAINTS_FIELDS.VIDEO_BLACKLIST.REASON.max)) reason: string + @AllowNull(false) + @Column + unfederated: boolean + + @AllowNull(false) + @Default(null) + @Is('VideoBlacklistType', value => throwIfNotValid(value, isVideoBlacklistTypeValid, 'type')) + @Column + type: VideoBlacklistType + @CreatedAt createdAt: Date @@ -53,19 +51,29 @@ export class VideoBlacklistModel extends Model { }) Video: VideoModel - static listForApi (start: number, count: number, sort: SortType) { - const query = { + static listForApi (start: number, count: number, sort: SortType, type?: VideoBlacklistType) { + const query: FindOptions = { offset: start, limit: count, order: getSortOnModel(sort.sortModel, sort.sortValue), include: [ { model: VideoModel, - required: true + required: true, + include: [ + { + model: VideoChannelModel.scope({ method: [ VideoChannelScopeNames.SUMMARY, true ] }), + required: true + } + ] } ] } + if (type) { + query.where = { type } + } + return VideoBlacklistModel.findAndCountAll(query) .then(({ rows, count }) => { return { @@ -86,25 +94,15 @@ export class VideoBlacklistModel extends Model { } toFormattedJSON (): VideoBlacklist { - const video = this.Video - return { id: this.id, createdAt: this.createdAt, updatedAt: this.updatedAt, reason: this.reason, + unfederated: this.unfederated, + type: this.type, - 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 - } + video: this.Video.toFormattedJSON() } } }