diff options
author | Chocobozzz <me@florianbigard.com> | 2019-08-15 11:53:26 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2019-08-19 17:26:35 +0200 |
commit | 453e83ea5d81d203ba34bc43cd5c2c750ba40568 (patch) | |
tree | 604e02f4343d13a4ba42e1fb7527ba6ab9111712 /server/controllers/api/videos/import.ts | |
parent | 13176a07a95984a53cc59aec5217f2ce9806d1bc (diff) | |
download | PeerTube-453e83ea5d81d203ba34bc43cd5c2c750ba40568.tar.gz PeerTube-453e83ea5d81d203ba34bc43cd5c2c750ba40568.tar.zst PeerTube-453e83ea5d81d203ba34bc43cd5c2c750ba40568.zip |
Stronger model typings
Diffstat (limited to 'server/controllers/api/videos/import.ts')
-rw-r--r-- | server/controllers/api/videos/import.ts | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/server/controllers/api/videos/import.ts b/server/controllers/api/videos/import.ts index 04c9b547b..adc2f9aa2 100644 --- a/server/controllers/api/videos/import.ts +++ b/server/controllers/api/videos/import.ts | |||
@@ -15,7 +15,6 @@ import { VideoImportModel } from '../../../models/video/video-import' | |||
15 | import { JobQueue } from '../../../lib/job-queue/job-queue' | 15 | import { JobQueue } from '../../../lib/job-queue/job-queue' |
16 | import { join } from 'path' | 16 | import { join } from 'path' |
17 | import { isArray } from '../../../helpers/custom-validators/misc' | 17 | import { isArray } from '../../../helpers/custom-validators/misc' |
18 | import { VideoChannelModel } from '../../../models/video/video-channel' | ||
19 | import * as Bluebird from 'bluebird' | 18 | import * as Bluebird from 'bluebird' |
20 | import * as parseTorrent from 'parse-torrent' | 19 | import * as parseTorrent from 'parse-torrent' |
21 | import { getSecureTorrentName } from '../../../helpers/utils' | 20 | import { getSecureTorrentName } from '../../../helpers/utils' |
@@ -25,8 +24,14 @@ import { CONFIG } from '../../../initializers/config' | |||
25 | import { sequelizeTypescript } from '../../../initializers/database' | 24 | import { sequelizeTypescript } from '../../../initializers/database' |
26 | import { createVideoMiniatureFromExisting } from '../../../lib/thumbnail' | 25 | import { createVideoMiniatureFromExisting } from '../../../lib/thumbnail' |
27 | import { ThumbnailType } from '../../../../shared/models/videos/thumbnail.type' | 26 | import { ThumbnailType } from '../../../../shared/models/videos/thumbnail.type' |
28 | import { ThumbnailModel } from '../../../models/video/thumbnail' | 27 | import { |
29 | import { UserModel } from '../../../models/account/user' | 28 | MChannelActorAccountDefault, |
29 | MThumbnail, | ||
30 | MUser, | ||
31 | MVideoThumbnailAccountDefault, | ||
32 | MVideoWithBlacklistLight | ||
33 | } from '@server/typings/models' | ||
34 | import { MVideoImport, MVideoImportVideo } from '@server/typings/models/video/video-import' | ||
30 | 35 | ||
31 | const auditLogger = auditLoggerFactory('video-imports') | 36 | const auditLogger = auditLoggerFactory('video-imports') |
32 | const videoImportsRouter = express.Router() | 37 | const videoImportsRouter = express.Router() |
@@ -225,28 +230,28 @@ async function processPreview (req: express.Request, video: VideoModel) { | |||
225 | } | 230 | } |
226 | 231 | ||
227 | function insertIntoDB (parameters: { | 232 | function insertIntoDB (parameters: { |
228 | video: VideoModel, | 233 | video: MVideoThumbnailAccountDefault, |
229 | thumbnailModel: ThumbnailModel, | 234 | thumbnailModel: MThumbnail, |
230 | previewModel: ThumbnailModel, | 235 | previewModel: MThumbnail, |
231 | videoChannel: VideoChannelModel, | 236 | videoChannel: MChannelActorAccountDefault, |
232 | tags: string[], | 237 | tags: string[], |
233 | videoImportAttributes: Partial<VideoImportModel>, | 238 | videoImportAttributes: Partial<MVideoImport>, |
234 | user: UserModel | 239 | user: MUser |
235 | }): Bluebird<VideoImportModel> { | 240 | }): Bluebird<MVideoImportVideo> { |
236 | const { video, thumbnailModel, previewModel, videoChannel, tags, videoImportAttributes, user } = parameters | 241 | const { video, thumbnailModel, previewModel, videoChannel, tags, videoImportAttributes, user } = parameters |
237 | 242 | ||
238 | return sequelizeTypescript.transaction(async t => { | 243 | return sequelizeTypescript.transaction(async t => { |
239 | const sequelizeOptions = { transaction: t } | 244 | const sequelizeOptions = { transaction: t } |
240 | 245 | ||
241 | // Save video object in database | 246 | // Save video object in database |
242 | const videoCreated = await video.save(sequelizeOptions) | 247 | const videoCreated = await video.save(sequelizeOptions) as (MVideoThumbnailAccountDefault & MVideoWithBlacklistLight) |
243 | videoCreated.VideoChannel = videoChannel | 248 | videoCreated.VideoChannel = videoChannel |
244 | 249 | ||
245 | if (thumbnailModel) await videoCreated.addAndSaveThumbnail(thumbnailModel, t) | 250 | if (thumbnailModel) await videoCreated.addAndSaveThumbnail(thumbnailModel, t) |
246 | if (previewModel) await videoCreated.addAndSaveThumbnail(previewModel, t) | 251 | if (previewModel) await videoCreated.addAndSaveThumbnail(previewModel, t) |
247 | 252 | ||
248 | await autoBlacklistVideoIfNeeded({ | 253 | await autoBlacklistVideoIfNeeded({ |
249 | video, | 254 | video: videoCreated, |
250 | user, | 255 | user, |
251 | notify: false, | 256 | notify: false, |
252 | isRemote: false, | 257 | isRemote: false, |
@@ -259,16 +264,13 @@ function insertIntoDB (parameters: { | |||
259 | const tagInstances = await TagModel.findOrCreateTags(tags, t) | 264 | const tagInstances = await TagModel.findOrCreateTags(tags, t) |
260 | 265 | ||
261 | await videoCreated.$set('Tags', tagInstances, sequelizeOptions) | 266 | await videoCreated.$set('Tags', tagInstances, sequelizeOptions) |
262 | videoCreated.Tags = tagInstances | ||
263 | } else { | ||
264 | videoCreated.Tags = [] | ||
265 | } | 267 | } |
266 | 268 | ||
267 | // Create video import object in database | 269 | // Create video import object in database |
268 | const videoImport = await VideoImportModel.create( | 270 | const videoImport = await VideoImportModel.create( |
269 | Object.assign({ videoId: videoCreated.id }, videoImportAttributes), | 271 | Object.assign({ videoId: videoCreated.id }, videoImportAttributes), |
270 | sequelizeOptions | 272 | sequelizeOptions |
271 | ) | 273 | ) as MVideoImportVideo |
272 | videoImport.Video = videoCreated | 274 | videoImport.Video = videoCreated |
273 | 275 | ||
274 | return videoImport | 276 | return videoImport |