]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/video/video-blacklist.ts
f4479986cf13c3ff8e64fe5b8f58e64eb115b9a8
[github/Chocobozzz/PeerTube.git] / server / models / video / video-blacklist.ts
1 import * as Sequelize from 'sequelize'
2
3 import { addMethodsToModel, getSort } from '../utils'
4 import {
5 BlacklistedVideoClass,
6 BlacklistedVideoInstance,
7 BlacklistedVideoAttributes,
8
9 BlacklistedVideoMethods
10 } from './video-blacklist-interface'
11
12 let BlacklistedVideo: Sequelize.Model<BlacklistedVideoInstance, BlacklistedVideoAttributes>
13 let toFormatedJSON: BlacklistedVideoMethods.ToFormatedJSON
14 let countTotal: BlacklistedVideoMethods.CountTotal
15 let list: BlacklistedVideoMethods.List
16 let listForApi: BlacklistedVideoMethods.ListForApi
17 let loadById: BlacklistedVideoMethods.LoadById
18 let loadByVideoId: BlacklistedVideoMethods.LoadByVideoId
19
20 export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
21 BlacklistedVideo = sequelize.define<BlacklistedVideoInstance, BlacklistedVideoAttributes>('BlacklistedVideo',
22 {},
23 {
24 indexes: [
25 {
26 fields: [ 'videoId' ],
27 unique: true
28 }
29 ]
30 }
31 )
32
33 const classMethods = [
34 associate,
35
36 countTotal,
37 list,
38 listForApi,
39 loadById,
40 loadByVideoId
41 ]
42 const instanceMethods = [
43 toFormatedJSON
44 ]
45 addMethodsToModel(BlacklistedVideo, classMethods, instanceMethods)
46
47 return BlacklistedVideo
48 }
49
50 // ------------------------------ METHODS ------------------------------
51
52 toFormatedJSON = function () {
53 return {
54 id: this.id,
55 videoId: this.videoId,
56 createdAt: this.createdAt
57 }
58 }
59
60 // ------------------------------ STATICS ------------------------------
61
62 function associate (models) {
63 BlacklistedVideo.belongsTo(models.Video, {
64 foreignKey: 'videoId',
65 onDelete: 'cascade'
66 })
67 }
68
69 countTotal = function (callback: BlacklistedVideoMethods.CountTotalCallback) {
70 return BlacklistedVideo.count().asCallback(callback)
71 }
72
73 list = function (callback: BlacklistedVideoMethods.ListCallback) {
74 return BlacklistedVideo.findAll().asCallback(callback)
75 }
76
77 listForApi = function (start: number, count: number, sort: string, callback: BlacklistedVideoMethods.ListForApiCallback) {
78 const query = {
79 offset: start,
80 limit: count,
81 order: [ getSort(sort) ]
82 }
83
84 return BlacklistedVideo.findAndCountAll(query).asCallback(function (err, result) {
85 if (err) return callback(err)
86
87 return callback(null, result.rows, result.count)
88 })
89 }
90
91 loadById = function (id: number, callback: BlacklistedVideoMethods.LoadByIdCallback) {
92 return BlacklistedVideo.findById(id).asCallback(callback)
93 }
94
95 loadByVideoId = function (id: string, callback: BlacklistedVideoMethods.LoadByIdCallback) {
96 const query = {
97 where: {
98 videoId: id
99 }
100 }
101
102 return BlacklistedVideo.find(query).asCallback(callback)
103 }