Files
linker/src/lib/actions/url.ts
2025-06-26 18:18:41 +02:00

66 lines
1.4 KiB
TypeScript

"use server"
import { z } from "zod"
import { getSession } from "../auth/session"
import { insertUrl } from "../db/urls"
import { urlFormSchema } from "../schema/url"
import { deleteUrl as deleteUrlDb } from "../db/urls"
type Response = {
error: boolean
message: string
}
export async function addUrl(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 } = urlFormSchema.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()
if (!session) {
return {
error: true,
message: "You must be logged in to create a short link."
}
}
const { error, data: id } = z.string().safeParse(unsafe)
if (error) {
return {
error: true,
message: "Error parsing form data."
}
}
await deleteUrlDb(id)
return {
error: false,
message: "Short link deleted successfully!"
}
}