]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/models/video/video-view.ts
Fix live ending banner
[github/Chocobozzz/PeerTube.git] / server / models / video / video-view.ts
CommitLineData
6b616860
C
1import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, Model, Table } from 'sequelize-typescript'
2import { VideoModel } from './video'
3import * as Sequelize from 'sequelize'
4
5@Table({
6 tableName: 'videoView',
4f0f2ab2 7 updatedAt: false,
6b616860
C
8 indexes: [
9 {
10 fields: [ 'videoId' ]
0926af7a
C
11 },
12 {
13 fields: [ 'startDate' ]
6b616860
C
14 }
15 ]
16})
b49f22d8 17export class VideoViewModel extends Model {
6b616860
C
18 @CreatedAt
19 createdAt: Date
20
21 @AllowNull(false)
22 @Column(Sequelize.DATE)
23 startDate: Date
24
25 @AllowNull(false)
26 @Column(Sequelize.DATE)
27 endDate: Date
28
29 @AllowNull(false)
30 @Column
31 views: number
32
33 @ForeignKey(() => VideoModel)
34 @Column
35 videoId: number
36
37 @BelongsTo(() => VideoModel, {
38 foreignKey: {
39 allowNull: false
40 },
41 onDelete: 'CASCADE'
42 })
43 Video: VideoModel
44
cda03765
C
45 static removeOldRemoteViewsHistory (beforeDate: string) {
46 const query = {
47 where: {
48 startDate: {
49 [Sequelize.Op.lt]: beforeDate
50 },
51 videoId: {
52 [Sequelize.Op.in]: Sequelize.literal('(SELECT "id" FROM "video" WHERE "remote" IS TRUE)')
53 }
54 }
55 }
56
57 return VideoViewModel.destroy(query)
58 }
6b616860 59}