first commit
This commit is contained in:
commit
e082feae8b
26 changed files with 7238 additions and 0 deletions
60
src/controllers/log-controller.ts
Normal file
60
src/controllers/log-controller.ts
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
import { Controller, Get, Query, Route, Security } from "tsoa";
|
||||
import { Client as ElasticsearchClient } from "@elastic/elasticsearch";
|
||||
|
||||
function getEnvVar(name: string) {
|
||||
const value = process.env[name];
|
||||
if (!value) throw new Error(`${name} is required.`);
|
||||
return value;
|
||||
}
|
||||
|
||||
const ELASTICSEARCH_PROTOCOL = getEnvVar("ELASTICSEARCH_PROTOCOL");
|
||||
const ELASTICSEARCH_HOST = getEnvVar("ELASTICSEARCH_HOST");
|
||||
const ELASTICSEARCH_PORT = getEnvVar("ELASTICSEARCH_PORT");
|
||||
const ELASTICSEARCH_INDEX = getEnvVar("ELASTICSEARCH_INDEX");
|
||||
|
||||
const elasticsearch = new ElasticsearchClient({
|
||||
node: `${ELASTICSEARCH_PROTOCOL}://${ELASTICSEARCH_HOST}:${ELASTICSEARCH_PORT}`,
|
||||
});
|
||||
|
||||
@Route("/api/v1/log")
|
||||
@Security("keycloak")
|
||||
export class LogController extends Controller {
|
||||
@Get()
|
||||
async GET(
|
||||
@Query() size: number = 30,
|
||||
@Query() search?: string,
|
||||
@Query() searchAfter?: number,
|
||||
@Query() systemName?: string,
|
||||
) {
|
||||
const queryData = await elasticsearch.search({
|
||||
index: ELASTICSEARCH_INDEX,
|
||||
query: {
|
||||
bool: {
|
||||
must: [
|
||||
...(systemName ? [{ match: { systemName } }] : []),
|
||||
...(search
|
||||
? [
|
||||
{
|
||||
bool: {
|
||||
should: [
|
||||
{
|
||||
multi_match: {
|
||||
query: search,
|
||||
fields: ["method", "logType", "endpoint", "host"],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
]
|
||||
: []),
|
||||
],
|
||||
},
|
||||
},
|
||||
search_after: searchAfter ? [searchAfter] : undefined,
|
||||
sort: [{ startTimeStamp: "desc" }],
|
||||
size: size,
|
||||
});
|
||||
return queryData.hits.hits;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue