import * as express from 'express'
-
-import { database as db } from '../../../initializers/database'
-import {
- logger,
- retryTransactionWrapper
-} from '../../../helpers'
-import {
- VIDEO_RATE_TYPES,
- REQUEST_VIDEO_EVENT_TYPES,
- REQUEST_VIDEO_QADU_TYPES
-} from '../../../initializers'
-import {
- addEventsToRemoteVideo,
- quickAndDirtyUpdatesVideoToFriends
-} from '../../../lib'
-import {
- authenticate,
- videoRateValidator,
- asyncMiddleware
-} from '../../../middlewares'
import { UserVideoRateUpdate } from '../../../../shared'
+import { logger, retryTransactionWrapper } from '../../../helpers'
+import { VIDEO_RATE_TYPES } from '../../../initializers'
+import { database as db } from '../../../initializers/database'
+import { asyncMiddleware, authenticate, videoRateValidator } from '../../../middlewares'
+import { AccountInstance } from '../../../models/account/account-interface'
+import { VideoInstance } from '../../../models/video/video-interface'
const rateVideoRouter = express.Router()
async function rateVideo (req: express.Request, res: express.Response) {
const body: UserVideoRateUpdate = req.body
const rateType = body.rating
- const videoInstance = res.locals.video
- const userInstance = res.locals.oauth.token.User
+ const videoInstance: VideoInstance = res.locals.video
+ const accountInstance: AccountInstance = res.locals.oauth.token.User.Account
await db.sequelize.transaction(async t => {
const sequelizeOptions = { transaction: t }
- const previousRate = await db.UserVideoRate.load(userInstance.id, videoInstance.id, t)
+ const previousRate = await db.AccountVideoRate.load(accountInstance.id, videoInstance.id, t)
let likesToIncrement = 0
let dislikesToIncrement = 0
}
} else if (rateType !== 'none') { // There was not a previous rate, insert a new one if there is a rate
const query = {
- userId: userInstance.id,
+ accountId: accountInstance.id,
videoId: videoInstance.id,
type: rateType
}
- await db.UserVideoRate.create(query, sequelizeOptions)
+ await db.AccountVideoRate.create(query, sequelizeOptions)
}
const incrementQuery = {
// It is useful for the user to have a feedback
await videoInstance.increment(incrementQuery, sequelizeOptions)
- // Send a event to original pod
if (videoInstance.isOwned() === false) {
-
- const eventsParams = []
-
- if (likesToIncrement !== 0) {
- eventsParams.push({
- videoId: videoInstance.id,
- type: REQUEST_VIDEO_EVENT_TYPES.LIKES,
- count: likesToIncrement
- })
- }
-
- if (dislikesToIncrement !== 0) {
- eventsParams.push({
- videoId: videoInstance.id,
- type: REQUEST_VIDEO_EVENT_TYPES.DISLIKES,
- count: dislikesToIncrement
- })
- }
-
- await addEventsToRemoteVideo(eventsParams, t)
- } else { // We own the video, we need to send a quick and dirty update to friends to notify the counts changed
- const qadusParams = []
-
- if (likesToIncrement !== 0) {
- qadusParams.push({
- videoId: videoInstance.id,
- type: REQUEST_VIDEO_QADU_TYPES.LIKES
- })
- }
-
- if (dislikesToIncrement !== 0) {
- qadusParams.push({
- videoId: videoInstance.id,
- type: REQUEST_VIDEO_QADU_TYPES.DISLIKES
- })
- }
-
- await quickAndDirtyUpdatesVideoToFriends(qadusParams, t)
+ // TODO: Send a event to original server
+ } else {
+ // TODO: Send update to followers
}
})
- logger.info('User video rate for video %s of user %s updated.', videoInstance.name, userInstance.username)
+ logger.info('Account video rate for video %s of account %s updated.', videoInstance.name, accountInstance.name)
}