-import { values } from 'lodash'
import { FindOptions, Op, QueryTypes, Transaction } from 'sequelize'
import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript'
import {
import { isActivityPubUrlValid } from '../../helpers/custom-validators/activitypub/misc'
import { CONSTRAINTS_FIELDS, VIDEO_RATE_TYPES } from '../../initializers/constants'
import { ActorModel } from '../actor/actor'
-import { buildLocalAccountIdsIn, getSort, throwIfNotValid } from '../utils'
+import { getSort, throwIfNotValid } from '../shared'
import { VideoModel } from '../video/video'
import { ScopeNames as VideoChannelScopeNames, SummaryOptions, VideoChannelModel } from '../video/video-channel'
import { AccountModel } from './account'
export class AccountVideoRateModel extends Model<Partial<AttributesOnly<AccountVideoRateModel>>> {
@AllowNull(false)
- @Column(DataType.ENUM(...values(VIDEO_RATE_TYPES)))
+ @Column(DataType.ENUM(...Object.values(VIDEO_RATE_TYPES)))
type: VideoRateType
@AllowNull(false)
]).then(([ total, data ]) => ({ total, data }))
}
- static cleanOldRatesOf (videoId: number, type: VideoRateType, beforeUpdatedAt: Date) {
- return AccountVideoRateModel.sequelize.transaction(async t => {
- const query = {
- where: {
- updatedAt: {
- [Op.lt]: beforeUpdatedAt
- },
- videoId,
- type,
- accountId: {
- [Op.notIn]: buildLocalAccountIdsIn()
- }
- },
- transaction: t
- }
-
- await AccountVideoRateModel.destroy(query)
-
- return VideoModel.updateRatesOf(videoId, type, t)
- })
- }
-
toFormattedJSON (this: MAccountVideoRateFormattable): AccountVideoRate {
return {
video: this.Video.toFormattedJSON(),