1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
'use strict'
const constants = require('../initializers/constants')
const modelUtils = require('./utils')
const customVideosValidators = require('../helpers/custom-validators').videos
module.exports = function (sequelize, DataTypes) {
const VideoAbuse = sequelize.define('VideoAbuse',
{
reporterUsername: {
type: DataTypes.STRING,
allowNull: false,
validate: {
reporterUsernameValid: function (value) {
const res = customVideosValidators.isVideoAbuseReporterUsernameValid(value)
if (res === false) throw new Error('Video abuse reporter username is not valid.')
}
}
},
reason: {
type: DataTypes.STRING,
allowNull: false,
validate: {
reasonValid: function (value) {
const res = customVideosValidators.isVideoAbuseReasonValid(value)
if (res === false) throw new Error('Video abuse reason is not valid.')
}
}
}
},
{
indexes: [
{
fields: [ 'videoId' ]
},
{
fields: [ 'reporterPodId' ]
}
],
classMethods: {
associate,
listForApi
},
instanceMethods: {
toFormatedJSON
}
}
)
return VideoAbuse
}
// ---------------------------------------------------------------------------
function associate (models) {
this.belongsTo(models.Pod, {
foreignKey: {
name: 'reporterPodId',
allowNull: true
},
onDelete: 'cascade'
})
this.belongsTo(models.Video, {
foreignKey: {
name: 'videoId',
allowNull: false
},
onDelete: 'cascade'
})
}
function listForApi (start, count, sort, callback) {
const query = {
offset: start,
limit: count,
order: [ modelUtils.getSort(sort) ],
include: [
{
model: this.sequelize.models.Pod,
required: false
}
]
}
return this.findAndCountAll(query).asCallback(function (err, result) {
if (err) return callback(err)
return callback(null, result.rows, result.count)
})
}
function toFormatedJSON () {
let reporterPodHost
if (this.Pod) {
reporterPodHost = this.Pod.host
} else {
// It means it's our video
reporterPodHost = constants.CONFIG.WEBSERVER.HOST
}
const json = {
id: this.id,
reporterPodHost,
reason: this.reason,
reporterUsername: this.reporterUsername,
videoId: this.videoId
}
return json
}
|