Revert "เพิ่ม multiSearch ปรับการส่ง params เป็น body บางส่วน และ เปลี่ยน method จาก get เป็น post"
This reverts commit ed23b8690d.
This commit is contained in:
parent
02768bddb7
commit
25361338c9
2 changed files with 63 additions and 78 deletions
87
package-lock.json
generated
87
package-lock.json
generated
|
|
@ -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"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue