From 7de2344824f17441327fab5acbc64b20b3908d9b Mon Sep 17 00:00:00 2001 From: TZGyn Date: Tue, 21 Nov 2023 06:36:39 +0800 Subject: [PATCH] added get shortener by id route --- .../routes/(app)/links/[id]/+page.server.ts | 20 +++++++++++++++ .../src/routes/(app)/links/[id]/+page.svelte | 7 ++++++ .../src/routes/api/shortener/[id]/+server.ts | 25 +++++++++++++++++-- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 frontend/src/routes/(app)/links/[id]/+page.server.ts create mode 100644 frontend/src/routes/(app)/links/[id]/+page.svelte diff --git a/frontend/src/routes/(app)/links/[id]/+page.server.ts b/frontend/src/routes/(app)/links/[id]/+page.server.ts new file mode 100644 index 0000000..50cd2ee --- /dev/null +++ b/frontend/src/routes/(app)/links/[id]/+page.server.ts @@ -0,0 +1,20 @@ +import { db } from '$lib/db' +import type { PageServerLoad } from './$types' + +export const load = (async (event) => { + const user = event.locals.userObject + const shortenerId = event.params.id + + const shortener = await db.query.shortener.findFirst({ + where: (shortener, { eq, and }) => + and( + eq(shortener.code, shortenerId), + eq(shortener.userId, user.id), + ), + with: { + visitor: true, + }, + }) + + return { shortener } +}) satisfies PageServerLoad diff --git a/frontend/src/routes/(app)/links/[id]/+page.svelte b/frontend/src/routes/(app)/links/[id]/+page.svelte new file mode 100644 index 0000000..90cf9bd --- /dev/null +++ b/frontend/src/routes/(app)/links/[id]/+page.svelte @@ -0,0 +1,7 @@ + + +{JSON.stringify(data.shortener)} diff --git a/frontend/src/routes/api/shortener/[id]/+server.ts b/frontend/src/routes/api/shortener/[id]/+server.ts index 872aad1..51bc6fc 100644 --- a/frontend/src/routes/api/shortener/[id]/+server.ts +++ b/frontend/src/routes/api/shortener/[id]/+server.ts @@ -4,8 +4,29 @@ import { and, eq } from 'drizzle-orm' import type { RequestHandler } from './$types' import { z } from 'zod' -export const GET: RequestHandler = async () => { - return new Response() +export const GET: RequestHandler = async (event) => { + const user = event.locals.userObject + const shortenerId = event.params.id + + const shortener = await db.query.shortener.findFirst({ + where: (shortener, { eq, and }) => + and( + eq(shortener.code, shortenerId), + eq(shortener.userId, user.id), + ), + }) + + if (!shortener) { + return generateResponse({ + success: false, + message: 'Invalid Shortener', + }) + } + + return generateResponse({ + success: true, + data: shortener, + }) } const updateShortenerSchema = z.object({