ยฉ 2026 Hedgehog Software, LLC
const addPost = action(async (formData: FormData) => { "use server"; console.log("formData: ", formData.get("title")); // await new Promise((resolve, reject) => setTimeout(resolve, 1000)); const data = createPost.safeParse(formDataToObject(formData)); if (data.success === false) { console.log("error: ", data.error.errors); return redirect("/posts"); } console.log("data: ", data); const user = await getUser(); console.log("user: ", user, { ...data.data, authorId: user.id, }); try { const post = await db.post.create({ data: { ...data.data, authorId: user.id, }, }); console.log("post: ", post); } catch (error) { console.log("error: ", error); } revalidate(getPosts.key); throw reload(); }, "addPost");
export const route = { load: () => getPosts(), } satisfies RouteDefinition; export default function Posts() { const posts = createAsync(() => getPosts()); return ( <> <AddPostDialog /> <pre>{JSON.stringify(posts()?.[0], null, 2)}</pre> </> ); } export const getPosts = cache(async () => { "use server"; console.count("getPosts"); const user = await getUser(); const posts = await db.post.findMany({ orderBy: { createdAt: "desc" }, include: { author: true }, }); console.log("last post: ", posts[0].title); return posts; }, "posts");