aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models/video
diff options
context:
space:
mode:
Diffstat (limited to 'server/models/video')
-rw-r--r--server/models/video/index.ts2
-rw-r--r--server/models/video/video-channel-share-interface.ts27
-rw-r--r--server/models/video/video-channel-share.ts49
-rw-r--r--server/models/video/video-share-interface.ts25
-rw-r--r--server/models/video/video-share.ts49
-rw-r--r--server/models/video/video.ts11
6 files changed, 152 insertions, 11 deletions
diff --git a/server/models/video/index.ts b/server/models/video/index.ts
index 20d97931f..e17bbfab4 100644
--- a/server/models/video/index.ts
+++ b/server/models/video/index.ts
@@ -5,3 +5,5 @@ export * from './video-channel-interface'
5export * from './video-tag-interface' 5export * from './video-tag-interface'
6export * from './video-file-interface' 6export * from './video-file-interface'
7export * from './video-interface' 7export * from './video-interface'
8export * from './video-share-interface'
9export * from './video-channel-share-interface'
diff --git a/server/models/video/video-channel-share-interface.ts b/server/models/video/video-channel-share-interface.ts
new file mode 100644
index 000000000..9ac6d7b23
--- /dev/null
+++ b/server/models/video/video-channel-share-interface.ts
@@ -0,0 +1,27 @@
1import * as Sequelize from 'sequelize'
2import { AccountInstance } from '../account/account-interface'
3import { VideoChannelInstance } from './video-channel-interface'
4
5export namespace VideoChannelShareMethods {
6}
7
8export interface VideoChannelShareClass {
9}
10
11export interface VideoChannelShareAttributes {
12 accountId: number
13 videoChannelId: number
14}
15
16export interface VideoChannelShareInstance
17 extends VideoChannelShareClass, VideoChannelShareAttributes, Sequelize.Instance<VideoChannelShareAttributes> {
18 id: number
19 createdAt: Date
20 updatedAt: Date
21
22 Account?: AccountInstance
23 VideoChannel?: VideoChannelInstance
24}
25
26export interface VideoChannelShareModel
27 extends VideoChannelShareClass, Sequelize.Model<VideoChannelShareInstance, VideoChannelShareAttributes> {}
diff --git a/server/models/video/video-channel-share.ts b/server/models/video/video-channel-share.ts
new file mode 100644
index 000000000..b6199279f
--- /dev/null
+++ b/server/models/video/video-channel-share.ts
@@ -0,0 +1,49 @@
1import * as Sequelize from 'sequelize'
2
3import { addMethodsToModel } from '../utils'
4import { VideoChannelShareAttributes, VideoChannelShareInstance } from './video-channel-share-interface'
5
6let VideoChannelShare: Sequelize.Model<VideoChannelShareInstance, VideoChannelShareAttributes>
7
8export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
9 VideoChannelShare = sequelize.define<VideoChannelShareInstance, VideoChannelShareAttributes>('VideoChannelShare',
10 { },
11 {
12 indexes: [
13 {
14 fields: [ 'accountId' ]
15 },
16 {
17 fields: [ 'videoChannelId' ]
18 }
19 ]
20 }
21 )
22
23 const classMethods = [
24 associate
25 ]
26 addMethodsToModel(VideoChannelShare, classMethods)
27
28 return VideoChannelShare
29}
30
31// ------------------------------ METHODS ------------------------------
32
33function associate (models) {
34 VideoChannelShare.belongsTo(models.Account, {
35 foreignKey: {
36 name: 'accountId',
37 allowNull: false
38 },
39 onDelete: 'cascade'
40 })
41
42 VideoChannelShare.belongsTo(models.VideoChannel, {
43 foreignKey: {
44 name: 'videoChannelId',
45 allowNull: true
46 },
47 onDelete: 'cascade'
48 })
49}
diff --git a/server/models/video/video-share-interface.ts b/server/models/video/video-share-interface.ts
new file mode 100644
index 000000000..7928b9a9c
--- /dev/null
+++ b/server/models/video/video-share-interface.ts
@@ -0,0 +1,25 @@
1import * as Sequelize from 'sequelize'
2import { AccountInstance } from '../account/account-interface'
3import { VideoInstance } from './video-interface'
4
5export namespace VideoShareMethods {
6}
7
8export interface VideoShareClass {
9}
10
11export interface VideoShareAttributes {
12 accountId: number
13 videoId: number
14}
15
16export interface VideoShareInstance extends VideoShareClass, VideoShareAttributes, Sequelize.Instance<VideoShareAttributes> {
17 id: number
18 createdAt: Date
19 updatedAt: Date
20
21 Account?: AccountInstance
22 Video?: VideoInstance
23}
24
25export interface VideoShareModel extends VideoShareClass, Sequelize.Model<VideoShareInstance, VideoShareAttributes> {}
diff --git a/server/models/video/video-share.ts b/server/models/video/video-share.ts
new file mode 100644
index 000000000..358491fd2
--- /dev/null
+++ b/server/models/video/video-share.ts
@@ -0,0 +1,49 @@
1import * as Sequelize from 'sequelize'
2
3import { addMethodsToModel } from '../utils'
4import { VideoShareAttributes, VideoShareInstance } from './video-share-interface'
5
6let VideoShare: Sequelize.Model<VideoShareInstance, VideoShareAttributes>
7
8export 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
33function 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}
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index b00081f25..480e54276 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -253,9 +253,6 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da
253 }, 253 },
254 { 254 {
255 fields: [ 'channelId' ] 255 fields: [ 'channelId' ]
256 },
257 {
258 fields: [ 'parentId' ]
259 } 256 }
260 ], 257 ],
261 hooks: { 258 hooks: {
@@ -329,14 +326,6 @@ function associate (models) {
329 onDelete: 'cascade' 326 onDelete: 'cascade'
330 }) 327 })
331 328
332 Video.belongsTo(models.Video, {
333 foreignKey: {
334 name: 'parentId',
335 allowNull: true
336 },
337 onDelete: 'cascade'
338 })
339
340 Video.belongsToMany(models.Tag, { 329 Video.belongsToMany(models.Tag, {
341 foreignKey: 'videoId', 330 foreignKey: 'videoId',
342 through: models.VideoTag, 331 through: models.VideoTag,