UNPKG

nitropage

Version:

A free and open source, extensible visual page builder based on SolidStart.

52 lines (45 loc) 1.49 kB
import { getUser } from "#lib/auth/server"; import { deletePageRevision as deletePageRevision_ } from "#lib/server/page"; import { useDatabase } from "#lib/server/prisma"; import { getRevision as getRevision_ } from "#lib/server/revision"; import { action, createAsync, query, reload, useParams } from "@solidjs/router"; export const getLatestRevision = query( async ({ pageId }: { pageId: string }) => { "use server"; await getUser({ assert: {} }); const db = useDatabase(); const revision = await db.nitroPageRevision.findFirst({ select: { id: true }, where: { page: { id: pageId }, }, orderBy: { // TODO: Replace with createdAt savedAt: "desc", }, }); return revision?.id; }, "np-latestPageRevision", ); export const useRouterLatestRevision = (opts = { deferStream: true }) => { const params = useParams(); return createAsync(() => getLatestRevision({ pageId: params.page! }), opts); }; export const deletePageRevision = action( async (id: string, skipReload?: boolean) => { "use server"; await getUser({ assert: { csrf: true } }); await deletePageRevision_(id); if (skipReload) { return reload({ revalidate: "$$$nope" }); } }, "np-deletePageRevision", ); export const getRevision = query(async ({ id }: { id: string }) => { "use server"; if (id == null) return; await getUser({ assert: {} }); return await getRevision_(id, true); }, "np-pageRevision");