import { AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
-import { getBlacklistSort, getSort, SortType, throwIfNotValid } from '../utils'
-import { ScopeNames as VideoModelScopeNames, VideoModel } from './video'
+import { getBlacklistSort, SortType, throwIfNotValid, searchAttribute } 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 { VideoBlacklist, VideoBlacklistType } from '../../../shared/models/videos'
import { CONSTRAINTS_FIELDS } from '../../initializers/constants'
-import { FindOptions, literal } from 'sequelize'
+import { FindOptions } from 'sequelize'
import { ThumbnailModel } from './thumbnail'
+import * as Bluebird from 'bluebird'
+import { MVideoBlacklist, MVideoBlacklistFormattable } from '@server/typings/models'
@Table({
tableName: 'videoBlacklist',
})
Video: VideoModel
- static listForApi (start: number, count: number, sort: SortType, type?: VideoBlacklistType) {
+ static listForApi (parameters: {
+ start: number
+ count: number
+ sort: SortType
+ search?: string
+ type?: VideoBlacklistType
+ }) {
+ const { start, count, sort, search, type } = parameters
+
function buildBaseQuery (): FindOptions {
return {
offset: start,
{
model: VideoModel,
required: true,
+ where: searchAttribute(search, 'name'),
include: [
{
model: VideoChannelModel.scope({ method: [ VideoChannelScopeNames.SUMMARY, { withAccount: true } as SummaryOptions ] }),
})
}
- static loadByVideoId (id: number) {
+ static loadByVideoId (id: number): Bluebird<MVideoBlacklist> {
const query = {
where: {
videoId: id
return VideoBlacklistModel.findOne(query)
}
- toFormattedJSON (): VideoBlacklist {
+ toFormattedJSON (this: MVideoBlacklistFormattable): VideoBlacklist {
return {
id: this.id,
createdAt: this.createdAt,