178 lines
3.4 KiB
TypeScript
178 lines
3.4 KiB
TypeScript
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
|
|
}
|