diff options
Diffstat (limited to 'server/controllers/api/search.ts')
-rw-r--r-- | server/controllers/api/search.ts | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/server/controllers/api/search.ts b/server/controllers/api/search.ts new file mode 100644 index 000000000..2ff340b59 --- /dev/null +++ b/server/controllers/api/search.ts | |||
@@ -0,0 +1,43 @@ | |||
1 | import * as express from 'express' | ||
2 | import { isNSFWHidden } from '../../helpers/express-utils' | ||
3 | import { getFormattedObjects } from '../../helpers/utils' | ||
4 | import { VideoModel } from '../../models/video/video' | ||
5 | import { | ||
6 | asyncMiddleware, | ||
7 | optionalAuthenticate, | ||
8 | paginationValidator, | ||
9 | searchValidator, | ||
10 | setDefaultPagination, | ||
11 | setDefaultSearchSort, | ||
12 | videosSearchSortValidator | ||
13 | } from '../../middlewares' | ||
14 | |||
15 | const searchRouter = express.Router() | ||
16 | |||
17 | searchRouter.get('/videos', | ||
18 | paginationValidator, | ||
19 | setDefaultPagination, | ||
20 | videosSearchSortValidator, | ||
21 | setDefaultSearchSort, | ||
22 | optionalAuthenticate, | ||
23 | searchValidator, | ||
24 | asyncMiddleware(searchVideos) | ||
25 | ) | ||
26 | |||
27 | // --------------------------------------------------------------------------- | ||
28 | |||
29 | export { searchRouter } | ||
30 | |||
31 | // --------------------------------------------------------------------------- | ||
32 | |||
33 | async function searchVideos (req: express.Request, res: express.Response) { | ||
34 | const resultList = await VideoModel.searchAndPopulateAccountAndServer( | ||
35 | req.query.search as string, | ||
36 | req.query.start as number, | ||
37 | req.query.count as number, | ||
38 | req.query.sort as string, | ||
39 | isNSFWHidden(res) | ||
40 | ) | ||
41 | |||
42 | return res.json(getFormattedObjects(resultList.data, resultList.total)) | ||
43 | } | ||