Server shares user videos
[oweals/peertube.git] / server / models / video / video-share.ts
1 import * as Sequelize from 'sequelize'
2
3 import { addMethodsToModel } from '../utils'
4 import { VideoShareAttributes, VideoShareInstance } from './video-share-interface'
5
6 let VideoShare: Sequelize.Model<VideoShareInstance, VideoShareAttributes>
7
8 export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
9   VideoShare = sequelize.define<VideoShareInstance, VideoShareAttributes>('VideoShare',
10     { },
11     {
12       indexes: [
13         {
14           fields: [ 'accountId' ]
15         },
16         {
17           fields: [ 'videoId' ]
18         }
19       ]
20     }
21   )
22
23   const classMethods = [
24     associate
25   ]
26   addMethodsToModel(VideoShare, classMethods)
27
28   return VideoShare
29 }
30
31 // ------------------------------ METHODS ------------------------------
32
33 function associate (models) {
34   VideoShare.belongsTo(models.Account, {
35     foreignKey: {
36       name: 'accountId',
37       allowNull: false
38     },
39     onDelete: 'cascade'
40   })
41
42   VideoShare.belongsTo(models.Video, {
43     foreignKey: {
44       name: 'videoId',
45       allowNull: true
46     },
47     onDelete: 'cascade'
48   })
49 }