93 lines
1.9 KiB
TypeScript
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
|
|
}
|