chatai/chatbot-ui/db/workspaces.ts

93 lines
1.9 KiB
TypeScript

import { supabase } from "@/lib/supabase/browser-client"
import { TablesInsert, TablesUpdate } from "@/supabase/types"
export const getHomeWorkspaceByUserId = async (userId: string) => {
const { data: homeWorkspace, error } = await supabase
.from("workspaces")
.select("*")
.eq("user_id", userId)
.eq("is_home", true)
.single()
if (!homeWorkspace) {
throw new Error(error.message)
}
return homeWorkspace.id
}
export const getWorkspaceById = async (workspaceId: string) => {
const { data: workspace, error } = await supabase
.from("workspaces")
.select("*")
.eq("id", workspaceId)
.single()
if (!workspace) {
throw new Error(error.message)
}
return workspace
}
export const getWorkspacesByUserId = async (userId: string) => {
const { data: workspaces, error } = await supabase
.from("workspaces")
.select("*")
.eq("user_id", userId)
.order("created_at", { ascending: false })
if (!workspaces) {
throw new Error(error.message)
}
return workspaces
}
export const createWorkspace = async (
workspace: TablesInsert<"workspaces">
) => {
const { data: createdWorkspace, error } = await supabase
.from("workspaces")
.insert([workspace])
.select("*")
.single()
if (error) {
throw new Error(error.message)
}
return createdWorkspace
}
export const updateWorkspace = async (
workspaceId: string,
workspace: TablesUpdate<"workspaces">
) => {
const { data: updatedWorkspace, error } = await supabase
.from("workspaces")
.update(workspace)
.eq("id", workspaceId)
.select("*")
.single()
if (error) {
throw new Error(error.message)
}
return updatedWorkspace
}
export const deleteWorkspace = async (workspaceId: string) => {
const { error } = await supabase
.from("workspaces")
.delete()
.eq("id", workspaceId)
if (error) {
throw new Error(error.message)
}
return true
}