1 import { literal, Op } from 'sequelize'
2 import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Model, Table } from 'sequelize-typescript'
3 import { AttributesOnly } from '@shared/typescript-utils'
4 import { VideoModel } from '../video/video'
8 * Aggregate views of all videos federated with our instance
9 * Mainly used by the trending/hot algorithms
14 tableName: 'videoView',
21 fields: [ 'startDate' ]
25 export class VideoViewModel extends Model<Partial<AttributesOnly<VideoViewModel>>> {
30 @Column(DataType.DATE)
34 @Column(DataType.DATE)
41 @ForeignKey(() => VideoModel)
45 @BelongsTo(() => VideoModel, {
53 static removeOldRemoteViewsHistory (beforeDate: string) {
60 [Op.in]: literal('(SELECT "id" FROM "video" WHERE "remote" IS TRUE)')
65 return VideoViewModel.destroy(query)