'use server'; import { z } from 'zod'; import { authActionClient } from '@kit/next/safe-action'; import { getLogger } from '@kit/shared/logger'; import { getSupabaseServerClient } from '@kit/supabase/server-client'; import { CreatePageSchema, UpdatePageSchema, SiteSettingsSchema, CreatePostSchema, UpdatePostSchema, NewsletterSubscribeSchema } from '../../schema/site.schema'; import { createSiteBuilderApi } from '../api'; export const createPage = authActionClient .inputSchema(CreatePageSchema) .action(async ({ parsedInput: input, ctx }) => { const client = getSupabaseServerClient(); const api = createSiteBuilderApi(client); const data = await api.createPage(input, ctx.user.id); return { success: true, data }; }); export const saveDraft = authActionClient .inputSchema(UpdatePageSchema) .action(async ({ parsedInput: input, ctx }) => { const client = getSupabaseServerClient(); const api = createSiteBuilderApi(client); const data = await api.updatePage(input.pageId, { ...input, isPublished: false }, ctx.user.id); return { success: true, data }; }); export const publishPage = authActionClient .inputSchema(UpdatePageSchema) .action(async ({ parsedInput: input, ctx }) => { const client = getSupabaseServerClient(); const api = createSiteBuilderApi(client); const data = await api.updatePage(input.pageId, { ...input, isPublished: true }, ctx.user.id); return { success: true, data }; }); export const deletePage = authActionClient .inputSchema(z.object({ pageId: z.string().uuid() })) .action(async ({ parsedInput: input }) => { const client = getSupabaseServerClient(); const api = createSiteBuilderApi(client); await api.deletePage(input.pageId); return { success: true }; }); export const updateSiteSettings = authActionClient .inputSchema(SiteSettingsSchema) .action(async ({ parsedInput: input }) => { const client = getSupabaseServerClient(); const api = createSiteBuilderApi(client); const data = await api.upsertSiteSettings(input.accountId, input); return { success: true, data }; }); export const createPost = authActionClient .inputSchema(CreatePostSchema) .action(async ({ parsedInput: input, ctx }) => { const client = getSupabaseServerClient(); const api = createSiteBuilderApi(client); const data = await api.createPost(input, ctx.user.id); return { success: true, data }; }); export const updatePost = authActionClient .inputSchema(UpdatePostSchema) .action(async ({ parsedInput: input }) => { const client = getSupabaseServerClient(); const api = createSiteBuilderApi(client); const data = await api.updatePost(input.postId, input); return { success: true, data }; }); export const deletePost = authActionClient .inputSchema(z.object({ postId: z.string().uuid() })) .action(async ({ parsedInput: input }) => { const client = getSupabaseServerClient(); const api = createSiteBuilderApi(client); await api.deletePost(input.postId); return { success: true }; });