1 import * as express from 'express'
2 import { buildNSFWFilter } from '../../helpers/express-utils'
3 import { getFormattedObjects } from '../../helpers/utils'
4 import { VideoModel } from '../../models/video/video'
7 commonVideosFiltersValidator,
13 videosSearchSortValidator
14 } from '../../middlewares'
15 import { VideosSearchQuery } from '../../../shared/models/search'
17 const searchRouter = express.Router()
19 searchRouter.get('/videos',
22 videosSearchSortValidator,
25 commonVideosFiltersValidator,
27 asyncMiddleware(searchVideos)
30 // ---------------------------------------------------------------------------
32 export { searchRouter }
34 // ---------------------------------------------------------------------------
36 async function searchVideos (req: express.Request, res: express.Response) {
37 const query: VideosSearchQuery = req.query
39 const options = Object.assign(query, { nsfw: buildNSFWFilter(res, query.nsfw) })
40 const resultList = await VideoModel.searchAndPopulateAccountAndServer(options)
42 return res.json(getFormattedObjects(resultList.data, resultList.total))