Files
fe.ems.vue3/src/utils/cache-db-utils.ts
2024-06-17 19:19:23 +08:00

89 lines
1.9 KiB
TypeScript

// 文档 https://localforage.docschina.org/
import localforage from 'localforage';
/**数据级缓存设置 */
export async function dbSet(storeName: string, key: string, value: any) {
if (!storeName || !key || !value) {
return false;
}
localforage.config({
name: import.meta.env.VITE_APP_CODE,
storeName: storeName,
});
try {
await localforage.setItem(key, value);
return true;
} catch (error) {
console.error(error);
}
return false;
}
/**数据级缓存获取 */
export async function dbGet(storeName: string, key: string) {
if (!storeName || !key) {
return null;
}
localforage.config({
name: import.meta.env.VITE_APP_CODE,
storeName: storeName,
});
let value: any = null;
try {
value = await localforage.getItem(key);
} catch (error) {
console.error(error);
}
return value;
}
/**数据级缓存全部移除 */
export async function dbClear(storeName: string) {
if (!storeName ) {
return false;
}
localforage.config({
name: import.meta.env.VITE_APP_CODE,
storeName: storeName,
});
try {
await localforage.clear();
return true;
} catch (error) {
console.error(error);
}
return false;
}
/**数据级缓存移除 */
export async function dbRemove(storeName: string, key: string) {
if (!storeName || !key) {
return false;
}
localforage.config({
name: import.meta.env.VITE_APP_CODE,
storeName: storeName,
});
try {
await localforage.removeItem(key);
return true;
} catch (error) {
console.error(error);
}
return false;
}
/**数据级缓存设置JSON */
export function dbSetJSON(storeName: string, key: string, jsonValue: object) {
return dbSet(storeName, key, JSON.stringify(jsonValue));
}
/**数据级缓存获取JSON */
export async function dbGetJSON(storeName: string, key: string) {
const value = await dbGet(storeName, key);
if (typeof value === 'string') {
return JSON.parse(value);
}
return value;
}