import { createClient } from '@/lib/supabase/server'
import { ok, badRequest, unauthorized, serverError } from '@/lib/api'

export async function GET(request: Request) {
  const supabase = await createClient()
  const { data: claimsData } = await supabase.auth.getClaims()
  if (!claimsData?.claims) return unauthorized()

  const { searchParams } = new URL(request.url)
  const type = searchParams.get('type')
  const activeOnly = searchParams.get('active_only') === 'true'

  if (!type) return badRequest('type parameter is required')

  let query = supabase
    .from('master_data_values')
    .select('*, master_data_types!inner(code)')
    .eq('master_data_types.code', type)
    .order('sort_order', { ascending: true })

  if (activeOnly) {
    query = query.eq('is_active', true)
  }

  const { data, error } = await query
  if (error) return serverError(error.message)

  return ok(data)
}
