// 查询术数书内容的脚本
// 通过 Hyperdrive API 查询 NeonDB 中的术数书数据

const API_BASE_URL = 'https://hyperdrive.seekkey.tech';

// 通用请求函数
async function apiRequest(endpoint, options = {}) {
  const url = `${API_BASE_URL}${endpoint}`;
  const headers = {
    'Content-Type': 'application/json',
    ...options.headers
  };
  
  try {
    const response = await fetch(url, {
      ...options,
      headers
    });
    
    if (!response.ok) {
      throw new Error(`HTTP ${response.status}: ${response.statusText}`);
    }
    
    const contentType = response.headers.get('content-type');
    if (contentType && contentType.includes('application/json')) {
      return await response.json();
    } else {
      return await response.text();
    }
  } catch (error) {
    console.error(`Request failed for ${endpoint}:`, error.message);
    throw error;
  }
}

// 查询数据库表结构
async function queryTables() {
  console.log('\n📋 查询数据库表结构...');
  try {
    const result = await apiRequest('/query-tables');
    console.log('✅ 数据库表:', result);
    return result;
  } catch (error) {
    console.log('❌ 查询表结构失败:', error.message);
    return null;
  }
}

// 查询术数书内容
async function queryShushuBook(limit = 10) {
  console.log('\n📚 查询术数书内容...');
  try {
    const result = await apiRequest(`/query-shushu?limit=${limit}`);
    console.log('✅ 术数书内容:', JSON.stringify(result, null, 2));
    return result;
  } catch (error) {
    console.log('❌ 查询术数书失败:', error.message);
    return null;
  }
}

// 搜索术数书内容
async function searchShushuBook(keyword, limit = 5) {
  console.log(`\n🔍 搜索术数书内容: "${keyword}"...`);
  try {
    const result = await apiRequest(`/search-shushu?q=${encodeURIComponent(keyword)}&limit=${limit}`);
    console.log('✅ 搜索结果:', JSON.stringify(result, null, 2));
    return result;
  } catch (error) {
    console.log('❌ 搜索失败:', error.message);
    return null;
  }
}

// 获取术数书统计信息
async function getShushuStats() {
  console.log('\n📊 获取术数书统计信息...');
  try {
    const result = await apiRequest('/shushu-stats');
    console.log('✅ 统计信息:', JSON.stringify(result, null, 2));
    return result;
  } catch (error) {
    console.log('❌ 获取统计信息失败:', error.message);
    return null;
  }
}

// 主函数
async function main() {
  console.log('🚀 术数书查询脚本');
  console.log('==================');
  
  // 首先测试连接
  console.log('\n🔗 测试 Hyperdrive 连接...');
  try {
    const connectionTest = await apiRequest('/test-connection');
    console.log('✅ 连接成功:', connectionTest.message);
  } catch (error) {
    console.log('❌ 连接失败:', error.message);
    return;
  }
  
  // 查询表结构
  await queryTables();
  
  // 获取统计信息
  await getShushuStats();
  
  // 查询术数书内容
  await queryShushuBook(5);
  
  // 搜索示例
  await searchShushuBook('易经');
  await searchShushuBook('八卦');
  await searchShushuBook('太公');
}

// 如果是 Node.js 环境，导入 fetch
if (typeof window === 'undefined') {
  // Node.js 环境
  const { default: fetch } = require('node-fetch');
  global.fetch = fetch;
  main().catch(console.error);
} else {
  // 浏览器环境
  console.log('在浏览器控制台中运行: main()');
}

// 导出函数供其他模块使用
if (typeof module !== 'undefined' && module.exports) {
  module.exports = {
    queryTables,
    queryShushuBook,
    searchShushuBook,
    getShushuStats,
    main
  };
}