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 , res ) { const user = res . locals . oauth . token . User ; const body = 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 ( ) ; }