X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-blacklist.ts;h=9247d0e2b1fd5fff6964382b44879768d2eb4755;hb=2f63f629add5d24f8c01f309c7cae43b667b0c2a;hp=694983cb316a0d623a1aaddce51bb1f6f14b18dc;hpb=8d5e65349deebd499c0be10fe02d535a77d58ddb;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-blacklist.ts b/server/models/video/video-blacklist.ts index 694983cb3..9247d0e2b 100644 --- a/server/models/video/video-blacklist.ts +++ b/server/models/video/video-blacklist.ts @@ -1,14 +1,14 @@ +import { FindOptions } from 'sequelize' import { AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' -import { getBlacklistSort, SortType, throwIfNotValid } from '../utils' -import { VideoModel } from './video' -import { ScopeNames as VideoChannelScopeNames, SummaryOptions, VideoChannelModel } from './video-channel' -import { isVideoBlacklistReasonValid, isVideoBlacklistTypeValid } from '../../helpers/custom-validators/video-blacklist' +import { MVideoBlacklist, MVideoBlacklistFormattable } from '@server/types/models' +import { AttributesOnly } from '@shared/typescript-utils' import { VideoBlacklist, VideoBlacklistType } from '../../../shared/models/videos' +import { isVideoBlacklistReasonValid, isVideoBlacklistTypeValid } from '../../helpers/custom-validators/video-blacklist' import { CONSTRAINTS_FIELDS } from '../../initializers/constants' -import { FindOptions } from 'sequelize' +import { getBlacklistSort, searchAttribute, throwIfNotValid } from '../shared' import { ThumbnailModel } from './thumbnail' -import * as Bluebird from 'bluebird' -import { MVideoBlacklist, MVideoBlacklistFormattable } from '@server/typings/models' +import { VideoModel } from './video' +import { ScopeNames as VideoChannelScopeNames, SummaryOptions, VideoChannelModel } from './video-channel' @Table({ tableName: 'videoBlacklist', @@ -19,7 +19,7 @@ import { MVideoBlacklist, MVideoBlacklistFormattable } from '@server/typings/mod } ] }) -export class VideoBlacklistModel extends Model { +export class VideoBlacklistModel extends Model>> { @AllowNull(true) @Is('VideoBlacklistReason', value => throwIfNotValid(value, isVideoBlacklistReasonValid, 'reason', true)) @@ -54,12 +54,20 @@ export class VideoBlacklistModel extends Model { }) Video: VideoModel - static listForApi (start: number, count: number, sort: SortType, type?: VideoBlacklistType) { + static listForApi (parameters: { + start: number + count: number + sort: string + search?: string + type?: VideoBlacklistType + }) { + const { start, count, sort, search, type } = parameters + function buildBaseQuery (): FindOptions { return { offset: start, limit: count, - order: getBlacklistSort(sort.sortModel, sort.sortValue) + order: getBlacklistSort(sort) } } @@ -70,6 +78,7 @@ export class VideoBlacklistModel extends Model { { model: VideoModel, required: true, + where: searchAttribute(search, 'name'), include: [ { model: VideoChannelModel.scope({ method: [ VideoChannelScopeNames.SUMMARY, { withAccount: true } as SummaryOptions ] }), @@ -100,7 +109,7 @@ export class VideoBlacklistModel extends Model { }) } - static loadByVideoId (id: number): Bluebird { + static loadByVideoId (id: number): Promise { const query = { where: { videoId: id