From b3d55290804f724ca8dfa7fd907d6a7f772d1591 Mon Sep 17 00:00:00 2001 From: Bharath Lakshman Kumar <108531789+BharathxD@users.noreply.github.com> Date: Fri, 23 Aug 2024 14:28:58 +0530 Subject: [PATCH] refactor: improve the download count increment management --- src/lib/db.ts | 60 +++++++++++++++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/src/lib/db.ts b/src/lib/db.ts index 5551339..b71c737 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -1,31 +1,49 @@ "use server"; -import { createClient } from '@supabase/supabase-js' +import { createClient } from "@supabase/supabase-js"; +import { releases } from "./releases"; -const supabaseUrl = 'https://dmthyedfjzcysoekmyns.supabase.co' +const supabaseUrl = "https://dmthyedfjzcysoekmyns.supabase.co"; const supabaseKey = process.env.SUPABASE_KEY as string; const supabase = createClient(supabaseUrl, supabaseKey); -export async function addDownload(platform: string) { - // Check if the download count for the platform exists +const DOWNLOADS_TABLE = "downloads"; +const PLATFORM_COLUMN = "platform"; +const COUNT_COLUMN = "count"; + +export async function incrementDownloadCount(platform: keyof typeof releases) { + try { + //? Check if the download count for the platform exists const { data, error } = await supabase - .from('downloads') - .select('count') - .eq('platform', platform) - // If it doesn't exist, create it - console.log(data) - if (data?.length === 0 || data === null) { - const {data, error} = await supabase - .from('downloads') - .insert([{ platform, count: 1 }]); - if (error) { - console.error(error) - } + .from(DOWNLOADS_TABLE) + .select(COUNT_COLUMN) + .eq(PLATFORM_COLUMN, platform); + + if (error) throw new Error("Error fetching download count"); + + if (!data || data.length === 0) { + //? If it doesn't exist, create it + const { data: insertData, error: insertError } = await supabase + .from(DOWNLOADS_TABLE) + .insert([{ platform, count: 1 }]); + + if (insertError) throw new Error("Error inserting download count"); + + return insertData; } else { - // If it exists, increment the count - await supabase - .from('downloads') - .update({ count: data![0].count + 1 }) - .eq('platform', platform) + //? If it exists, increment the count + const newCount = data![0][COUNT_COLUMN] + 1; + const { data: updateData, error: updateError } = await supabase + .from(DOWNLOADS_TABLE) + .update({ count: newCount }) + .eq(PLATFORM_COLUMN, platform); + + if (updateError) throw new Error("Error updating download count"); + + return updateData; } + } catch (err) { + console.error("Unexpected error in addDownload:", err); + throw err; + } }