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