198 lines
5.5 KiB
TypeScript
198 lines
5.5 KiB
TypeScript
import { SupabaseClient } from "@supabase/supabase-js";
|
|
// import { cookies } from "next/headers";
|
|
// import { createClient } from "@/utils/supabase/server";
|
|
import { Reference } from "@/utils/global";
|
|
|
|
//获取用户id
|
|
export async function getUser(supabase: SupabaseClient) {
|
|
const { data, error } = await supabase.auth.getSession();
|
|
if (data.session) {
|
|
const user = data.session.user;
|
|
if (user) {
|
|
// console.log("User UUID in getUser:", user.id);
|
|
return user;
|
|
} else {
|
|
console.log("No user in getUser");
|
|
return null;
|
|
}
|
|
} else {
|
|
console.log("No session in getUser");
|
|
return null;
|
|
}
|
|
}
|
|
|
|
//将论文保存到服务器
|
|
export async function submitPaper(
|
|
supabase: SupabaseClient,
|
|
editorContent: string,
|
|
references: Reference[],
|
|
paperNumber: string
|
|
) {
|
|
const user = await getUser(supabase);
|
|
if (user) {
|
|
try {
|
|
// console.log(user.id, editorContent, references);
|
|
const response = await fetch("/api/supa/data", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({
|
|
userId: user.id,
|
|
paperContent: editorContent,
|
|
paperReference: references,
|
|
paperNumber,
|
|
}),
|
|
});
|
|
const data = await response.json();
|
|
// 处理响应数据
|
|
console.log(
|
|
"Response data in submitPaper:",
|
|
data,
|
|
`此次更新的是第${paperNumber}篇论文`
|
|
);
|
|
return data;
|
|
} catch (error) {
|
|
// 错误处理
|
|
console.error("Error submitting paper in submitPaper:", error);
|
|
}
|
|
} else {
|
|
console.log(
|
|
"No user found. User must be logged in to submit a paper. in submitPaper"
|
|
);
|
|
}
|
|
}
|
|
//添加某指定用户id下的论文
|
|
|
|
//删除指定用户下paperNumber的论文
|
|
export async function deletePaper(
|
|
supabase: SupabaseClient,
|
|
paperNumber: string
|
|
) {
|
|
const user = await getUser(supabase);
|
|
if (user) {
|
|
try {
|
|
const response = await fetch("/api/supa/data/delete", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({
|
|
userId: user.id,
|
|
paperNumber,
|
|
}),
|
|
});
|
|
const data = await response.json();
|
|
// 处理响应数据
|
|
console.log("Response data in deletePaper:", data);
|
|
return data;
|
|
} catch (error) {
|
|
// 错误处理
|
|
console.error("Error deleting paper in deletePaper:", error);
|
|
}
|
|
} else {
|
|
console.log(
|
|
"No user found. User must be logged in to delete a paper. in deletePaper"
|
|
);
|
|
}
|
|
}
|
|
|
|
// 获取用户论文的序号
|
|
// export async function getUserPaperNumbers(
|
|
// userId: string,
|
|
// supabase: SupabaseClient
|
|
// ) {
|
|
// const { data, error } = await supabase
|
|
// .from("user_paper") // 指定表名
|
|
// .select("paper_number") // 仅选择paper_number列
|
|
// .eq("user_id", userId); // 筛选特定user_id的记录
|
|
|
|
// if (error) {
|
|
// console.error("查询出错", error);
|
|
// return null;
|
|
// }
|
|
|
|
// // 返回查询结果,即所有论文的序号
|
|
// return data.map((paper) => paper.paper_number);
|
|
// }
|
|
|
|
export async function getUserPaperNumbers(userId: string) {
|
|
try {
|
|
const response = await fetch("/api/supa/paper-numbers", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({ userId }),
|
|
});
|
|
const data = await response.json();
|
|
if (response.ok) {
|
|
// 返回查询结果,即所有论文的序号
|
|
console.log("获取到的用户论文数量:", data);
|
|
return data.map((paper: any) => paper.paper_number);
|
|
} else {
|
|
console.error("获取用户论文数量时发生错误:", data);
|
|
return null;
|
|
}
|
|
} catch (error) {
|
|
console.error("请求出错", error);
|
|
return null;
|
|
}
|
|
}
|
|
// 获取用户指定序号论文的内容
|
|
// export async function getUserPaper(
|
|
// userId: string,
|
|
// paperNumber: string,
|
|
// supabase: SupabaseClient
|
|
// ) {
|
|
// const { data, error } = await supabase
|
|
// .from("user_paper") // 指定表名
|
|
// .select("paper_content,paper_reference") // 仅选择paper_content列
|
|
// .eq("user_id", userId) // 筛选特定user_id的记录
|
|
// .eq("paper_number", paperNumber)
|
|
// .single(); // 筛选特定paper_number的记录
|
|
|
|
// if (error) {
|
|
// console.error("查询出错", error);
|
|
// return null;
|
|
// }
|
|
|
|
// // 返回查询结果,即指定论文的内容
|
|
// return data;
|
|
// }
|
|
|
|
export async function getUserPaper(userId: string, paperNumber: string) {
|
|
try {
|
|
const response = await fetch("/api/supa/user-papers", {
|
|
method: "POST",
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
body: JSON.stringify({ userId, paperNumber }),
|
|
});
|
|
const data = await response.json();
|
|
if (response.ok) {
|
|
console.log("获取到的用户论文数据:", data);
|
|
return data; // 返回查询结果
|
|
} else {
|
|
console.error("获取用户论文时发生错误:", data);
|
|
return null;
|
|
}
|
|
} catch (error) {
|
|
console.error("请求出错", error);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
//Super base的表
|
|
// create table
|
|
// public."user_paper" (
|
|
// id bigint generated by default as identity,
|
|
// created_at timestamp with time zone not null default now(),
|
|
// user_id UUID REFERENCES auth.users NOT NULL,
|
|
// paper_content character varying[] null,
|
|
// paper_reference character varying[] null,
|
|
// constraint userPaper_pkey primary key (id)
|
|
// ) tablespace pg_default;
|
|
//获取和用户ID相关联的论文
|