diff --git a/Services/server/src/controllers/searchController.ts b/Services/server/src/controllers/searchController.ts index 99de738..dea0d8e 100644 --- a/Services/server/src/controllers/searchController.ts +++ b/Services/server/src/controllers/searchController.ts @@ -1,23 +1,29 @@ -import { Body, Controller, Post, Route, SuccessResponse, Tags } from "tsoa"; +import { Body, Controller, Post, Route, Security, SuccessResponse, Tags } from "tsoa"; import HttpStatusCode from "../interfaces/http-status"; import esClient from "../elasticsearch"; import { Search } from "../interfaces/search"; import { EhrFile } from "../interfaces/ehr-fs"; +const DEFAULT_INDEX = process.env.ELASTICSEARCH_INDEX; + +if (!DEFAULT_INDEX) throw Error("Default ElasticSearch index must be specified."); + @Route("/search") export class SearchController extends Controller { @Post("/") @Tags("Search") - @SuccessResponse(HttpStatusCode.OK) + @Security("bearerAuth") + @SuccessResponse(HttpStatusCode.OK, "สำเร็จ") public async searchFile(@Body() search: Search): Promise { const result = await esClient.search }>({ - index: process.env.ELASTICSEARCH_INDEX ?? "ehr-index", + index: DEFAULT_INDEX, query: { bool: { must: search.AND?.map((v) => ({ match: { [v.field]: v.value } })), should: search.OR?.map((v) => ({ match: { [v.field]: v.value } })), }, }, + size: 10000, }); return result.hits.hits.length > 0