import express from 'express' import { HttpStatusCode, UserWatchingVideo } from '@shared/models' import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate, openapiOperationDoc, videoWatchingValidator } from '../../../middlewares' import { UserVideoHistoryModel } from '../../../models/user/user-video-history' const watchingRouter = express.Router() watchingRouter.put('/:videoId/watching', openapiOperationDoc({ operationId: 'setProgress' }), authenticate, asyncMiddleware(videoWatchingValidator), asyncRetryTransactionMiddleware(userWatchVideo) ) // --------------------------------------------------------------------------- export { watchingRouter } // --------------------------------------------------------------------------- async function userWatchVideo (req: express.Request, res: express.Response) { const user = res.locals.oauth.token.User const body: UserWatchingVideo = req.body const { id: videoId } = res.locals.videoId await UserVideoHistoryModel.upsert({ videoId, userId: user.id, currentTime: body.currentTime }) return res.type('json') .status(HttpStatusCode.NO_CONTENT_204) .end() }