From d5ce81026882ada34e5d49411be7c90ee96cc102 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 17 一月 2023 18:20:11 +0800 Subject: [PATCH] 2023-01-17 --- src/api/cacheutils.js | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 110 insertions(+), 6 deletions(-) diff --git a/src/api/cacheutils.js b/src/api/cacheutils.js index 542bfde..012223d 100644 --- a/src/api/cacheutils.js +++ b/src/api/cacheutils.js @@ -22,6 +22,13 @@ throw 'CREATE TABLE ERROR' }) + tx.executeSql('CREATE TABLE IF NOT EXISTS CACHES (menuid varchar(50), CreateDate varchar(50), LongParam text, CDefine1 varchar(50), CDefine2 varchar(50))', [], () => { + + }, () => { + // eslint-disable-next-line + throw 'CREATE TABLE ERROR' + }) + if (window.GLOB.systemType === '') { tx.executeSql('CREATE TABLE IF NOT EXISTS FUNCS (func_code varchar(50), key_sql text, CDefine1 varchar(50), CDefine2 varchar(50), CDefine3 varchar(50))', [], () => { @@ -217,11 +224,55 @@ } /** + * @description 灏嗙紦瀛樻暟鎹啓鍏ebsql + */ + static writeCacheInWebSql (data) { + if (!window.GLOB.WebSql) return + window.GLOB.WebSql.transaction(tx => { + tx.executeSql(`DELETE FROM CACHES where menuid='${data[0]}'`) + if (data[2]) { + tx.executeSql('INSERT INTO CACHES (menuid, CreateDate, LongParam) VALUES (?, ?, ?)', data) + } + }) + } + + /** + * @description 鑾峰彇websql涓殑閰嶇疆淇℃伅 + */ + static getWebSqlCacheConfig (MenuID) { + if (!window.GLOB.WebSql) return Promise.resolve() + return new Promise((resolve, reject) => { + window.GLOB.WebSql.transaction(tx => { + tx.executeSql(`SELECT * FROM CACHES WHERE menuid='${MenuID}'`, [], (tx, results) => { + resolve(results.rows[0]) + }, (tx, results) => { + console.warn(results) + resolve() + }) + }) + }) + } + + /** + * @description 鍒犻櫎websql涓秴杩�7澶╃殑缂撳瓨淇℃伅 + */ + static delWebSqlCacheConfig (date, type) { + if (!window.GLOB.WebSql) return + window.GLOB.WebSql.transaction(tx => { + if (type === 'all') { + tx.executeSql('DELETE FROM CACHES') + } else { + tx.executeSql(`DELETE FROM CACHES where CreateDate<'${date}'`) + } + }) + } + + /** * @description 鎵撳紑IndexedDB */ static openIndexDB (db) { try { - let request = window.indexedDB.open(db, 1) + let request = window.indexedDB.open(db, 2) request.onerror = () => { console.warn('IndexedDB 鍒濆鍖栧け璐ワ紒') } @@ -237,6 +288,9 @@ let objectStore = window.GLOB.IndexDB.createObjectStore('configs', { keyPath: 'id' }) objectStore.createIndex('menuid', 'menuid', { unique: false }) objectStore.createIndex('userid', 'userid', { unique: false }) + } + if (!window.GLOB.IndexDB.objectStoreNames.contains('caches')) { + window.GLOB.IndexDB.createObjectStore('caches', { keyPath: 'menuid' }) } if (window.GLOB.systemType === '' && !window.GLOB.IndexDB.objectStoreNames.contains('funcs')) { window.GLOB.IndexDB.createObjectStore('funcs', { keyPath: 'id' }) @@ -440,12 +494,62 @@ static writeInIndexDB (data) { if (!window.GLOB.IndexDB || !data) return - let request = window.GLOB.IndexDB.transaction(['configs'], 'readwrite') - .objectStore('configs') - .add(data) + window.GLOB.IndexDB.transaction(['configs'], 'readwrite').objectStore('configs').add(data) + } - request.onerror = () => { - window.GLOB.IndexDB = null + /** + * @description 灏嗘暟鎹啓鍏ndexedDB + */ + static writeCacheInIndexDB (data) { + if (!window.GLOB.IndexDB) return + + let objectStore = window.GLOB.IndexDB.transaction(['caches'], 'readwrite').objectStore('caches') + objectStore.delete(data.menuid) + + if (data.LongParam) { + objectStore.add(data) + } + } + + /** + * @description 鑾峰彇IndexedDB涓殑閰嶇疆淇℃伅 + */ + static getIndexDBCacheConfig (MenuID) { + if (!window.GLOB.IndexDB) return Promise.resolve() + + return new Promise((resolve, reject) => { + let request = window.GLOB.IndexDB.transaction(['caches']).objectStore('caches').get(MenuID) + + request.onerror = () => { + resolve() + } + + request.onsuccess = () => { + resolve(request.result) + } + }) + } + + /** + * @description 鍒犻櫎IndexedDB涓秴杩�7澶╃殑缂撳瓨淇℃伅 + */ + static delIndexDBCacheConfig (date, type) { + if (!window.GLOB.IndexDB) return + + if (type === 'all') { + window.GLOB.IndexDB.transaction(['caches'], 'readwrite').objectStore('caches').clear() + } else { + let request = window.GLOB.IndexDB.transaction(['caches'], 'readwrite').objectStore('caches').openCursor() + + request.onsuccess = (e) => { + let cursor = e.target.result + if (cursor) { + if (cursor.value.CreateDate < date) { + cursor.delete() + } + cursor.continue() + } + } } } } \ No newline at end of file -- Gitblit v1.8.0