aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/models
diff options
context:
space:
mode:
Diffstat (limited to 'server/models')
-rw-r--r--server/models/video/video-share.ts9
-rw-r--r--server/models/video/video.ts37
2 files changed, 43 insertions, 3 deletions
diff --git a/server/models/video/video-share.ts b/server/models/video/video-share.ts
index 6f770957f..602cc69b9 100644
--- a/server/models/video/video-share.ts
+++ b/server/models/video/video-share.ts
@@ -98,6 +98,15 @@ export class VideoShareModel extends Model<VideoShareModel> {
98 }) 98 })
99 } 99 }
100 100
101 static loadByUrl (url: string, t: Sequelize.Transaction) {
102 return VideoShareModel.scope(ScopeNames.WITH_ACTOR).findOne({
103 where: {
104 url
105 },
106 transaction: t
107 })
108 }
109
101 static loadActorsByShare (videoId: number, t: Sequelize.Transaction) { 110 static loadActorsByShare (videoId: number, t: Sequelize.Transaction) {
102 const query = { 111 const query = {
103 where: { 112 where: {
diff --git a/server/models/video/video.ts b/server/models/video/video.ts
index ea466fccd..fe8c30655 100644
--- a/server/models/video/video.ts
+++ b/server/models/video/video.ts
@@ -130,11 +130,27 @@ enum ScopeNames {
130 } 130 }
131 131
132 const videoChannelInclude = { 132 const videoChannelInclude = {
133 attributes: [ 'name', 'description' ], 133 attributes: [ 'name', 'description', 'id' ],
134 model: VideoChannelModel.unscoped(), 134 model: VideoChannelModel.unscoped(),
135 required: true, 135 required: true,
136 where: {}, 136 where: {},
137 include: [ 137 include: [
138 {
139 attributes: [ 'uuid', 'preferredUsername', 'url', 'serverId', 'avatarId' ],
140 model: ActorModel.unscoped(),
141 required: true,
142 include: [
143 {
144 attributes: [ 'host' ],
145 model: ServerModel.unscoped(),
146 required: false
147 },
148 {
149 model: AvatarModel.unscoped(),
150 required: false
151 }
152 ]
153 },
138 accountInclude 154 accountInclude
139 ] 155 ]
140 } 156 }
@@ -771,12 +787,17 @@ export class VideoModel extends Model<VideoModel> {
771 } 787 }
772 }, 788 },
773 { 789 {
774 preferredUsername: Sequelize.where(Sequelize.col('preferredUsername'), { 790 preferredUsernameChannel: Sequelize.where(Sequelize.col('VideoChannel->Actor.preferredUsername'), {
775 [ Sequelize.Op.iLike ]: '%' + value + '%' 791 [ Sequelize.Op.iLike ]: '%' + value + '%'
776 }) 792 })
777 }, 793 },
778 { 794 {
779 host: Sequelize.where(Sequelize.col('host'), { 795 preferredUsernameAccount: Sequelize.where(Sequelize.col('VideoChannel->Account->Actor.preferredUsername'), {
796 [ Sequelize.Op.iLike ]: '%' + value + '%'
797 })
798 },
799 {
800 host: Sequelize.where(Sequelize.col('VideoChannel->Account->Actor->Server.host'), {
780 [ Sequelize.Op.iLike ]: '%' + value + '%' 801 [ Sequelize.Op.iLike ]: '%' + value + '%'
781 }) 802 })
782 } 803 }
@@ -1043,6 +1064,7 @@ export class VideoModel extends Model<VideoModel> {
1043 1064
1044 toFormattedJSON (): Video { 1065 toFormattedJSON (): Video {
1045 const formattedAccount = this.VideoChannel.Account.toFormattedJSON() 1066 const formattedAccount = this.VideoChannel.Account.toFormattedJSON()
1067 const formattedVideoChannel = this.VideoChannel.toFormattedJSON()
1046 1068
1047 return { 1069 return {
1048 id: this.id, 1070 id: this.id,
@@ -1085,6 +1107,15 @@ export class VideoModel extends Model<VideoModel> {
1085 url: formattedAccount.url, 1107 url: formattedAccount.url,
1086 host: formattedAccount.host, 1108 host: formattedAccount.host,
1087 avatar: formattedAccount.avatar 1109 avatar: formattedAccount.avatar
1110 },
1111 channel: {
1112 id: formattedVideoChannel.id,
1113 uuid: formattedVideoChannel.uuid,
1114 name: formattedVideoChannel.name,
1115 displayName: formattedVideoChannel.displayName,
1116 url: formattedVideoChannel.url,
1117 host: formattedVideoChannel.host,
1118 avatar: formattedVideoChannel.avatar
1088 } 1119 }
1089 } 1120 }
1090 } 1121 }