Revert "เพิ่ม multiSearch ปรับการส่ง params เป็น body บางส่วน และ เปลี่ยน method จาก get เป็น post"

This reverts commit ed23b8690d.
This commit is contained in:
AdisakKanthawilang 2024-10-22 17:17:48 +07:00
parent 02768bddb7
commit 25361338c9
2 changed files with 63 additions and 78 deletions

87
package-lock.json generated
View file

@ -10,25 +10,25 @@
"license": "ISC",
"dependencies": {
"@elastic/elasticsearch": "^8.14.0",
"@tsoa/runtime": "^6.4.0",
"@tsoa/runtime": "^6.0.0",
"cors": "^2.8.5",
"dotenv": "^16.4.5",
"express": "^4.19.2",
"fast-jwt": "^4.0.1",
"dotenv": "^16.3.1",
"express": "^4.18.2",
"fast-jwt": "^3.3.2",
"promise.any": "^2.0.6",
"reflect-metadata": "^0.2.2",
"swagger-ui-express": "^5.0.1",
"tsoa": "^6.4.0"
"reflect-metadata": "^0.2.1",
"swagger-ui-express": "^5.0.0",
"tsoa": "^6.0.1"
},
"devDependencies": {
"@types/cors": "^2.8.17",
"@types/express": "^4.17.21",
"@types/node": "^20.14.10",
"@types/node": "^20.11.5",
"@types/swagger-ui-express": "^4.1.6",
"nodemon": "^3.1.4",
"prettier": "^3.3.3",
"nodemon": "^3.0.3",
"prettier": "^3.2.2",
"ts-node": "^10.9.2",
"typescript": "^5.5.3"
"typescript": "^5.3.3"
}
},
"node_modules/@cspotcode/source-map-support": {
@ -476,11 +476,11 @@
"dev": true
},
"node_modules/@tsoa/cli": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@tsoa/cli/-/cli-6.4.0.tgz",
"integrity": "sha512-cuKqIAJ33enhXejMb04P2JF/SZdM3WLFE9Qg8s2dOVOrLbbZGK3H85YSORif0unxbre02psXuUyl3FwWBt0/pQ==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/@tsoa/cli/-/cli-6.3.1.tgz",
"integrity": "sha512-KOlsShmAZ8Ju8KCkBFFzdURlGa9YNgf6gAvU6GwnOQl7mcvqvKMk8IDy2bcotpqNcabHo6fbkeExztF/n0Z0kg==",
"dependencies": {
"@tsoa/runtime": "^6.4.0",
"@tsoa/runtime": "^6.3.0",
"@types/multer": "^1.4.11",
"fs-extra": "^11.2.0",
"glob": "^10.3.10",
@ -524,9 +524,9 @@
}
},
"node_modules/@tsoa/runtime": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/@tsoa/runtime/-/runtime-6.4.0.tgz",
"integrity": "sha512-oiVVK++Svo8KMRVTfOQxtepPQRCpPh8bCmPpmNFePGZYJAtZ8XX1cm8Zs/v87dZZmNEooU6egj1G40ive/9phw==",
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/@tsoa/runtime/-/runtime-6.3.0.tgz",
"integrity": "sha512-9z/0ePKpSoYpUq1IJvihk4FcgpAkyMTEEl9oFLiL9p5SE86ndsGJdH3kt/IyqtD3wajPSykMRHlAidrGUyLuNQ==",
"dependencies": {
"@hapi/boom": "^10.0.1",
"@hapi/hapi": "^21.3.3",
@ -1537,9 +1537,9 @@
}
},
"node_modules/fast-jwt": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/fast-jwt/-/fast-jwt-4.0.2.tgz",
"integrity": "sha512-uSG3osRm3QNEkoCMwQ25qVs+pxn0f1n4/WLE+BmKaQZSmwhFhkkimHw7MXIPprrEF01CbNI1wL/35LRvLMfn7g==",
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-jwt/-/fast-jwt-3.3.3.tgz",
"integrity": "sha512-oS3P8bRI24oPLJUePt2OgF64FBQib5TlgHLFQxYNoHYEEZe0gU3cKjJAVqpB5XKV/zjxmq4Hzbk3fgfW/wRz8Q==",
"dependencies": {
"@lukeed/ms": "^2.0.1",
"asn1.js": "^5.4.1",
@ -1547,7 +1547,7 @@
"mnemonist": "^0.39.5"
},
"engines": {
"node": ">=16"
"node": ">=16 <22"
}
},
"node_modules/fill-range": {
@ -2281,12 +2281,15 @@
}
},
"node_modules/jackspeak": {
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
"integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.2.tgz",
"integrity": "sha512-qH3nOSj8q/8+Eg8LUPOq3C+6HWkpUioIjDsq1+D4zY91oZvpPttw8GwtF1nReRYKXl+1AORyFqtm2f5Q1SB6/Q==",
"dependencies": {
"@isaacs/cliui": "^8.0.2"
},
"engines": {
"node": "14 >=14.21 || 16 >=16.20 || >=18"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
},
@ -2622,9 +2625,9 @@
}
},
"node_modules/prettier": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
"integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz",
"integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==",
"dev": true,
"bin": {
"prettier": "bin/prettier.cjs"
@ -3184,9 +3187,9 @@
}
},
"node_modules/ts-deepmerge": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-7.0.1.tgz",
"integrity": "sha512-JBFCmNenZdUCc+TRNCtXVM6N8y/nDQHAcpj5BlwXG/gnogjam1NunulB9ia68mnqYI446giMfpqeBFFkOleh+g==",
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/ts-deepmerge/-/ts-deepmerge-7.0.0.tgz",
"integrity": "sha512-WZ/iAJrKDhdINv1WG6KZIGHrZDar6VfhftG1QJFpVbOYZMYJLJOvZOo1amictRXVdBXZIgBHKswMTXzElngprA==",
"engines": {
"node": ">=14.13.1"
}
@ -3240,12 +3243,12 @@
"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
},
"node_modules/tsoa": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/tsoa/-/tsoa-6.4.0.tgz",
"integrity": "sha512-bgNJrpkoTRjbFo/3S3fH+wh9mXTbTAJkzfUXgsAFZJNaDr1+tmiEaP3OO4AbjH0i1acKu9HTTmok3tWau4T83Q==",
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/tsoa/-/tsoa-6.3.1.tgz",
"integrity": "sha512-w2INTVkjqQDlWo5aLv/ZIVAgWSfOOUstOW1WWVYOa+9mY2Er/W9E9BcBpIdaoJ5BtUZimhhhs5BQ2Nn76OfQpw==",
"dependencies": {
"@tsoa/cli": "^6.4.0",
"@tsoa/runtime": "^6.4.0"
"@tsoa/cli": "^6.3.1",
"@tsoa/runtime": "^6.3.0"
},
"bin": {
"tsoa": "dist/cli.js"
@ -3349,9 +3352,9 @@
}
},
"node_modules/uglify-js": {
"version": "3.19.1",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.1.tgz",
"integrity": "sha512-y/2wiW+ceTYR2TSSptAhfnEtpLaQ4Ups5zrjB2d3kuVxHj16j/QJwPl5PvuGy9uARb39J0+iKxcRPvtpsx4A4A==",
"version": "3.18.0",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz",
"integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==",
"optional": true,
"bin": {
"uglifyjs": "bin/uglifyjs"
@ -3584,9 +3587,9 @@
}
},
"node_modules/yaml": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz",
"integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==",
"version": "2.4.5",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",
"integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",
"bin": {
"yaml": "bin.mjs"
},

