import { supabase } from "@/lib/supabase/browser-client" import { TablesInsert, TablesUpdate } from "@/supabase/types" export const getPresetById = async (presetId: string) => { const { data: preset, error } = await supabase .from("presets") .select("*") .eq("id", presetId) .single() if (!preset) { throw new Error(error.message) } return preset } export const getPresetWorkspacesByWorkspaceId = async (workspaceId: string) => { const { data: workspace, error } = await supabase .from("workspaces") .select( ` id, name, presets (*) ` ) .eq("id", workspaceId) .single() if (!workspace) { throw new Error(error.message) } return workspace } export const getPresetWorkspacesByPresetId = async (presetId: string) => { const { data: preset, error } = await supabase .from("presets") .select( ` id, name, workspaces (*) ` ) .eq("id", presetId) .single() if (!preset) { throw new Error(error.message) } return preset } export const createPreset = async ( preset: TablesInsert<"presets">, workspace_id: string ) => { const { data: createdPreset, error } = await supabase .from("presets") .insert([preset]) .select("*") .single() if (error) { throw new Error(error.message) } await createPresetWorkspace({ user_id: preset.user_id, preset_id: createdPreset.id, workspace_id: workspace_id }) return createdPreset } export const createPresets = async ( presets: TablesInsert<"presets">[], workspace_id: string ) => { const { data: createdPresets, error } = await supabase .from("presets") .insert(presets) .select("*") if (error) { throw new Error(error.message) } await createPresetWorkspaces( createdPresets.map(preset => ({ user_id: preset.user_id, preset_id: preset.id, workspace_id })) ) return createdPresets } export const createPresetWorkspace = async (item: { user_id: string preset_id: string workspace_id: string }) => { const { data: createdPresetWorkspace, error } = await supabase .from("preset_workspaces") .insert([item]) .select("*") .single() if (error) { throw new Error(error.message) } return createdPresetWorkspace } export const createPresetWorkspaces = async ( items: { user_id: string; preset_id: string; workspace_id: string }[] ) => { const { data: createdPresetWorkspaces, error } = await supabase .from("preset_workspaces") .insert(items) .select("*") if (error) throw new Error(error.message) return createdPresetWorkspaces } export const updatePreset = async ( presetId: string, preset: TablesUpdate<"presets"> ) => { const { data: updatedPreset, error } = await supabase .from("presets") .update(preset) .eq("id", presetId) .select("*") .single() if (error) { throw new Error(error.message) } return updatedPreset } export const deletePreset = async (presetId: string) => { const { error } = await supabase.from("presets").delete().eq("id", presetId) if (error) { throw new Error(error.message) } return true } export const deletePresetWorkspace = async ( presetId: string, workspaceId: string ) => { const { error } = await supabase .from("preset_workspaces") .delete() .eq("preset_id", presetId) .eq("workspace_id", workspaceId) if (error) throw new Error(error.message) return true }