osanseviero's picture
Upload 54 files
63c7991 verified
import { notFound } from "next/navigation";
import CodeViewer from "@/components/code-viewer";
import client from "@/lib/prisma";
import type { Metadata } from "next";
import { cache } from "react";
export async function generateMetadata({
params,
}: {
params: { id: string };
}): Promise<Metadata> {
const generatedApp = await getGeneratedAppByID(params.id);
let prompt = generatedApp?.prompt;
if (typeof prompt !== "string") {
notFound();
}
let searchParams = new URLSearchParams();
searchParams.set("prompt", prompt);
return {
title: "An app generated on LlamaCoder.io",
description: `Prompt: ${generatedApp?.prompt}`,
openGraph: {
images: [`/api/og?${searchParams}`],
},
};
}
export default async function Page({ params }: { params: { id: string } }) {
// if process.env.DATABASE_URL is not set, throw an error
if (typeof params.id !== "string") {
notFound();
}
const generatedApp = await getGeneratedAppByID(params.id);
if (!generatedApp) {
return <div>App not found</div>;
}
return <CodeViewer code={generatedApp.code} />;
}
const getGeneratedAppByID = cache(async (id: string) => {
return client.generatedApp.findUnique({
where: {
id,
},
});
});