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:
@@ -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 = {
|
||||
|
||||
Reference in New Issue
Block a user