From 28f053e91b3ea15a7e04b5b0a0e70b79a2366352 Mon Sep 17 00:00:00 2001 From: Thanu Poptiphueng Date: Fri, 19 Apr 2024 18:18:20 +0700 Subject: [PATCH] added info route --- src/app.ts | 2 ++ src/infoRoute.ts | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/infoRoute.ts diff --git a/src/app.ts b/src/app.ts index 0d0b19f..f98611c 100644 --- a/src/app.ts +++ b/src/app.ts @@ -3,9 +3,11 @@ import { createHTTPServer } from "@trpc/server/adapters/standalone"; import { userRoute } from "./userRoute"; import { runPlayground } from "./playgroud"; import cors from "cors"; +import { infoRoute } from "./infoRoute"; export const appRouter = router({ user: userRoute, + info: infoRoute, }); export type AppRouter = typeof appRouter; diff --git a/src/infoRoute.ts b/src/infoRoute.ts new file mode 100644 index 0000000..67f70a9 --- /dev/null +++ b/src/infoRoute.ts @@ -0,0 +1,30 @@ +import { router, publicProcedure } from "./trpc"; +import { db } from "./db"; +import { z } from "zod"; + +export const infoRoute = router({ + getAllProvinces: publicProcedure.query(getProvinces), + getAllGroups: publicProcedure.query(getGroups), + getAllZones: publicProcedure + .input(z.object({ provice_id: z.number().optional() })) + .query(async ({ input }) => await getZone(input.provice_id)), +}); + +async function getProvinces() { + return await db.query.province.findMany(); +} + +async function getZone(province?: number) { + return await db.query.zone.findMany({ + where: (zone, { and, eq }) => { + if (province === undefined) { + return and(); + } + return eq(zone.province, province); + }, + }); +} + +async function getGroups() { + return await db.query.group.findMany(); +}