]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/models/video-blacklist.ts
Type functions
[github/Chocobozzz/PeerTube.git] / server / models / video-blacklist.ts
... / ...
CommitLineData
1import * as Sequelize from 'sequelize'
2
3import { addMethodsToModel, getSort } from './utils'
4import {
5 BlacklistedVideoClass,
6 BlacklistedVideoInstance,
7 BlacklistedVideoAttributes,
8
9 BlacklistedVideoMethods
10} from './video-blacklist-interface'
11
12let BlacklistedVideo: Sequelize.Model<BlacklistedVideoInstance, BlacklistedVideoAttributes>
13let toFormatedJSON: BlacklistedVideoMethods.ToFormatedJSON
14let countTotal: BlacklistedVideoMethods.CountTotal
15let list: BlacklistedVideoMethods.List
16let listForApi: BlacklistedVideoMethods.ListForApi
17let loadById: BlacklistedVideoMethods.LoadById
18let loadByVideoId: BlacklistedVideoMethods.LoadByVideoId
19
20export default function (sequelize, DataTypes) {
21 BlacklistedVideo = sequelize.define('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
52toFormatedJSON = function () {
53 return {
54 id: this.id,
55 videoId: this.videoId,
56 createdAt: this.createdAt
57 }
58}
59
60// ------------------------------ STATICS ------------------------------
61
62function associate (models) {
63 BlacklistedVideo.belongsTo(models.Video, {
64 foreignKey: 'videoId',
65 onDelete: 'cascade'
66 })
67}
68
69countTotal = function (callback: BlacklistedVideoMethods.CountTotalCallback) {
70 return BlacklistedVideo.count().asCallback(callback)
71}
72
73list = function (callback: BlacklistedVideoMethods.ListCallback) {
74 return BlacklistedVideo.findAll().asCallback(callback)
75}
76
77listForApi = 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
91loadById = function (id: number, callback: BlacklistedVideoMethods.LoadByIdCallback) {
92 return BlacklistedVideo.findById(id).asCallback(callback)
93}
94
95loadByVideoId = 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}