82 lines
1.6 KiB
TypeScript
82 lines
1.6 KiB
TypeScript
import { supabase } from "@/lib/supabase/browser-client"
|
|
import { TablesInsert, TablesUpdate } from "@/supabase/types"
|
|
|
|
export const getChatById = async (chatId: string) => {
|
|
const { data: chat } = await supabase
|
|
.from("chats")
|
|
.select("*")
|
|
.eq("id", chatId)
|
|
.maybeSingle()
|
|
|
|
return chat
|
|
}
|
|
|
|
export const getChatsByWorkspaceId = async (workspaceId: string) => {
|
|
const { data: chats, error } = await supabase
|
|
.from("chats")
|
|
.select("*")
|
|
.eq("workspace_id", workspaceId)
|
|
.order("created_at", { ascending: false })
|
|
|
|
if (!chats) {
|
|
throw new Error(error.message)
|
|
}
|
|
|
|
return chats
|
|
}
|
|
|
|
export const createChat = async (chat: TablesInsert<"chats">) => {
|
|
const { data: createdChat, error } = await supabase
|
|
.from("chats")
|
|
.insert([chat])
|
|
.select("*")
|
|
.single()
|
|
|
|
if (error) {
|
|
throw new Error(error.message)
|
|
}
|
|
|
|
return createdChat
|
|
}
|
|
|
|
export const createChats = async (chats: TablesInsert<"chats">[]) => {
|
|
const { data: createdChats, error } = await supabase
|
|
.from("chats")
|
|
.insert(chats)
|
|
.select("*")
|
|
|
|
if (error) {
|
|
throw new Error(error.message)
|
|
}
|
|
|
|
return createdChats
|
|
}
|
|
|
|
export const updateChat = async (
|
|
chatId: string,
|
|
chat: TablesUpdate<"chats">
|
|
) => {
|
|
const { data: updatedChat, error } = await supabase
|
|
.from("chats")
|
|
.update(chat)
|
|
.eq("id", chatId)
|
|
.select("*")
|
|
.single()
|
|
|
|
if (error) {
|
|
throw new Error(error.message)
|
|
}
|
|
|
|
return updatedChat
|
|
}
|
|
|
|
export const deleteChat = async (chatId: string) => {
|
|
const { error } = await supabase.from("chats").delete().eq("id", chatId)
|
|
|
|
if (error) {
|
|
throw new Error(error.message)
|
|
}
|
|
|
|
return true
|
|
}
|