AIvoices/frontend-nextjs/db/users.ts

95 lines
2.3 KiB
TypeScript

import { type SupabaseClient, type User } from "@supabase/supabase-js";
export const createUser = async (
supabase: SupabaseClient,
user: User,
userProps: Partial<IUser>,
) => {
// console.log("creating user", user, userProps);
// return ;
const { error } = await supabase.from("users").insert([
{
user_id: user.id,
email: user.email,
supervisor_name: user.user_metadata?.name ?? "",
supervisee_name: "",
supervisee_age: 14,
supervisee_persona: "",
personality_id: userProps.personality_id, // selecting default personality
session_time: 0,
avatar_url: user.user_metadata?.avatar_url ??
`/user_avatar/user_avatar_${
Math.floor(Math.random() * 10)
}.png`,
} as IUser,
]);
if (error) {
// console.log("error", error);
}
};
export const getSimpleUserById = async (
supabase: SupabaseClient,
id: string,
) => {
const { data, error } = await supabase
.from("users")
.select("*")
.eq("user_id", id)
.single();
if (error) {
console.log("error in getSimpleUserById", error);
}
return data as IUser | undefined;
};
export const getUserById = async (supabase: SupabaseClient, id: string) => {
const { data, error } = await supabase
.from("users")
.select(
`*, personality:personality_id(*), device:devices!users_device_id_fkey(device_id, volume)`,
)
.eq("user_id", id)
.single();
if (error) {
console.log("error in getUserById", error);
}
return data as IUser | undefined;
};
export const doesUserExist = async (
supabase: SupabaseClient,
authUser: User,
) => {
const { data: user, error } = await supabase
.from("users")
.select("*")
.eq("user_id", authUser.id)
.single();
if (error) {
console.log("error in doesUserExist", error);
}
return !!user;
};
export const updateUser = async (
supabase: SupabaseClient,
user: Partial<IUser>,
userId: string,
) => {
const { error } = await supabase
.from("users")
.update(user)
.eq("user_id", userId);
if (error) {
// console.log("error", error);
}
};