From 57c36b277e68b764dd34cb2e449f6e2ca3d1e9b6 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 19 Jul 2018 16:17:54 +0200 Subject: Begin advanced search --- server/controllers/api/search.ts | 43 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 server/controllers/api/search.ts (limited to 'server/controllers/api/search.ts') 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 @@ +import * as express from 'express' +import { isNSFWHidden } from '../../helpers/express-utils' +import { getFormattedObjects } from '../../helpers/utils' +import { VideoModel } from '../../models/video/video' +import { + asyncMiddleware, + optionalAuthenticate, + paginationValidator, + searchValidator, + setDefaultPagination, + setDefaultSearchSort, + videosSearchSortValidator +} from '../../middlewares' + +const searchRouter = express.Router() + +searchRouter.get('/videos', + paginationValidator, + setDefaultPagination, + videosSearchSortValidator, + setDefaultSearchSort, + optionalAuthenticate, + searchValidator, + asyncMiddleware(searchVideos) +) + +// --------------------------------------------------------------------------- + +export { searchRouter } + +// --------------------------------------------------------------------------- + +async function searchVideos (req: express.Request, res: express.Response) { + const resultList = await VideoModel.searchAndPopulateAccountAndServer( + req.query.search as string, + req.query.start as number, + req.query.count as number, + req.query.sort as string, + isNSFWHidden(res) + ) + + return res.json(getFormattedObjects(resultList.data, resultList.total)) +} -- cgit v1.2.3