import { jsonError } from "../../common.js"; export async function onRequestPost(context: RequestContext) { const { destination, path } = context.data.body; if (typeof path !== "string" || path.length > 256) return jsonError("Invalid path", 400); const result = await context.env.D1.prepare( "SELECT path FROM short_links WHERE path = ?;", ) .bind(path) .first(); if (result) return jsonError( "Short link with that path already exists, please choose a different one.", 400, ); const url = new URL(destination); if (!["http:", "https:"].includes(url.protocol)) return jsonError("Invalid URL", 400); await context.env.D1.prepare( "INSERT INTO short_links (created_at, destination, path, user) VALUES (?, ?, ?, ?);", ) .bind(Date.now(), destination, path, context.data.current_user.id) .run(); return new Response(null, { status: 204, }); }