import { ScheduleVideoUpdateModel } from '../models/video/schedule-video-update'
import { VideoCaptionModel } from '../models/video/video-caption'
import { VideoImportModel } from '../models/video/video-import'
-import { VideoViewModel } from '../models/video/video-views'
+import { VideoViewModel } from '../models/video/video-view'
import { VideoChangeOwnershipModel } from '../models/video/video-change-ownership'
import { VideoRedundancyModel } from '../models/redundancy/video-redundancy'
import { UserVideoHistoryModel } from '../models/account/user-video-history'
import { Redis } from '../../redis'
import { logger } from '../../../helpers/logger'
import { VideoModel } from '../../../models/video/video'
-import { VideoViewModel } from '../../../models/video/video-views'
+import { VideoViewModel } from '../../../models/video/video-view'
import { isTestInstance } from '../../../helpers/core-utils'
import { federateVideoIfNeeded } from '../../activitypub/videos'
import { AbstractScheduler } from './abstract-scheduler'
import { SCHEDULER_INTERVALS_MS } from '../../initializers/constants'
import { CONFIG } from '../../initializers/config'
-import { VideoViewModel } from '../../models/video/video-views'
+import { VideoViewModel } from '../../models/video/video-view'
export class RemoveOldViewsScheduler extends AbstractScheduler {
--- /dev/null
+import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Model, Table } from 'sequelize-typescript'
+import { VideoModel } from './video'
+import * as Sequelize from 'sequelize'
+
+@Table({
+ tableName: 'videoView',
+ updatedAt: false,
+ indexes: [
+ {
+ fields: [ 'videoId' ]
+ },
+ {
+ fields: [ 'startDate' ]
+ }
+ ]
+})
+export class VideoViewModel extends Model<VideoViewModel> {
+ @CreatedAt
+ createdAt: Date
+
+ @AllowNull(false)
+ @Column(Sequelize.DATE)
+ startDate: Date
+
+ @AllowNull(false)
+ @Column(Sequelize.DATE)
+ endDate: Date
+
+ @AllowNull(false)
+ @Column
+ views: number
+
+ @ForeignKey(() => VideoModel)
+ @Column
+ videoId: number
+
+ @BelongsTo(() => VideoModel, {
+ foreignKey: {
+ allowNull: false
+ },
+ onDelete: 'CASCADE'
+ })
+ Video: VideoModel
+
+ static removeOldRemoteViewsHistory (beforeDate: string) {
+ const query = {
+ where: {
+ startDate: {
+ [Sequelize.Op.lt]: beforeDate
+ },
+ videoId: {
+ [Sequelize.Op.in]: Sequelize.literal('(SELECT "id" FROM "video" WHERE "remote" IS TRUE)')
+ }
+ }
+ }
+
+ return VideoViewModel.destroy(query)
+ }
+}
+++ /dev/null
-import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Model, Table } from 'sequelize-typescript'
-import { VideoModel } from './video'
-import * as Sequelize from 'sequelize'
-
-@Table({
- tableName: 'videoView',
- updatedAt: false,
- indexes: [
- {
- fields: [ 'videoId' ]
- },
- {
- fields: [ 'startDate' ]
- }
- ]
-})
-export class VideoViewModel extends Model<VideoViewModel> {
- @CreatedAt
- createdAt: Date
-
- @AllowNull(false)
- @Column(Sequelize.DATE)
- startDate: Date
-
- @AllowNull(false)
- @Column(Sequelize.DATE)
- endDate: Date
-
- @AllowNull(false)
- @Column
- views: number
-
- @ForeignKey(() => VideoModel)
- @Column
- videoId: number
-
- @BelongsTo(() => VideoModel, {
- foreignKey: {
- allowNull: false
- },
- onDelete: 'CASCADE'
- })
- Video: VideoModel
-
- static removeOldRemoteViewsHistory (beforeDate: string) {
- const query = {
- where: {
- startDate: {
- [Sequelize.Op.lt]: beforeDate
- },
- videoId: {
- [Sequelize.Op.in]: Sequelize.literal('(SELECT "id" FROM "video" WHERE "remote" IS TRUE)')
- }
- }
- }
-
- return VideoViewModel.destroy(query)
- }
-}
import { VideoCaptionModel } from './video-caption'
import { VideoBlacklistModel } from './video-blacklist'
import { remove } from 'fs-extra'
-import { VideoViewModel } from './video-views'
+import { VideoViewModel } from './video-view'
import { VideoRedundancyModel } from '../redundancy/video-redundancy'
import {
videoFilesModelToFormattedJSON,