Merge branch 'release/v1.0.0' into develop
[oweals/peertube.git] / server / models / account / user-video-history.ts
1 import { AllowNull, BelongsTo, Column, CreatedAt, ForeignKey, IsInt, Min, Model, Table, UpdatedAt } from 'sequelize-typescript'
2 import { VideoModel } from '../video/video'
3 import { UserModel } from './user'
4
5 @Table({
6   tableName: 'userVideoHistory',
7   indexes: [
8     {
9       fields: [ 'userId', 'videoId' ],
10       unique: true
11     },
12     {
13       fields: [ 'userId' ]
14     },
15     {
16       fields: [ 'videoId' ]
17     }
18   ]
19 })
20 export class UserVideoHistoryModel extends Model<UserVideoHistoryModel> {
21   @CreatedAt
22   createdAt: Date
23
24   @UpdatedAt
25   updatedAt: Date
26
27   @AllowNull(false)
28   @IsInt
29   @Column
30   currentTime: number
31
32   @ForeignKey(() => VideoModel)
33   @Column
34   videoId: number
35
36   @BelongsTo(() => VideoModel, {
37     foreignKey: {
38       allowNull: false
39     },
40     onDelete: 'CASCADE'
41   })
42   Video: VideoModel
43
44   @ForeignKey(() => UserModel)
45   @Column
46   userId: number
47
48   @BelongsTo(() => UserModel, {
49     foreignKey: {
50       allowNull: false
51     },
52     onDelete: 'CASCADE'
53   })
54   User: UserModel
55 }