Skip to content

Commit

Permalink
refactor(zod): parse query parameters using Zod
Browse files Browse the repository at this point in the history
  • Loading branch information
IMilja committed Sep 28, 2024
1 parent 1ca7b8b commit 3e6bc77
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 34 deletions.
20 changes: 3 additions & 17 deletions src/server/api/routers/license.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc";
import { z } from "zod";
import { TRPCError } from "@trpc/server";
import licenseService from "~/server/services/license/license.service";

export const licenseRouter = createTRPCRouter({
Expand All @@ -14,26 +13,13 @@ export const licenseRouter = createTRPCRouter({
find: protectedProcedure
.input(
z.object({
page: z.string(),
limit: z.string(),
page: z.coerce.number(),
limit: z.coerce.number().min(1).max(50),
sort: z.string().or(z.array(z.string())).optional(),
filter: z.record(z.string(), z.string()).optional(),
}),
)
.query(async ({ input }) => {
const { page, limit, sort, filter } = input;
if (isNaN(Number(page)) || isNaN(Number(limit)) || Number(limit) > 50) {
throw new TRPCError({
code: "BAD_REQUEST",
message: "Invalid page or limit",
});
}

return licenseService.find({
page: Number(page),
limit: Number(limit),
sort,
filter,
});
return licenseService.find(input);
}),
});
20 changes: 3 additions & 17 deletions src/server/api/routers/user.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc";
import userService from "~/server/services/user/user.service";
import { z } from "zod";
import { TRPCError } from "@trpc/server";

export const userRouter = createTRPCRouter({
findById: protectedProcedure
Expand All @@ -14,26 +13,13 @@ export const userRouter = createTRPCRouter({
find: protectedProcedure
.input(
z.object({
page: z.string(),
limit: z.string(),
page: z.coerce.number(),
limit: z.coerce.number().min(1).max(50),
sort: z.string().or(z.array(z.string())).optional(),
filter: z.record(z.string(), z.string()).optional(),
}),
)
.query(async ({ input }) => {
const { page, limit, sort, filter } = input;
if (isNaN(Number(page)) || isNaN(Number(limit)) || Number(limit) > 50) {
throw new TRPCError({
code: "BAD_REQUEST",
message: "Invalid page or limit",
});
}

return userService.find({
page: Number(page),
limit: Number(limit),
sort,
filter,
});
return userService.find(input);
}),
});

0 comments on commit 3e6bc77

Please sign in to comment.