import { PostgrestSingleResponse } from "@supabase/supabase-js"; import toast from "react-hot-toast"; import { FileFormat } from "src/enums/file.enum"; import { supabase } from "src/lib/api/supabase"; import { File } from "src/store/useFile"; import useUser from "src/store/useUser"; type CloudSave = { id?: string; contents: string; format: FileFormat; }; export const documentSvc = { upsert: async (args: CloudSave): Promise> => { const { id: p_id = "", contents: p_content, format: p_format = FileFormat.JSON } = args; return await supabase.rpc("upsert_document", { p_content, p_format, p_id, }); }, getById: async (doc_id: string): Promise> => { return await supabase.rpc("get_document_by_id", { doc_id }); }, getAll: async (): Promise => { const userEmail = useUser.getState().user?.email; if (!userEmail) return []; const { data, error } = await supabase .from("document") .select() .eq("owner_email", userEmail) .order("created_at", { ascending: false }); if (error) { toast.error(error.message); return []; } return data; }, update: async (id: string, data: object) => { return await supabase.from("document").update(data).eq("id", id).select("private"); }, delete: async (id: string) => { await supabase.from("document").delete().eq("id", id); }, };