X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Fvideo%2Fvideo-blacklist.ts;h=3adcec149f402a1956f952e51b8bdbd3a9e588ca;hb=6120941f599c1234c9974a7d33ff12faa88aaed0;hp=ae8286285cd1bb37d1a29591625fc27834f7c8eb;hpb=39445ead45aaaea801ec09991b8dd2464f722e47;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/video/video-blacklist.ts b/server/models/video/video-blacklist.ts index ae8286285..3adcec149 100644 --- a/server/models/video/video-blacklist.ts +++ b/server/models/video/video-blacklist.ts @@ -1,104 +1,80 @@ -import * as Sequelize from 'sequelize' - -import { SortType } from '../../helpers' -import { addMethodsToModel, getSortOnModel } from '../utils' -import { VideoInstance } from './video-interface' -import { - BlacklistedVideoInstance, - BlacklistedVideoAttributes, - - BlacklistedVideoMethods -} from './video-blacklist-interface' - -let BlacklistedVideo: Sequelize.Model -let toFormattedJSON: BlacklistedVideoMethods.ToFormattedJSON -let listForApi: BlacklistedVideoMethods.ListForApi -let loadByVideoId: BlacklistedVideoMethods.LoadByVideoId - -export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { - BlacklistedVideo = sequelize.define('BlacklistedVideo', - {}, +import { BelongsTo, Column, CreatedAt, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript' +import { SortType } from '../../helpers/utils' +import { getSortOnModel } from '../utils' +import { VideoModel } from './video' + +@Table({ + tableName: 'videoBlacklist', + indexes: [ { - indexes: [ - { - fields: [ 'videoId' ], - unique: true - } - ] + fields: [ 'videoId' ], + unique: true } - ) - - const classMethods = [ - associate, - - listForApi, - loadByVideoId ] - const instanceMethods = [ - toFormattedJSON - ] - addMethodsToModel(BlacklistedVideo, classMethods, instanceMethods) - - return BlacklistedVideo -} +}) +export class VideoBlacklistModel extends Model { -// ------------------------------ METHODS ------------------------------ + @CreatedAt + createdAt: Date -toFormattedJSON = function (this: BlacklistedVideoInstance) { - let video: VideoInstance + @UpdatedAt + updatedAt: Date - 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 - } -} + @ForeignKey(() => VideoModel) + @Column + videoId: number -// ------------------------------ STATICS ------------------------------ - -function associate (models) { - BlacklistedVideo.belongsTo(models.Video, { + @BelongsTo(() => VideoModel, { foreignKey: { - name: 'videoId', allowNull: false }, - onDelete: 'CASCADE' + onDelete: 'cascade' }) -} + Video: VideoModel + + static listForApi (start: number, count: number, sort: SortType) { + const query = { + offset: start, + limit: count, + order: [ getSortOnModel(sort.sortModel, sort.sortValue) ], + include: [ { model: VideoModel } ] + } -listForApi = function (start: number, count: number, sort: SortType) { - const query = { - offset: start, - limit: count, - order: [ getSortOnModel(sort.sortModel, sort.sortValue) ], - include: [ { model: BlacklistedVideo['sequelize'].models.Video } ] + return VideoBlacklistModel.findAndCountAll(query) + .then(({ rows, count }) => { + return { + data: rows, + total: count + } + }) } - return BlacklistedVideo.findAndCountAll(query).then(({ rows, count }) => { - return { - data: rows, - total: count + static loadByVideoId (id: number) { + const query = { + where: { + videoId: id + } } - }) -} -loadByVideoId = function (id: number) { - const query = { - where: { - videoId: id - } + return VideoBlacklistModel.findOne(query) } - return BlacklistedVideo.findOne(query) + toFormattedJSON () { + 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 + } + } }