30 lines
858 B
TypeScript
30 lines
858 B
TypeScript
import "server-only";
|
|
import type { User } from "@supabase/supabase-js";
|
|
import { admin, required } from "./supabase";
|
|
import { displayNameSchema } from "@/shared/account";
|
|
|
|
export async function accountProfile(account: User) {
|
|
const name = displayNameSchema.safeParse(account.user_metadata?.display_name);
|
|
required(
|
|
await admin()
|
|
.from("profiles")
|
|
.upsert(
|
|
{
|
|
id: account.id,
|
|
display_name: name.success ? name.data : "Explorer",
|
|
},
|
|
{ onConflict: "id", ignoreDuplicates: true },
|
|
)
|
|
.select("id"),
|
|
);
|
|
return required(
|
|
await admin()
|
|
.from("profiles")
|
|
.select(
|
|
"id,display_name,role,name_glow,glow_color,bug_finder,custom_prefix,custom_prefix_icon,account_status,account_reason,account_changed_at",
|
|
)
|
|
.eq("id", account.id)
|
|
.single(),
|
|
);
|
|
}
|