chatai/chatbot-ui/db/chats.ts

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
}