From 1fb17df71e5d9ebfc5b1bec05a3229d7ca0a295f Mon Sep 17 00:00:00 2001 From: TZGyn Date: Fri, 17 Nov 2023 19:49:45 +0800 Subject: [PATCH] added insert shortener api --- src/routes/(app)/links/+page.svelte | 58 ++++++++++++++++++++++++++- src/routes/api/shortener/+server.ts | 61 +++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 src/routes/api/shortener/+server.ts diff --git a/src/routes/(app)/links/+page.svelte b/src/routes/(app)/links/+page.svelte index 8695809..151fd38 100644 --- a/src/routes/(app)/links/+page.svelte +++ b/src/routes/(app)/links/+page.svelte @@ -1,12 +1,66 @@ -
Links
+
+
Links
+ + + + Add Shortner + + + + Add Shortener + + Create A New Shortner Here. Click Add To Save. + + +
+
+ + +
+
+ + + +
+
+
{#if data.shorteners.length > 0} diff --git a/src/routes/api/shortener/+server.ts b/src/routes/api/shortener/+server.ts new file mode 100644 index 0000000..04bbce1 --- /dev/null +++ b/src/routes/api/shortener/+server.ts @@ -0,0 +1,61 @@ +import { z } from 'zod' +import type { RequestHandler } from './$types' +import { db } from '$lib/db' +import { getUserFromSessionToken } from '$lib/server/auth' +import { shortener } from '$lib/db/schema' +import { nanoid } from 'nanoid' + +export const GET: RequestHandler = async () => { + return new Response() +} + +const shortenerInsertSchema = z.object({ + link: z.string().url(), +}) + +export const POST: RequestHandler = async (event) => { + const body = await event.request.json() + + const shortenerInsert = shortenerInsertSchema.safeParse(body) + + if (!shortenerInsert.success) { + return new Response( + JSON.stringify({ + success: false, + message: 'Invalid Link', + }), + ) + } + + const token = event.cookies.get('token') + + if (!token) { + return new Response( + JSON.stringify({ + success: false, + message: 'Invalid User', + }), + ) + } + + const user = await getUserFromSessionToken(token) + + if (!user) { + return new Response( + JSON.stringify({ + success: false, + message: 'Invalid User', + }), + ) + } + + const code = nanoid(8) + + await db.insert(shortener).values({ + link: shortenerInsert.data.link, + userId: user, + code: code, + }) + + return new Response(JSON.stringify(body)) +}