json / src /services /document.service.ts
xinnni's picture
Upload 146 files
f909d7c verified
raw
history blame
No virus
1.46 kB
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<PostgrestSingleResponse<string>> => {
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<PostgrestSingleResponse<File[]>> => {
return await supabase.rpc("get_document_by_id", { doc_id });
},
getAll: async (): Promise<File[]> => {
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);
},
};