summaryrefslogtreecommitdiff
path: root/lib/integration-log/validations.ts
diff options
context:
space:
mode:
author0-Zz-ang <s1998319@gmail.com>2025-07-10 15:56:13 +0900
committer0-Zz-ang <s1998319@gmail.com>2025-07-10 15:56:13 +0900
commit356929b399ef31a4de82906267df438cf29ea59d (patch)
treec353a55c076e987042f99f3dbf1eab54706f6829 /lib/integration-log/validations.ts
parent25d569828b704a102f681a627c76c4129afa8be3 (diff)
인터페이스 관련 파일 수정
Diffstat (limited to 'lib/integration-log/validations.ts')
-rw-r--r--lib/integration-log/validations.ts36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/integration-log/validations.ts b/lib/integration-log/validations.ts
new file mode 100644
index 00000000..41bc6860
--- /dev/null
+++ b/lib/integration-log/validations.ts
@@ -0,0 +1,36 @@
+import {
+ createSearchParamsCache,
+ parseAsArrayOf,
+ parseAsInteger,
+ parseAsString,
+ parseAsStringEnum,
+} from "nuqs/server";
+import * as z from "zod";
+
+import { getFiltersStateParser, getSortingStateParser } from "@/lib/parsers";
+import { integrationLogTable } from "@/db/schema/integration-log";
+
+export const SearchParamsCache = createSearchParamsCache({
+ // UI 모드나 플래그 관련
+ flags: parseAsArrayOf(z.enum(["advancedTable", "floatingBar"])).withDefault([]),
+
+ // 페이징
+ page: parseAsInteger.withDefault(1),
+ perPage: parseAsInteger.withDefault(10),
+
+ // 정렬 (executionTime 기준 내림차순)
+ sort: getSortingStateParser<typeof integrationLogTable>().withDefault([
+ { id: "executionTime", desc: true }
+ ]),
+
+ // 필터링 필드
+ status: parseAsString.withDefault(""),
+ action: parseAsString.withDefault(""),
+ executedBy: parseAsString.withDefault(""),
+ interfaceId: parseAsInteger.withDefault(0),
+ filters: getFiltersStateParser().withDefault([]),
+ joinOperator: parseAsStringEnum(["and", "or"]).withDefault("and"),
+ search: parseAsString.withDefault(""),
+});
+
+export type GetIntegrationLogsSchema = Awaited<ReturnType<typeof SearchParamsCache.parse>>; \ No newline at end of file