From 0bffdf812fb592ebebad6500debf87e593a61c76 Mon Sep 17 00:00:00 2001 From: Sosokker Date: Sun, 10 Nov 2024 17:34:08 +0700 Subject: [PATCH] feat: add delete user with specific email helper --- tests/helpers/deleteUser.ts | 16 ++++++++++++++++ tests/helpers/getUser.ts | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 tests/helpers/getUser.ts diff --git a/tests/helpers/deleteUser.ts b/tests/helpers/deleteUser.ts index 8f877b6..dce96b7 100644 --- a/tests/helpers/deleteUser.ts +++ b/tests/helpers/deleteUser.ts @@ -1,4 +1,5 @@ import { createClient } from "@supabase/supabase-js"; +import { getUserUidByEmail } from "./getUser"; const supabase_url = process.env.NEXT_PUBLIC_SUPABASE_URL; const supabase_role_key = process.env.SUPABASE_SERVICE_ROLE_KEY; @@ -24,3 +25,18 @@ export async function deleteUser(userId: string) { throw error; } } + +export async function deleteUserByEmail(email: string): Promise { + const { data: uid, error } = await getUserUidByEmail(email); + if (error) { + console.error(`Error delete user with email: ${email}`, error); + return false; + } + if (!uid) { + console.error(`UID is null`); + return false; + } + const data = await deleteUser(uid); + console.log(`Successfully delete user with email: ${email}`); + return true; +} diff --git a/tests/helpers/getUser.ts b/tests/helpers/getUser.ts new file mode 100644 index 0000000..e7211b2 --- /dev/null +++ b/tests/helpers/getUser.ts @@ -0,0 +1,37 @@ +import { createClient, PostgrestError } from "@supabase/supabase-js"; + +const supabase_url = process.env.NEXT_PUBLIC_SUPABASE_URL; +const supabase_role_key = process.env.SUPABASE_SERVICE_ROLE_KEY; + +if (!supabase_url) { + throw "Supabase Url is undefine"; +} + +if (!supabase_role_key) { + throw "Supabase Anon Key is undefine"; +} + +const supabase = createClient(supabase_url, supabase_role_key); + +export async function getUserUidByEmail(email: string): Promise<{ data: string | null; error: PostgrestError | null }> { + try { + const { data, error } = await supabase.rpc("get_user_id_by_email", { + email: email, + }); + if (error) { + console.error(`Error retrive user with email: ${email}`, error); + return { data: null, error: error }; + } + + if (!data) { + console.error(`No user with email: ${email}`, error); + return { data: null, error: error }; + } + + console.log(`Retrieve UID successfully.`); + return { data: data[0].id, error: error }; + } catch (error) { + console.error(`Error retrive user with email: ${email}`, error); + throw error; + } +}