Added create page

This commit is contained in:
2025-06-26 19:53:54 +02:00
parent 6629422091
commit b60245d0a7
10 changed files with 729 additions and 12 deletions

View File

@@ -3,7 +3,7 @@
import { z } from "zod"
import { getSession } from "../auth/session"
import { insertUrl } from "../db/urls"
import { urlFormSchema } from "../schema/url"
import { advancedUrlSchema, urlFormSchema } from "../schema/url"
import { deleteUrl as deleteUrlDb } from "../db/urls"
type Response = {
@@ -38,6 +38,33 @@ export async function addUrl(unsafeData: unknown): Promise<Response> {
}
}
export async function createAdvanceUrl(unsafeData: unknown): Promise<Response> {
const { session } = await getSession()
if (!session) {
return {
error: true,
message: "You must be logged in to create a short link."
}
}
const { error, data } = advancedUrlSchema.safeParse(unsafeData)
if (error) {
return {
error: true,
message: "Error parsing form data."
}
}
await insertUrl(data)
return {
error: false,
message: "Short link created successfully!"
}
}
export async function deleteUrl(unsafe: unknown): Promise<Response> {
const { session } = await getSession()

View File

@@ -2,12 +2,15 @@ import { z } from "zod";
export const urlFormSchema = z.object({
url: z.string().url("Please enter a valid URL"),
slug: z
.string()
.min(1, "Slug must be at least 1 character long")
.max(50, "Slug must be 50 characters or less")
.regex(
/^[a-zA-Z0-9-_]+$/,
"Slug can only contain letters, numbers, hyphens, and underscores"
).optional(),
slug: z.string().max(10, "Slug must be 10 characters or less").optional()
})
export const advancedUrlSchema = z.object({
url: z.string().url("Please enter a valid URL"),
slug: z.string().max(10, "Slug must be 10 characters or less").optional(),
title: z.string().max(100, "Title must be 100 characters or less").optional(),
maxVisits: z.number().int().min(1, "Max visits must be at least 1").optional(),
expDate: z.date().optional(),
forwardQueryParams: z.boolean(),
crawlable: z.boolean(),
})