// Script to create the admin user for Tikkets
// Run this script once to set up the admin account
// Email: admin@tikkets.com | Password: 12345678

import { createClient } from "@supabase/supabase-js"

const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL || process.env.SUPABASE_URL
const supabaseServiceKey = process.env.SUPABASE_SERVICE_ROLE_KEY

if (!supabaseUrl || !supabaseServiceKey) {
  console.error("Missing Supabase environment variables")
  process.exit(1)
}

const supabase = createClient(supabaseUrl, supabaseServiceKey, {
  auth: {
    autoRefreshToken: false,
    persistSession: false,
  },
})

async function createAdminUser() {
  const email = "admin@tikkets.com"
  const password = "12345678"

  console.log("Creating admin user...")

  // Create the user in Supabase Auth
  const { data: authData, error: authError } = await supabase.auth.admin.createUser({
    email,
    password,
    email_confirm: true, // Auto-confirm email
  })

  if (authError) {
    // Check if user already exists
    if (authError.message.includes("already been registered")) {
      console.log("User already exists, updating role to admin...")

      // Get user by email
      const { data: existingUser } = await supabase.from("users").select("id").eq("email", email).single()

      if (existingUser) {
        const { error: updateError } = await supabase.from("users").update({ role: "admin" }).eq("email", email)

        if (updateError) {
          console.error("Failed to update user role:", updateError)
          process.exit(1)
        }
        console.log("Admin role assigned successfully!")
        return
      }
    }
    console.error("Failed to create user:", authError)
    process.exit(1)
  }

  console.log("Auth user created with ID:", authData.user.id)

  // Create or update the user in the users table with admin role
  const { error: dbError } = await supabase.from("users").upsert({
    id: authData.user.id,
    email: email,
    full_name: "Tikkets Admin",
    role: "admin",
    created_at: new Date().toISOString(),
    updated_at: new Date().toISOString(),
  })

  if (dbError) {
    console.error("Failed to create user record:", dbError)
    process.exit(1)
  }

  console.log("Admin user created successfully!")
  console.log("Email:", email)
  console.log("Password:", password)
  console.log("Role: admin")
}

createAdminUser()
