import { getPageTypeMeta } from '@/shared/api/common'

/**
 * 检查 pagetype 是否为单页模式
 * @param entity pagetype 名称
 * @returns Promise<boolean> 是否为单页模式
 */
export async function isSinglePageType(entity: string): Promise<boolean> {
  try {
    const result = await getPageTypeMeta(entity)
    
    if (result.success && result.data) {
      // 检查 issingle 字段，如果为 1 或 true 则认为是单页模式
      return Boolean(result.data.issingle === 1 || result.data.issingle === true)
    }
    return false
  } catch (error) {
    console.error('Failed to check single page type:', error)
    return false
  }
}

/**
 * 根据 pagetype 是否为单页模式返回对应的路由名称
 * @param entity pagetype 名称
 * @returns Promise<string> 路由名称
 */
export async function getPageTypeRouteName(entity: string): Promise<string> {
  const isSingle = await isSinglePageType(entity)
  return isSingle ? 'SinglePageDetail' : 'PageTypeList'
}

import axios from 'axios'

/**
 * 获取单页 pagetype 数据
 * @param pagetype pagetype 名称
 * @returns Promise<{ success: boolean; data?: any; message?: string }> 返回结果
 */
export async function getSinglePageData(pagetype: string): Promise<{ success: boolean; data?: any; message?: string }> {
  try {
    const url = `/api/data/${encodeURIComponent(pagetype)}/${encodeURIComponent(pagetype)}`
    const res = await axios.get(url)
    
    if (res.data?.data) {
      return {
        success: true,
        data: res.data.data
      }
    } else {
      return {
        success: true,
        data: {}
      }
    }
  } catch (error: any) {
    console.error('Failed to get single page data:', error)
    return {
      success: false,
      message: error.response?.data?.detail || error.message || '获取单页数据失败'
    }
  }
}

/**
 * 保存单页 pagetype 数据
 * @param pagetype pagetype 名称
 * @param data 要保存的数据
 * @returns Promise<{ success: boolean; message?: string }> 返回结果
 */
export async function saveSinglePageData(pagetype: string, data: any): Promise<{ success: boolean; message?: string }> {
  try {
    const url = `/api/data/${encodeURIComponent(pagetype)}/${encodeURIComponent(pagetype)}`
    await axios.put(url, data)
    
    return {
      success: true
    }
  } catch (error: any) {
    console.error('Failed to save single page data:', error)
    return {
      success: false,
      message: error.response?.data?.detail || error.message || '保存单页数据失败'
    }
  }
}
