4 import { values } from 'lodash'
5 import * as Sequelize from 'sequelize'
7 import { VIDEO_RATE_TYPES } from '../../initializers'
9 import { addMethodsToModel } from '../utils'
12 UserVideoRateInstance,
13 UserVideoRateAttributes,
16 } from './user-video-rate-interface'
18 let UserVideoRate: Sequelize.Model<UserVideoRateInstance, UserVideoRateAttributes>
19 let load: UserVideoRateMethods.Load
21 export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
22 UserVideoRate = sequelize.define<UserVideoRateInstance, UserVideoRateAttributes>('UserVideoRate',
25 type: DataTypes.ENUM(values(VIDEO_RATE_TYPES)),
32 fields: [ 'videoId', 'userId', 'type' ],
39 const classMethods = [
44 addMethodsToModel(UserVideoRate, classMethods)
49 // ------------------------------ STATICS ------------------------------
51 function associate (models) {
52 UserVideoRate.belongsTo(models.Video, {
60 UserVideoRate.belongsTo(models.User, {
69 load = function (userId: number, videoId: string, transaction: Sequelize.Transaction, callback: UserVideoRateMethods.LoadCallback) {
70 const options: Sequelize.FindOptions = {
76 if (transaction) options.transaction = transaction
78 return UserVideoRate.findOne(options).asCallback(callback)