X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server%2Fcontrollers%2Fapi%2Fvideos%2Fchannel.ts;h=7c62b54761178e4edbf6cd34a1251bfadee3ba68;hb=da854ddd502cd70685ef779c673b9e63757b8aa0;hp=ab54eedee335947936a9e26abc8d379738c5f70d;hpb=eb08047657e739bcd9e592d76307befa3998482b;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/videos/channel.ts b/server/controllers/api/videos/channel.ts index ab54eedee..7c62b5476 100644 --- a/server/controllers/api/videos/channel.ts +++ b/server/controllers/api/videos/channel.ts @@ -1,31 +1,18 @@ import * as express from 'express' - -import { database as db } from '../../../initializers' -import { - logger, - getFormattedObjects, - retryTransactionWrapper, - resetSequelizeInstance -} from '../../../helpers' +import { VideoChannelCreate, VideoChannelUpdate } from '../../../../shared' +import { retryTransactionWrapper } from '../../../helpers/database-utils' +import { logger } from '../../../helpers/logger' +import { getFormattedObjects, resetSequelizeInstance } from '../../../helpers/utils' +import { sequelizeTypescript } from '../../../initializers' +import { setAsyncActorKeys } from '../../../lib/activitypub' +import { createVideoChannel } from '../../../lib/video-channel' import { - authenticate, - paginationValidator, - videoChannelsSortValidator, - videoChannelsAddValidator, - setVideoChannelsSort, - setPagination, - videoChannelsRemoveValidator, - videoChannelGetValidator, - videoChannelsUpdateValidator, - listVideoAuthorChannelsValidator, - asyncMiddleware + asyncMiddleware, authenticate, listVideoAccountChannelsValidator, paginationValidator, setPagination, setVideoChannelsSort, + videoChannelsAddValidator, videoChannelsGetValidator, videoChannelsRemoveValidator, videoChannelsSortValidator, + videoChannelsUpdateValidator } from '../../../middlewares' -import { - createVideoChannel, - updateVideoChannelToFriends -} from '../../../lib' -import { VideoChannelInstance, AuthorInstance } from '../../../models' -import { VideoChannelCreate, VideoChannelUpdate } from '../../../../shared' +import { AccountModel } from '../../../models/account/account' +import { VideoChannelModel } from '../../../models/video/video-channel' const videoChannelRouter = express.Router() @@ -37,9 +24,9 @@ videoChannelRouter.get('/channels', asyncMiddleware(listVideoChannels) ) -videoChannelRouter.get('/authors/:authorId/channels', - listVideoAuthorChannelsValidator, - asyncMiddleware(listVideoAuthorChannels) +videoChannelRouter.get('/accounts/:accountId/channels', + asyncMiddleware(listVideoAccountChannelsValidator), + asyncMiddleware(listVideoAccountChannels) ) videoChannelRouter.post('/channels', @@ -50,18 +37,18 @@ videoChannelRouter.post('/channels', videoChannelRouter.put('/channels/:id', authenticate, - videoChannelsUpdateValidator, + asyncMiddleware(videoChannelsUpdateValidator), updateVideoChannelRetryWrapper ) videoChannelRouter.delete('/channels/:id', authenticate, - videoChannelsRemoveValidator, + asyncMiddleware(videoChannelsRemoveValidator), asyncMiddleware(removeVideoChannelRetryWrapper) ) videoChannelRouter.get('/channels/:id', - videoChannelGetValidator, + asyncMiddleware(videoChannelsGetValidator), asyncMiddleware(getVideoChannel) ) @@ -74,13 +61,13 @@ export { // --------------------------------------------------------------------------- async function listVideoChannels (req: express.Request, res: express.Response, next: express.NextFunction) { - const resultList = await db.VideoChannel.listForApi(req.query.start, req.query.count, req.query.sort) + const resultList = await VideoChannelModel.listForApi(req.query.start, req.query.count, req.query.sort) return res.json(getFormattedObjects(resultList.data, resultList.total)) } -async function listVideoAuthorChannels (req: express.Request, res: express.Response, next: express.NextFunction) { - const resultList = await db.VideoChannel.listByAuthor(res.locals.author.id) +async function listVideoAccountChannels (req: express.Request, res: express.Response, next: express.NextFunction) { + const resultList = await VideoChannelModel.listByAccount(res.locals.account.id) return res.json(getFormattedObjects(resultList.data, resultList.total)) } @@ -101,14 +88,15 @@ async function addVideoChannelRetryWrapper (req: express.Request, res: express.R async function addVideoChannel (req: express.Request, res: express.Response) { const videoChannelInfo: VideoChannelCreate = req.body - const author: AuthorInstance = res.locals.oauth.token.User.Author - let videoChannelCreated: VideoChannelInstance + const account: AccountModel = res.locals.oauth.token.User.Account - await db.sequelize.transaction(async t => { - videoChannelCreated = await createVideoChannel(videoChannelInfo, author, t) + const videoChannelCreated = await sequelizeTypescript.transaction(async t => { + return createVideoChannel(videoChannelInfo, account, t) }) - logger.info('Video channel with uuid %s created.', videoChannelCreated.uuid) + setAsyncActorKeys(videoChannelCreated.Actor) + + logger.info('Video channel with uuid %s created.', videoChannelCreated.Actor.uuid) } async function updateVideoChannelRetryWrapper (req: express.Request, res: express.Response, next: express.NextFunction) { @@ -123,12 +111,12 @@ async function updateVideoChannelRetryWrapper (req: express.Request, res: expres } async function updateVideoChannel (req: express.Request, res: express.Response) { - const videoChannelInstance: VideoChannelInstance = res.locals.videoChannel + const videoChannelInstance = res.locals.videoChannel as VideoChannelModel const videoChannelFieldsSave = videoChannelInstance.toJSON() - const videoChannelInfoToUpdate: VideoChannelUpdate = req.body + const videoChannelInfoToUpdate = req.body as VideoChannelUpdate try { - await db.sequelize.transaction(async t => { + await sequelizeTypescript.transaction(async t => { const sequelizeOptions = { transaction: t } @@ -137,14 +125,12 @@ async function updateVideoChannel (req: express.Request, res: express.Response) if (videoChannelInfoToUpdate.description !== undefined) videoChannelInstance.set('description', videoChannelInfoToUpdate.description) await videoChannelInstance.save(sequelizeOptions) - const json = videoChannelInstance.toUpdateRemoteJSON() - - // Now we'll update the video channel's meta data to our friends - return updateVideoChannelToFriends(json, t) + // TODO + // await sendUpdateVideoChannel(videoChannelInstanceUpdated, t) }) - logger.info('Video channel with name %s and uuid %s updated.', videoChannelInstance.name, videoChannelInstance.uuid) + logger.info('Video channel with name %s and uuid %s updated.', videoChannelInstance.name, videoChannelInstance.Actor.uuid) } catch (err) { logger.debug('Cannot update the video channel.', err) @@ -169,17 +155,18 @@ async function removeVideoChannelRetryWrapper (req: express.Request, res: expres } async function removeVideoChannel (req: express.Request, res: express.Response) { - const videoChannelInstance: VideoChannelInstance = res.locals.videoChannel + const videoChannelInstance: VideoChannelModel = res.locals.videoChannel - await db.sequelize.transaction(async t => { + return sequelizeTypescript.transaction(async t => { await videoChannelInstance.destroy({ transaction: t }) + + logger.info('Video channel with name %s and uuid %s deleted.', videoChannelInstance.name, videoChannelInstance.Actor.uuid) }) - logger.info('Video channel with name %s and uuid %s deleted.', videoChannelInstance.name, videoChannelInstance.uuid) } async function getVideoChannel (req: express.Request, res: express.Response, next: express.NextFunction) { - const videoChannelWithVideos = await db.VideoChannel.loadAndPopulateAuthorAndVideos(res.locals.videoChannel.id) + const videoChannelWithVideos = await VideoChannelModel.loadAndPopulateAccountAndVideos(res.locals.videoChannel.id) return res.json(videoChannelWithVideos.toFormattedJSON()) }