138 lines
3.6 KiB
JavaScript
138 lines
3.6 KiB
JavaScript
// 查询术数书内容的脚本
|
|
// 通过 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
|
|
};
|
|
} |