]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/models/user-video-rate.ts
Type functions
[github/Chocobozzz/PeerTube.git] / server / models / user-video-rate.ts
CommitLineData
d38b8281
C
1/*
2 User rates per video.
3
4*/
65fcc311 5import { values } from 'lodash'
e02643f3 6import * as Sequelize from 'sequelize'
d38b8281 7
65fcc311 8import { VIDEO_RATE_TYPES } from '../initializers'
d38b8281 9
e02643f3
C
10import { addMethodsToModel } from './utils'
11import {
12 UserVideoRateClass,
13 UserVideoRateInstance,
14 UserVideoRateAttributes,
d38b8281 15
e02643f3
C
16 UserVideoRateMethods
17} from './user-video-rate-interface'
18
19let UserVideoRate: Sequelize.Model<UserVideoRateInstance, UserVideoRateAttributes>
20let load: UserVideoRateMethods.Load
21
22export default function (sequelize, DataTypes) {
23 UserVideoRate = sequelize.define('UserVideoRate',
d38b8281
C
24 {
25 type: {
65fcc311 26 type: DataTypes.ENUM(values(VIDEO_RATE_TYPES)),
d38b8281
C
27 allowNull: false
28 }
29 },
30 {
31 indexes: [
32 {
33 fields: [ 'videoId', 'userId', 'type' ],
34 unique: true
35 }
e02643f3 36 ]
d38b8281
C
37 }
38 )
39
e02643f3
C
40 const classMethods = [
41 associate,
42
43 load
44 ]
45 addMethodsToModel(UserVideoRate, classMethods)
46
d38b8281
C
47 return UserVideoRate
48}
49
50// ------------------------------ STATICS ------------------------------
51
52function associate (models) {
e02643f3 53 UserVideoRate.belongsTo(models.Video, {
d38b8281
C
54 foreignKey: {
55 name: 'videoId',
56 allowNull: false
57 },
58 onDelete: 'CASCADE'
59 })
60
e02643f3 61 UserVideoRate.belongsTo(models.User, {
d38b8281
C
62 foreignKey: {
63 name: 'userId',
64 allowNull: false
65 },
66 onDelete: 'CASCADE'
67 })
68}
69
69818c93 70load = function (userId: number, videoId: number, transaction: Sequelize.Transaction, callback: UserVideoRateMethods.LoadCallback) {
e02643f3 71 const options: Sequelize.FindOptions = {
d38b8281
C
72 where: {
73 userId,
74 videoId
75 }
76 }
d38b8281
C
77 if (transaction) options.transaction = transaction
78
e02643f3 79 return UserVideoRate.findOne(options).asCallback(callback)
d38b8281 80}