Files
CloudFlare-ImgBed/functions/api/debug/backup-test.js
2025-08-13 21:33:06 +08:00

115 lines
3.6 KiB
JavaScript

/**
* 备份功能测试工具
*/
import { getDatabase } from '../../utils/databaseAdapter.js';
export async function onRequest(context) {
var env = context.env;
try {
var db = getDatabase(env);
var results = {
databaseType: db.constructor.name || 'Unknown',
settings: {
all: [],
manage: [],
sysConfig: []
},
files: {
count: 0,
sample: []
}
};
// 测试列出所有设置
try {
var allSettings = await db.listSettings({});
results.settings.all = allSettings.keys.map(function(item) {
return {
key: item.name,
hasValue: !!item.value,
valueLength: item.value ? item.value.length : 0
};
});
} catch (error) {
results.settings.allError = error.message;
}
// 测试列出manage@开头的设置
try {
var manageSettings = await db.listSettings({ prefix: 'manage@' });
results.settings.manage = manageSettings.keys.map(function(item) {
return {
key: item.name,
hasValue: !!item.value,
valueLength: item.value ? item.value.length : 0
};
});
} catch (error) {
results.settings.manageError = error.message;
}
// 测试列出sysConfig设置
try {
var sysConfigSettings = await db.listSettings({ prefix: 'manage@sysConfig@' });
results.settings.sysConfig = sysConfigSettings.keys.map(function(item) {
return {
key: item.name,
hasValue: !!item.value,
valueLength: item.value ? item.value.length : 0,
valuePreview: item.value ? item.value.substring(0, 100) + '...' : null
};
});
} catch (error) {
results.settings.sysConfigError = error.message;
}
// 测试列出文件
try {
var filesList = await db.listFiles({ limit: 5 });
results.files.count = filesList.keys.length;
results.files.sample = filesList.keys.map(function(item) {
return {
id: item.name,
hasMetadata: !!item.metadata
};
});
} catch (error) {
results.files.error = error.message;
}
// 测试特定设置的读取
try {
var pageConfig = await db.get('manage@sysConfig@page');
results.specificTests = {
pageConfig: {
exists: !!pageConfig,
length: pageConfig ? pageConfig.length : 0,
preview: pageConfig ? pageConfig.substring(0, 200) + '...' : null
}
};
} catch (error) {
results.specificTests = { error: 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'
}
});
}
}