feat: sortable date with time respect

This commit is contained in:
Methapon2001 2024-07-31 11:21:43 +07:00
parent eb0511ee70
commit e04f40c58e

View file

@ -28,16 +28,20 @@ export class LogController extends Controller {
@Query() date?: Date, @Query() date?: Date,
@Query() startDate?: Date, @Query() startDate?: Date,
@Query() endDate?: Date, @Query() endDate?: Date,
@Query() timezone = "+07:00",
@Query() sort: "asc" | "desc" = "desc",
) { ) {
if (!endDate && !startDate) startDate = endDate = date;
let startDateString: string | undefined; let startDateString: string | undefined;
let endDateString: string | undefined; let endDateString: string | undefined;
let startTimeString = "00:00:00";
let endTimeString = "23:59:59";
if (startDate && endDate) { if (date && !startDate && !endDate) {
startDateString = `${startDate.getFullYear()}-${(startDate.getMonth() + 1).toString().padStart(2, "0")}-${startDate.getDate().toString().padStart(2, "0")}T00:00:00`; startDateString = `${date.getFullYear()}-${`${date.getMonth() + 1}`.padStart(2, "0")}-${`${date.getDate()}`.padStart(2, "0")}T${startTimeString}`;
endDateString = `${endDate.getFullYear()}-${(endDate.getMonth() + 1).toString().padStart(2, "0")}-${endDate.getDate().toString().padStart(2, "0")}T23:59:59`; endDateString = `${date.getFullYear()}-${`${date.getMonth() + 1}`.padStart(2, "0")}-${`${date.getDate()}`.padStart(2, "0")}T${endTimeString}`;
} }
if (startDate) startDateString = startDate.toISOString();
if (endDate) endDateString = endDate.toISOString();
const queryData = await elasticsearch.search({ const queryData = await elasticsearch.search({
index: ELASTICSEARCH_INDEX, index: ELASTICSEARCH_INDEX,
@ -63,7 +67,7 @@ export class LogController extends Controller {
{ {
range: { range: {
startTimeStamp: { startTimeStamp: {
time_zone: "+07:00", time_zone: timezone,
gte: startDateString, gte: startDateString,
lte: endDateString, lte: endDateString,
}, },
@ -75,7 +79,7 @@ export class LogController extends Controller {
}, },
}, },
search_after: searchAfter ? [searchAfter] : undefined, search_after: searchAfter ? [searchAfter] : undefined,
sort: [{ startTimeStamp: "desc" }], sort: [{ startTimeStamp: sort }],
size: size, size: size,
}); });
return queryData.hits.hits; return queryData.hits.hits;