Add uuid dependency and implement KV storage support in settings and data provider components. Enhance server settings with site key configuration and improve data handling for new KV providers.

This commit is contained in:
SunWuyuan
2025-05-10 17:48:18 +08:00
parent 00a693aeba
commit c0e33dcbf9
12 changed files with 1558 additions and 270 deletions
+79 -9
View File
@@ -1,5 +1,7 @@
import { serverProvider } from './providers/server';
import { indexedDBProvider } from './providers/indexedDB';
import { serverProvider } from "./providers/server";
import { indexedDBProvider } from "./providers/indexedDB";
import { kvProvider } from "./providers/kvProvider";
import { getSetting } from "./settings";
export const formatResponse = (data, message = null) => ({
success: true,
@@ -12,18 +14,86 @@ export const formatError = (message, code = "UNKNOWN_ERROR") => ({
error: { code, message },
});
const providers = {
// Legacy providers
const legacyProviders = {
server: serverProvider,
indexedDB: indexedDBProvider,
};
// New KV provider
const newProviders = {
kv: kvProvider,
};
// Main data provider with support for both legacy and new API
export default {
loadData: (provider, key, date) => providers[provider]?.loadData(key, date),
saveData: (provider, key, data, date) =>
providers[provider]?.saveData(key, data, date),
loadConfig: (provider, key) => providers[provider]?.loadConfig(key),
saveConfig: (provider, key, config) =>
providers[provider]?.saveConfig(key, config),
// Provider API methods
loadData: (provider, key, date) => {
if (legacyProviders[provider]) {
return legacyProviders[provider]?.loadData(key, date);
}
// If using new KV provider
if (provider === "kv-local") {
const classNumber = key.split("/").pop();
return newProviders.kv.local.loadData(classNumber, date);
} else if (provider === "kv-server") {
const classNumber = key.split("/").pop();
const serverUrl = getSetting("server.domain");
return newProviders.kv.server.loadData(serverUrl, classNumber, date);
}
},
saveData: (provider, key, data, date) => {
if (legacyProviders[provider]) {
return legacyProviders[provider]?.saveData(key, data, date);
}
// If using new KV provider
if (provider === "kv-local") {
const classNumber = key.split("/").pop();
return newProviders.kv.local.saveData(classNumber, data, date);
} else if (provider === "kv-server") {
const classNumber = key.split("/").pop();
const serverUrl = getSetting("server.domain");
return newProviders.kv.server.saveData(
serverUrl,
classNumber,
data,
date
);
}
},
loadConfig: (provider, key) => {
if (legacyProviders[provider]) {
return legacyProviders[provider]?.loadConfig(key);
}
// If using new KV provider
if (provider === "kv-local") {
const classNumber = key.split("/").pop();
return newProviders.kv.local.loadConfig(classNumber);
} else if (provider === "kv-server") {
const serverUrl = getSetting("server.domain");
return newProviders.kv.server.loadConfig(serverUrl);
}
},
saveConfig: (provider, key, config) => {
if (legacyProviders[provider]) {
return legacyProviders[provider]?.saveConfig(key, config);
}
// If using new KV provider
if (provider === "kv-local") {
const classNumber = key.split("/").pop();
return newProviders.kv.local.saveConfig(classNumber, config);
} else if (provider === "kv-server") {
const serverUrl = getSetting("server.domain");
return newProviders.kv.server.saveConfig(serverUrl, config);
}
},
};
export const ErrorCodes = {