From 2cfab00e8fd07eef270ee88f8dcb920a6727df61 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 7 Mar 2024 17:02:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E7=BA=A7=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E5=B7=A5=E5=85=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/utils/cache-db-utils.ts | 70 +++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 src/utils/cache-db-utils.ts diff --git a/package.json b/package.json index aa5d5fbe..3b98f023 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "file-saver": "^2.0.5", "js-base64": "^3.7.7", "js-cookie": "^3.0.5", + "localforage": "^1.10.0", "nprogress": "^0.2.0", "p-queue": "^8.0.1", "pinia": "^2.1.7", diff --git a/src/utils/cache-db-utils.ts b/src/utils/cache-db-utils.ts new file mode 100644 index 00000000..ba092981 --- /dev/null +++ b/src/utils/cache-db-utils.ts @@ -0,0 +1,70 @@ +// 文档 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 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; +}