View file

@ -1,6 +1,5 @@
import { Body, Controller, Get, Post, Query, Route, Security } from "tsoa";
import { Controller, Get, Query, Route, Security } from "tsoa";
import { Client as ElasticsearchClient } from "@elastic/elasticsearch";
import { match } from "assert";
function getEnvVar(name: string) {
const value = process.env[name];
@ -20,19 +19,15 @@ const elasticsearch = new ElasticsearchClient({
@Route("/api/v1/log")
@Security("keycloak")
export class LogController extends Controller {
@Post()
async Post(
@Body()
body: {
size: number;
search?: string;
multiSearch?: string[];
searchAfter?: number;
date?: Date;
startDate?: Date;
endDate?: Date;
},
@Get()
async GET(
@Query() size: number = 30,
@Query() search?: string,
@Query() searchAfter?: number,
@Query() systemName?: string,
@Query() date?: Date,
@Query() startDate?: Date,
@Query() endDate?: Date,
@Query() timezone = "+07:00",
@Query() sort: "asc" | "desc" = "desc",
) {
@ -41,12 +36,12 @@ export class LogController extends Controller {
let startTimeString = "00:00:00";
let endTimeString = "23:59:59";
if (body.date && !body.startDate && !body.endDate) {
startDateString = `${body.date.getFullYear()}-${`${body.date.getMonth() + 1}`.padStart(2, "0")}-${`${body.date.getDate()}`.padStart(2, "0")}T${startTimeString}`;
endDateString = `${body.date.getFullYear()}-${`${body.date.getMonth() + 1}`.padStart(2, "0")}-${`${body.date.getDate()}`.padStart(2, "0")}T${endTimeString}`;
if (date && !startDate && !endDate) {
startDateString = `${date.getFullYear()}-${`${date.getMonth() + 1}`.padStart(2, "0")}-${`${date.getDate()}`.padStart(2, "0")}T${startTimeString}`;
endDateString = `${date.getFullYear()}-${`${date.getMonth() + 1}`.padStart(2, "0")}-${`${date.getDate()}`.padStart(2, "0")}T${endTimeString}`;
}
if (body.startDate) startDateString = body.startDate.toISOString();
if (body.endDate) endDateString = body.endDate.toISOString();
if (startDate) startDateString = startDate.toISOString();
if (endDate) endDateString = endDate.toISOString();
const queryData = await elasticsearch.search({
index: ELASTICSEARCH_INDEX,
@ -54,7 +49,7 @@ export class LogController extends Controller {
bool: {
must: [
...(systemName ? [{ match: { systemName } }] : []),
...(body.search
...(search
? [
{
bool: {
@ -66,7 +61,7 @@ export class LogController extends Controller {
"responseCode",
"output",
].map((v) => ({
wildcard: { [v]: "*" + body.search + "*" },
wildcard: { [v]: "*" + search + "*" },
})),
},
},
@ -85,25 +80,12 @@ export class LogController extends Controller {
},
]
: []),
...(body.multiSearch
? [
{
bool: {
should: body.multiSearch.map((v) => ({
match_phrase: {
userId: v,
},
})),
},
},
]
: []),
],
},
},
search_after: body.searchAfter ? [body.searchAfter] : undefined,
search_after: searchAfter ? [searchAfter] : undefined,
sort: [{ startTimeStamp: sort }],
size: body.size,
size: size,
});
return queryData.hits.hits;
}