import { createClient } from '@supabase/supabase-js'
import dotenv from 'dotenv'
dotenv.config()
// Initialize Supabase client
if (!process.env.SUPABASE_URL || !process.env.SUPABASE_ANON_KEY) {
throw new Error('Missing Supabase environment variables')
}
// Initialize Supabase client
const supabase = createClient(
process.env.SUPABASE_URL,
process.env.SUPABASE_ANON_KEY
)
/**
* Save an answer to the Supabase database.
* @param {string} teamName - Name of the team.
* @param {number} questionNumber - Question number.
* @param {string} answer - The answer.
* @returns {Promise<{ success: boolean, error?: string }>}
*/
export async function saveAnswer(teamName, questionNumber, answer) {
try {
// Check for duplicate submissions
const { data: existingEntry, error: fetchError } = await supabase
.from('quiz_answers')
.select('*')
.eq('team_name', teamName)
.eq('question_number', questionNumber)
.single()
if (fetchError && fetchError.code !== 'PGRST116') {
return {
success: false,
error: 'Error checking for duplicate submission.',
}
}
if (existingEntry) {
return { success: false, error: 'Duplicate submission detected.' }
}
// Insert new entry
const { error: insertError } = await supabase.from('quiz_answers').insert({
team_name: teamName,
question_number: questionNumber,
answer,
created_at: new Date().toISOString(),
})
if (insertError) {
console.error('Error saving the answer:', insertError)
return { success: false, error: 'Error saving the answer.' }
}
return { success: true }
} catch (error) {
console.error('Error in saveAnswer:', error)
return { success: false, error: 'Unexpected error occurred.' }
}
}
/**
* Delete all answers from the quiz_answers table.
* @returns {Promise<{ success: boolean, error?: string }>}.
*/
export async function deleteAllAnswers() {
try {
// Delete all entries by matching rows with id >= 0
const { error: deleteError } = await supabase
.from('quiz_answers')
.delete()
.gte('id', -1)
if (deleteError) {
console.error('Error deleting answers:', deleteError)
return { success: false, error: 'Error deleting answers.' }
}
return { success: true }
} catch (error) {
console.error('Error in deleteAllAnswers:', error)
return { success: false, error: 'Unexpected error occurred.' }
}
}