diff options
Diffstat (limited to 'server/models/video/video-abuse.ts')
-rw-r--r-- | server/models/video/video-abuse.ts | 54 |
1 files changed, 42 insertions, 12 deletions
diff --git a/server/models/video/video-abuse.ts b/server/models/video/video-abuse.ts index ea9856213..ea943ffdf 100644 --- a/server/models/video/video-abuse.ts +++ b/server/models/video/video-abuse.ts | |||
@@ -1,4 +1,6 @@ | |||
1 | import { AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, Is, Model, Table, UpdatedAt } from 'sequelize-typescript' | 1 | import { |
2 | AllowNull, BelongsTo, Column, CreatedAt, DataType, Default, ForeignKey, Is, Model, Table, UpdatedAt, DefaultScope | ||
3 | } from 'sequelize-typescript' | ||
2 | import { VideoAbuseObject } from '../../../shared/models/activitypub/objects' | 4 | import { VideoAbuseObject } from '../../../shared/models/activitypub/objects' |
3 | import { VideoAbuse } from '../../../shared/models/videos' | 5 | import { VideoAbuse } from '../../../shared/models/videos' |
4 | import { | 6 | import { |
@@ -14,7 +16,40 @@ import { CONSTRAINTS_FIELDS, VIDEO_ABUSE_STATES } from '../../initializers/const | |||
14 | import { MUserAccountId, MVideoAbuse, MVideoAbuseFormattable, MVideoAbuseVideo } from '../../typings/models' | 16 | import { MUserAccountId, MVideoAbuse, MVideoAbuseFormattable, MVideoAbuseVideo } from '../../typings/models' |
15 | import * as Bluebird from 'bluebird' | 17 | import * as Bluebird from 'bluebird' |
16 | import { literal, Op } from 'sequelize' | 18 | import { literal, Op } from 'sequelize' |
19 | import { ThumbnailModel } from './thumbnail' | ||
20 | import { VideoChannelModel } from './video-channel' | ||
21 | import { ActorModel } from '../activitypub/actor' | ||
22 | import { VideoBlacklistModel } from './video-blacklist' | ||
17 | 23 | ||
24 | @DefaultScope(() => ({ | ||
25 | include: [ | ||
26 | { | ||
27 | model: AccountModel, | ||
28 | required: true | ||
29 | }, | ||
30 | { | ||
31 | model: VideoModel, | ||
32 | required: false, | ||
33 | include: [ | ||
34 | { | ||
35 | model: ThumbnailModel | ||
36 | }, | ||
37 | { | ||
38 | model: VideoChannelModel.unscoped(), | ||
39 | include: [ | ||
40 | { | ||
41 | model: ActorModel | ||
42 | } | ||
43 | ] | ||
44 | }, | ||
45 | { | ||
46 | attributes: [ 'id', 'reason', 'unfederated' ], | ||
47 | model: VideoBlacklistModel | ||
48 | } | ||
49 | ] | ||
50 | } | ||
51 | ] | ||
52 | })) | ||
18 | @Table({ | 53 | @Table({ |
19 | tableName: 'videoAbuse', | 54 | tableName: 'videoAbuse', |
20 | indexes: [ | 55 | indexes: [ |
@@ -114,16 +149,8 @@ export class VideoAbuseModel extends Model<VideoAbuseModel> { | |||
114 | [Op.notIn]: literal('(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')') | 149 | [Op.notIn]: literal('(' + buildBlockedAccountSQL(serverAccountId, userAccountId) + ')') |
115 | } | 150 | } |
116 | }, | 151 | }, |
117 | include: [ | 152 | col: 'VideoAbuseModel.id', |
118 | { | 153 | distinct: true |
119 | model: AccountModel, | ||
120 | required: true | ||
121 | }, | ||
122 | { | ||
123 | model: VideoModel, | ||
124 | required: false | ||
125 | } | ||
126 | ] | ||
127 | } | 154 | } |
128 | 155 | ||
129 | return VideoAbuseModel.findAndCountAll(query) | 156 | return VideoAbuseModel.findAndCountAll(query) |
@@ -151,7 +178,10 @@ export class VideoAbuseModel extends Model<VideoAbuseModel> { | |||
151 | uuid: video.uuid, | 178 | uuid: video.uuid, |
152 | name: video.name, | 179 | name: video.name, |
153 | nsfw: video.nsfw, | 180 | nsfw: video.nsfw, |
154 | deleted: !this.Video | 181 | deleted: !this.Video, |
182 | blacklisted: this.Video && this.Video.isBlacklisted(), | ||
183 | thumbnailPath: this.Video?.getMiniatureStaticPath(), | ||
184 | channel: this.Video?.VideoChannel.toFormattedSummaryJSON() || this.deletedVideo?.channel | ||
155 | }, | 185 | }, |
156 | createdAt: this.createdAt | 186 | createdAt: this.createdAt |
157 | } | 187 | } |