diff options
author | Chocobozzz <florian.bigard@gmail.com> | 2017-11-09 17:51:58 +0100 |
---|---|---|
committer | Chocobozzz <florian.bigard@gmail.com> | 2017-11-27 19:40:51 +0100 |
commit | e4f97babf701481b55cc10fb3448feab5f97c867 (patch) | |
tree | af37402a594dc5ff09f71ecb0687e8cfe4cdb471 /server/models/video/video-channel.ts | |
parent | 343ad675f2a26c15b86150a9a3552e619d5d44f4 (diff) | |
download | PeerTube-e4f97babf701481b55cc10fb3448feab5f97c867.tar.gz PeerTube-e4f97babf701481b55cc10fb3448feab5f97c867.tar.zst PeerTube-e4f97babf701481b55cc10fb3448feab5f97c867.zip |
Begin activitypub
Diffstat (limited to 'server/models/video/video-channel.ts')
-rw-r--r-- | server/models/video/video-channel.ts | 100 |
1 files changed, 46 insertions, 54 deletions
diff --git a/server/models/video/video-channel.ts b/server/models/video/video-channel.ts index 46c2db63f..c17828f3e 100644 --- a/server/models/video/video-channel.ts +++ b/server/models/video/video-channel.ts | |||
@@ -13,19 +13,18 @@ import { | |||
13 | 13 | ||
14 | let VideoChannel: Sequelize.Model<VideoChannelInstance, VideoChannelAttributes> | 14 | let VideoChannel: Sequelize.Model<VideoChannelInstance, VideoChannelAttributes> |
15 | let toFormattedJSON: VideoChannelMethods.ToFormattedJSON | 15 | let toFormattedJSON: VideoChannelMethods.ToFormattedJSON |
16 | let toAddRemoteJSON: VideoChannelMethods.ToAddRemoteJSON | 16 | let toActivityPubObject: VideoChannelMethods.ToActivityPubObject |
17 | let toUpdateRemoteJSON: VideoChannelMethods.ToUpdateRemoteJSON | ||
18 | let isOwned: VideoChannelMethods.IsOwned | 17 | let isOwned: VideoChannelMethods.IsOwned |
19 | let countByAuthor: VideoChannelMethods.CountByAuthor | 18 | let countByAccount: VideoChannelMethods.CountByAccount |
20 | let listOwned: VideoChannelMethods.ListOwned | 19 | let listOwned: VideoChannelMethods.ListOwned |
21 | let listForApi: VideoChannelMethods.ListForApi | 20 | let listForApi: VideoChannelMethods.ListForApi |
22 | let listByAuthor: VideoChannelMethods.ListByAuthor | 21 | let listByAccount: VideoChannelMethods.ListByAccount |
23 | let loadByIdAndAuthor: VideoChannelMethods.LoadByIdAndAuthor | 22 | let loadByIdAndAccount: VideoChannelMethods.LoadByIdAndAccount |
24 | let loadByUUID: VideoChannelMethods.LoadByUUID | 23 | let loadByUUID: VideoChannelMethods.LoadByUUID |
25 | let loadAndPopulateAuthor: VideoChannelMethods.LoadAndPopulateAuthor | 24 | let loadAndPopulateAccount: VideoChannelMethods.LoadAndPopulateAccount |
26 | let loadByUUIDAndPopulateAuthor: VideoChannelMethods.LoadByUUIDAndPopulateAuthor | 25 | let loadByUUIDAndPopulateAccount: VideoChannelMethods.LoadByUUIDAndPopulateAccount |
27 | let loadByHostAndUUID: VideoChannelMethods.LoadByHostAndUUID | 26 | let loadByHostAndUUID: VideoChannelMethods.LoadByHostAndUUID |
28 | let loadAndPopulateAuthorAndVideos: VideoChannelMethods.LoadAndPopulateAuthorAndVideos | 27 | let loadAndPopulateAccountAndVideos: VideoChannelMethods.LoadAndPopulateAccountAndVideos |
29 | 28 | ||
30 | export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { | 29 | export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { |
31 | VideoChannel = sequelize.define<VideoChannelInstance, VideoChannelAttributes>('VideoChannel', | 30 | VideoChannel = sequelize.define<VideoChannelInstance, VideoChannelAttributes>('VideoChannel', |
@@ -62,12 +61,19 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da | |||
62 | type: DataTypes.BOOLEAN, | 61 | type: DataTypes.BOOLEAN, |
63 | allowNull: false, | 62 | allowNull: false, |
64 | defaultValue: false | 63 | defaultValue: false |
64 | }, | ||
65 | url: { | ||
66 | type: DataTypes.STRING, | ||
67 | allowNull: false, | ||
68 | validate: { | ||
69 | isUrl: true | ||
70 | } | ||
65 | } | 71 | } |
66 | }, | 72 | }, |
67 | { | 73 | { |
68 | indexes: [ | 74 | indexes: [ |
69 | { | 75 | { |
70 | fields: [ 'authorId' ] | 76 | fields: [ 'accountId' ] |
71 | } | 77 | } |
72 | ], | 78 | ], |
73 | hooks: { | 79 | hooks: { |
@@ -80,21 +86,20 @@ export default function (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.Da | |||
80 | associate, | 86 | associate, |
81 | 87 | ||
82 | listForApi, | 88 | listForApi, |
83 | listByAuthor, | 89 | listByAccount, |
84 | listOwned, | 90 | listOwned, |
85 | loadByIdAndAuthor, | 91 | loadByIdAndAccount, |
86 | loadAndPopulateAuthor, | 92 | loadAndPopulateAccount, |
87 | loadByUUIDAndPopulateAuthor, | 93 | loadByUUIDAndPopulateAccount, |
88 | loadByUUID, | 94 | loadByUUID, |
89 | loadByHostAndUUID, | 95 | loadByHostAndUUID, |
90 | loadAndPopulateAuthorAndVideos, | 96 | loadAndPopulateAccountAndVideos, |
91 | countByAuthor | 97 | countByAccount |
92 | ] | 98 | ] |
93 | const instanceMethods = [ | 99 | const instanceMethods = [ |
94 | isOwned, | 100 | isOwned, |
95 | toFormattedJSON, | 101 | toFormattedJSON, |
96 | toAddRemoteJSON, | 102 | toActivityPubObject, |
97 | toUpdateRemoteJSON | ||
98 | ] | 103 | ] |
99 | addMethodsToModel(VideoChannel, classMethods, instanceMethods) | 104 | addMethodsToModel(VideoChannel, classMethods, instanceMethods) |
100 | 105 | ||
@@ -118,10 +123,10 @@ toFormattedJSON = function (this: VideoChannelInstance) { | |||
118 | updatedAt: this.updatedAt | 123 | updatedAt: this.updatedAt |
119 | } | 124 | } |
120 | 125 | ||
121 | if (this.Author !== undefined) { | 126 | if (this.Account !== undefined) { |
122 | json['owner'] = { | 127 | json['owner'] = { |
123 | name: this.Author.name, | 128 | name: this.Account.name, |
124 | uuid: this.Author.uuid | 129 | uuid: this.Account.uuid |
125 | } | 130 | } |
126 | } | 131 | } |
127 | 132 | ||
@@ -132,27 +137,14 @@ toFormattedJSON = function (this: VideoChannelInstance) { | |||
132 | return json | 137 | return json |
133 | } | 138 | } |
134 | 139 | ||
135 | toAddRemoteJSON = function (this: VideoChannelInstance) { | 140 | toActivityPubObject = function (this: VideoChannelInstance) { |
136 | const json = { | ||
137 | uuid: this.uuid, | ||
138 | name: this.name, | ||
139 | description: this.description, | ||
140 | createdAt: this.createdAt, | ||
141 | updatedAt: this.updatedAt, | ||
142 | ownerUUID: this.Author.uuid | ||
143 | } | ||
144 | |||
145 | return json | ||
146 | } | ||
147 | |||
148 | toUpdateRemoteJSON = function (this: VideoChannelInstance) { | ||
149 | const json = { | 141 | const json = { |
150 | uuid: this.uuid, | 142 | uuid: this.uuid, |
151 | name: this.name, | 143 | name: this.name, |
152 | description: this.description, | 144 | description: this.description, |
153 | createdAt: this.createdAt, | 145 | createdAt: this.createdAt, |
154 | updatedAt: this.updatedAt, | 146 | updatedAt: this.updatedAt, |
155 | ownerUUID: this.Author.uuid | 147 | ownerUUID: this.Account.uuid |
156 | } | 148 | } |
157 | 149 | ||
158 | return json | 150 | return json |
@@ -161,9 +153,9 @@ toUpdateRemoteJSON = function (this: VideoChannelInstance) { | |||
161 | // ------------------------------ STATICS ------------------------------ | 153 | // ------------------------------ STATICS ------------------------------ |
162 | 154 | ||
163 | function associate (models) { | 155 | function associate (models) { |
164 | VideoChannel.belongsTo(models.Author, { | 156 | VideoChannel.belongsTo(models.Account, { |
165 | foreignKey: { | 157 | foreignKey: { |
166 | name: 'authorId', | 158 | name: 'accountId', |
167 | allowNull: false | 159 | allowNull: false |
168 | }, | 160 | }, |
169 | onDelete: 'CASCADE' | 161 | onDelete: 'CASCADE' |
@@ -190,10 +182,10 @@ function afterDestroy (videoChannel: VideoChannelInstance) { | |||
190 | return undefined | 182 | return undefined |
191 | } | 183 | } |
192 | 184 | ||
193 | countByAuthor = function (authorId: number) { | 185 | countByAccount = function (accountId: number) { |
194 | const query = { | 186 | const query = { |
195 | where: { | 187 | where: { |
196 | authorId | 188 | accountId |
197 | } | 189 | } |
198 | } | 190 | } |
199 | 191 | ||
@@ -205,7 +197,7 @@ listOwned = function () { | |||
205 | where: { | 197 | where: { |
206 | remote: false | 198 | remote: false |
207 | }, | 199 | }, |
208 | include: [ VideoChannel['sequelize'].models.Author ] | 200 | include: [ VideoChannel['sequelize'].models.Account ] |
209 | } | 201 | } |
210 | 202 | ||
211 | return VideoChannel.findAll(query) | 203 | return VideoChannel.findAll(query) |
@@ -218,7 +210,7 @@ listForApi = function (start: number, count: number, sort: string) { | |||
218 | order: [ getSort(sort) ], | 210 | order: [ getSort(sort) ], |
219 | include: [ | 211 | include: [ |
220 | { | 212 | { |
221 | model: VideoChannel['sequelize'].models.Author, | 213 | model: VideoChannel['sequelize'].models.Account, |
222 | required: true, | 214 | required: true, |
223 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] | 215 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] |
224 | } | 216 | } |
@@ -230,14 +222,14 @@ listForApi = function (start: number, count: number, sort: string) { | |||
230 | }) | 222 | }) |
231 | } | 223 | } |
232 | 224 | ||
233 | listByAuthor = function (authorId: number) { | 225 | listByAccount = function (accountId: number) { |
234 | const query = { | 226 | const query = { |
235 | order: [ getSort('createdAt') ], | 227 | order: [ getSort('createdAt') ], |
236 | include: [ | 228 | include: [ |
237 | { | 229 | { |
238 | model: VideoChannel['sequelize'].models.Author, | 230 | model: VideoChannel['sequelize'].models.Account, |
239 | where: { | 231 | where: { |
240 | id: authorId | 232 | id: accountId |
241 | }, | 233 | }, |
242 | required: true, | 234 | required: true, |
243 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] | 235 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] |
@@ -269,7 +261,7 @@ loadByHostAndUUID = function (fromHost: string, uuid: string, t?: Sequelize.Tran | |||
269 | }, | 261 | }, |
270 | include: [ | 262 | include: [ |
271 | { | 263 | { |
272 | model: VideoChannel['sequelize'].models.Author, | 264 | model: VideoChannel['sequelize'].models.Account, |
273 | include: [ | 265 | include: [ |
274 | { | 266 | { |
275 | model: VideoChannel['sequelize'].models.Pod, | 267 | model: VideoChannel['sequelize'].models.Pod, |
@@ -288,15 +280,15 @@ loadByHostAndUUID = function (fromHost: string, uuid: string, t?: Sequelize.Tran | |||
288 | return VideoChannel.findOne(query) | 280 | return VideoChannel.findOne(query) |
289 | } | 281 | } |
290 | 282 | ||
291 | loadByIdAndAuthor = function (id: number, authorId: number) { | 283 | loadByIdAndAccount = function (id: number, accountId: number) { |
292 | const options = { | 284 | const options = { |
293 | where: { | 285 | where: { |
294 | id, | 286 | id, |
295 | authorId | 287 | accountId |
296 | }, | 288 | }, |
297 | include: [ | 289 | include: [ |
298 | { | 290 | { |
299 | model: VideoChannel['sequelize'].models.Author, | 291 | model: VideoChannel['sequelize'].models.Account, |
300 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] | 292 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] |
301 | } | 293 | } |
302 | ] | 294 | ] |
@@ -305,11 +297,11 @@ loadByIdAndAuthor = function (id: number, authorId: number) { | |||
305 | return VideoChannel.findOne(options) | 297 | return VideoChannel.findOne(options) |
306 | } | 298 | } |
307 | 299 | ||
308 | loadAndPopulateAuthor = function (id: number) { | 300 | loadAndPopulateAccount = function (id: number) { |
309 | const options = { | 301 | const options = { |
310 | include: [ | 302 | include: [ |
311 | { | 303 | { |
312 | model: VideoChannel['sequelize'].models.Author, | 304 | model: VideoChannel['sequelize'].models.Account, |
313 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] | 305 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] |
314 | } | 306 | } |
315 | ] | 307 | ] |
@@ -318,14 +310,14 @@ loadAndPopulateAuthor = function (id: number) { | |||
318 | return VideoChannel.findById(id, options) | 310 | return VideoChannel.findById(id, options) |
319 | } | 311 | } |
320 | 312 | ||
321 | loadByUUIDAndPopulateAuthor = function (uuid: string) { | 313 | loadByUUIDAndPopulateAccount = function (uuid: string) { |
322 | const options = { | 314 | const options = { |
323 | where: { | 315 | where: { |
324 | uuid | 316 | uuid |
325 | }, | 317 | }, |
326 | include: [ | 318 | include: [ |
327 | { | 319 | { |
328 | model: VideoChannel['sequelize'].models.Author, | 320 | model: VideoChannel['sequelize'].models.Account, |
329 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] | 321 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] |
330 | } | 322 | } |
331 | ] | 323 | ] |
@@ -334,11 +326,11 @@ loadByUUIDAndPopulateAuthor = function (uuid: string) { | |||
334 | return VideoChannel.findOne(options) | 326 | return VideoChannel.findOne(options) |
335 | } | 327 | } |
336 | 328 | ||
337 | loadAndPopulateAuthorAndVideos = function (id: number) { | 329 | loadAndPopulateAccountAndVideos = function (id: number) { |
338 | const options = { | 330 | const options = { |
339 | include: [ | 331 | include: [ |
340 | { | 332 | { |
341 | model: VideoChannel['sequelize'].models.Author, | 333 | model: VideoChannel['sequelize'].models.Account, |
342 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] | 334 | include: [ { model: VideoChannel['sequelize'].models.Pod, required: false } ] |
343 | }, | 335 | }, |
344 | VideoChannel['sequelize'].models.Video | 336 | VideoChannel['sequelize'].models.Video |