aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/view/video-view.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/models/view/video-view.ts')
-rw-r--r--server/models/view/video-view.ts67
1 files changed, 0 insertions, 67 deletions
diff --git a/server/models/view/video-view.ts b/server/models/view/video-view.ts
deleted file mode 100644
index 1504a364e..000000000
--- a/server/models/view/video-view.ts
+++ /dev/null
@@ -1,67 +0,0 @@
1import { literal, Op } from 'sequelize'
2import { AllowNull, BelongsTo, Column, CreatedAt, DataType, ForeignKey, Model, Table } from 'sequelize-typescript'
3import { AttributesOnly } from '@shared/typescript-utils'
4import { VideoModel } from '../video/video'
5
6/**
7 *
8 * Aggregate views of all videos federated with our instance
9 * Mainly used by the trending/hot algorithms
10 *
11 */
12
13@Table({
14 tableName: 'videoView',
15 updatedAt: false,
16 indexes: [
17 {
18 fields: [ 'videoId' ]
19 },
20 {
21 fields: [ 'startDate' ]
22 }
23 ]
24})
25export class VideoViewModel extends Model<Partial<AttributesOnly<VideoViewModel>>> {
26 @CreatedAt
27 createdAt: Date
28
29 @AllowNull(false)
30 @Column(DataType.DATE)
31 startDate: Date
32
33 @AllowNull(false)
34 @Column(DataType.DATE)
35 endDate: Date
36
37 @AllowNull(false)
38 @Column
39 views: number
40
41 @ForeignKey(() => VideoModel)
42 @Column
43 videoId: number
44
45 @BelongsTo(() => VideoModel, {
46 foreignKey: {
47 allowNull: false
48 },
49 onDelete: 'CASCADE'
50 })
51 Video: VideoModel
52
53 static removeOldRemoteViewsHistory (beforeDate: string) {
54 const query = {
55 where: {
56 startDate: {
57 [Op.lt]: beforeDate
58 },
59 videoId: {
60 [Op.in]: literal('(SELECT "id" FROM "video" WHERE "remote" IS TRUE)')
61 }
62 }
63 }
64
65 return VideoViewModel.destroy(query)
66 }
67}