X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fmodels%2Faccount%2Faccount-video-rate.ts;h=e969e4a436b78c9c519baec342c1f0a9165bfb9e;hb=50d6de9c286abcb34ff4234d56d9cbb803db7665;hp=7f7c976068a39f2c5b64625dbdd714f904bc434e;hpb=e4f97babf701481b55cc10fb3448feab5f97c867;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/models/account/account-video-rate.ts b/server/models/account/account-video-rate.ts index 7f7c97606..e969e4a43 100644 --- a/server/models/account/account-video-rate.ts +++ b/server/models/account/account-video-rate.ts @@ -1,78 +1,69 @@ -/* - Account rates per video. -*/ import { values } from 'lodash' -import * as Sequelize from 'sequelize' - +import { Transaction } from 'sequelize' +import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Model, Table, UpdatedAt } from 'sequelize-typescript' +import { IFindOptions } from 'sequelize-typescript/lib/interfaces/IFindOptions' +import { VideoRateType } from '../../../shared/models/videos' import { VIDEO_RATE_TYPES } from '../../initializers' +import { VideoModel } from '../video/video' +import { AccountModel } from './account' -import { addMethodsToModel } from '../utils' -import { - AccountVideoRateInstance, - AccountVideoRateAttributes, - - AccountVideoRateMethods -} from './account-video-rate-interface' - -let AccountVideoRate: Sequelize.Model -let load: AccountVideoRateMethods.Load - -export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { - AccountVideoRate = sequelize.define('AccountVideoRate', - { - type: { - type: DataTypes.ENUM(values(VIDEO_RATE_TYPES)), - allowNull: false - } - }, +/* + Account rates per video. +*/ +@Table({ + tableName: 'accountVideoRate', + indexes: [ { - indexes: [ - { - fields: [ 'videoId', 'accountId', 'type' ], - unique: true - } - ] + fields: [ 'videoId', 'accountId' ], + unique: true } - ) + ] +}) +export class AccountVideoRateModel extends Model { - const classMethods = [ - associate, + @AllowNull(false) + @Column(DataType.ENUM(values(VIDEO_RATE_TYPES))) + type: VideoRateType - load - ] - addMethodsToModel(AccountVideoRate, classMethods) + @CreatedAt + createdAt: Date - return AccountVideoRate -} + @UpdatedAt + updatedAt: Date -// ------------------------------ STATICS ------------------------------ + @ForeignKey(() => VideoModel) + @Column + videoId: number -function associate (models) { - AccountVideoRate.belongsTo(models.Video, { + @BelongsTo(() => VideoModel, { foreignKey: { - name: 'videoId', allowNull: false }, onDelete: 'CASCADE' }) + Video: VideoModel - AccountVideoRate.belongsTo(models.Account, { + @ForeignKey(() => AccountModel) + @Column + accountId: number + + @BelongsTo(() => AccountModel, { foreignKey: { - name: 'accountId', allowNull: false }, onDelete: 'CASCADE' }) -} + Account: AccountModel -load = function (accountId: number, videoId: number, transaction: Sequelize.Transaction) { - const options: Sequelize.FindOptions = { - where: { - accountId, - videoId + static load (accountId: number, videoId: number, transaction: Transaction) { + const options: IFindOptions = { + where: { + accountId, + videoId + } } - } - if (transaction) options.transaction = transaction + if (transaction) options.transaction = transaction - return AccountVideoRate.findOne(options) + return AccountVideoRateModel.findOne(options) + } }