import { $fetch } from 'ofetch'
import { createError, defineEventHandler, getHeader, getQuery } from 'h3'
import { useRuntimeConfig } from '#imports'

// Frontend-friendly endpoint:
// GET /api/cms-navigation?parentId=xxxx
// Proxies to CMS modules API. Some deployments expose "/cms-navigation", others "/cms/cms-navigation".
export default defineEventHandler(async (event) => {
  const config = useRuntimeConfig()
  const query = getQuery(event)
  const modulesApiBase =
    config.public.modulesApiBase || config.public.ApiBase || 'https://cms-api.websoft.top/api'

  const tenantId =
    getHeader(event, 'tenantid') ||
    config.public.tenantId ||
    config.public.TenantId ||
    '10584'
  const authorization = getHeader(event, 'authorization')

  const headers = {
    TenantId: String(tenantId),
    ...(authorization ? { Authorization: String(authorization) } : {})
  }

  const upstreamCandidates = ['/cms-navigation', '/cms/cms-navigation']
  let lastError: any

  for (const path of upstreamCandidates) {
    try {
      return await $fetch(path, { baseURL: modulesApiBase, headers, query })
    } catch (error: any) {
      lastError = error
    }
  }

  throw createError({
    statusCode: lastError?.statusCode || lastError?.response?.status || 502,
    statusMessage: lastError?.statusMessage || 'Failed to fetch cms navigation'
  })
})

