Implementr form
This commit is contained in:
37
src/lib/actions/url.ts
Normal file
37
src/lib/actions/url.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
"use server"
|
||||
|
||||
import { getSession } from "../auth/session"
|
||||
import { insertUrl } from "../db/urls"
|
||||
import { urlFormSchema } from "../schema/url"
|
||||
|
||||
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!"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user