debug:添加测试数据库

This commit is contained in:
初衷
2025-08-14 11:04:01 +08:00
parent 320264afdf
commit 7da839c9e1
3 changed files with 159 additions and 19 deletions

View File

@@ -0,0 +1,109 @@
/**
* 数据库功能测试工具
*/
import { getDatabase } from '../../utils/databaseAdapter.js';
export async function onRequest(context) {
var env = context.env;
try {
var results = {
databaseType: null,
listTest: null,
getTest: null,
putTest: null,
errors: []
};
// 测试数据库连接
try {
var db = getDatabase(env);
results.databaseType = db.constructor.name || 'Unknown';
} catch (error) {
results.errors.push('Database connection failed: ' + error.message);
return new Response(JSON.stringify(results, null, 2), {
status: 500,
headers: { 'Content-Type': 'application/json' }
});
}
// 测试list方法
try {
var listResult = await db.list({ limit: 5 });
results.listTest = {
success: true,
hasKeys: !!(listResult && listResult.keys),
isArray: Array.isArray(listResult.keys),
keyCount: listResult.keys ? listResult.keys.length : 0,
structure: listResult ? Object.keys(listResult) : []
};
} catch (error) {
results.listTest = {
success: false,
error: error.message
};
results.errors.push('List test failed: ' + error.message);
}
// 测试get方法
try {
var getResult = await db.get('test_key_that_does_not_exist');
results.getTest = {
success: true,
result: getResult,
isNull: getResult === null
};
} catch (error) {
results.getTest = {
success: false,
error: error.message
};
results.errors.push('Get test failed: ' + error.message);
}
// 测试put方法使用临时键
try {
var testKey = 'test_' + Date.now();
var testValue = 'test_value_' + Date.now();
await db.put(testKey, testValue);
// 立即读取验证
var retrievedValue = await db.get(testKey);
// 清理测试数据
await db.delete(testKey);
results.putTest = {
success: true,
valueMatch: retrievedValue === testValue,
testKey: testKey,
testValue: testValue,
retrievedValue: retrievedValue
};
} catch (error) {
results.putTest = {
success: false,
error: error.message
};
results.errors.push('Put test failed: ' + error.message);
}
return new Response(JSON.stringify(results, null, 2), {
headers: {
'Content-Type': 'application/json'
}
});
} catch (error) {
return new Response(JSON.stringify({
error: error.message,
stack: error.stack
}), {
status: 500,
headers: {
'Content-Type': 'application/json'
}
});
}
}