fix: indexedDB 版本更新

main
Lei OT 3 months ago
parent 0ec8566344
commit 17577d6fb6

@ -2,7 +2,13 @@ import { isEmpty } from './commons';
/** /**
* *
*/ */
const INDEXED_DB_VERSION = 4;
/**
* 数据库版本
* ! 每次涉及indexedDB的更新都要往上+1
* @type {number}
*/
const INDEXED_DB_VERSION = 5;
export const logWebsocket = (message, direction) => { export const logWebsocket = (message, direction) => {
var open = indexedDB.open('LogWebsocketData', INDEXED_DB_VERSION) var open = indexedDB.open('LogWebsocketData', INDEXED_DB_VERSION)
open.onupgradeneeded = function () { open.onupgradeneeded = function () {
@ -139,6 +145,11 @@ export const writeIndexDB = (rows, table, database) => {
} }
open.onsuccess = function () { open.onsuccess = function () {
var db = open.result var db = open.result
// 数据库是否存在
if (!db.objectStoreNames.contains(table)) {
console.warn(`writeIndexDB > Database does not exist.`, table);
return
}
var tx = db.transaction(table, 'readwrite') var tx = db.transaction(table, 'readwrite')
var store = tx.objectStore(table) var store = tx.objectStore(table)
rows.forEach(row => { rows.forEach(row => {
@ -191,7 +202,8 @@ export const readIndexDB = (keys=null, table, database) => {
let db = e.target.result let db = e.target.result
// 数据库是否存在 // 数据库是否存在
if (!db.objectStoreNames.contains(table)) { if (!db.objectStoreNames.contains(table)) {
resolve('Database does not exist.') console.warn(`readIndexDB > Database does not exist.`, table);
resolve();
return return
} }
let transaction = db.transaction(table, 'readonly') let transaction = db.transaction(table, 'readonly')
@ -288,7 +300,8 @@ export const deleteIndexDBbyKey = (keys=null, table, database) => {
let db = e.target.result let db = e.target.result
// 数据库是否存在 // 数据库是否存在
if (!db.objectStoreNames.contains(table)) { if (!db.objectStoreNames.contains(table)) {
resolve('Database does not exist.') console.warn('deleteIndexDBbyKey > Database does not exist.', table)
resolve();
return return
} }
var tx = db.transaction(table, 'readwrite') var tx = db.transaction(table, 'readwrite')
@ -347,7 +360,7 @@ export const deleteIndexDBbyKey = (keys=null, table, database) => {
}) })
}; };
function cleanOldData(database, storeNames=[], dateKey = 'timestamp') { function cleanOldData(database, storeNames=[], dateKey = 'timestamp', keySet = { keyPath: 'key' }) {
return function (daysToKeep = 7) { return function (daysToKeep = 7) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let deletedCount = 0 let deletedCount = 0
@ -360,7 +373,8 @@ function cleanOldData(database, storeNames=[], dateKey = 'timestamp') {
storeNames.forEach(storeName => { storeNames.forEach(storeName => {
// 数据库是否存在 // 数据库是否存在
if (!db.objectStoreNames.contains(storeName)) { if (!db.objectStoreNames.contains(storeName)) {
var store = db.createObjectStore(storeName, { keyPath: 'id', autoIncrement: true }) var store = db.createObjectStore(storeName, keySet)
// var store = db.createObjectStore(storeName, { keyPath: 'id', autoIncrement: true })
store.createIndex('timestamp', 'timestamp', { unique: false }) store.createIndex('timestamp', 'timestamp', { unique: false })
} else { } else {
const logStore = openRequest.transaction.objectStore(storeName) const logStore = openRequest.transaction.objectStore(storeName)
@ -443,6 +457,8 @@ function cleanOldData(database, storeNames=[], dateKey = 'timestamp') {
reject(event.target.error) reject(event.target.error)
} }
} }
} else {
console.warn('cleanOldData: No data to delete.', database);
} }
} }
openRequest.onerror = function (e) { openRequest.onerror = function (e) {
@ -452,7 +468,7 @@ function cleanOldData(database, storeNames=[], dateKey = 'timestamp') {
} }
} }
export const clean7DaysWebsocketLog = cleanOldData('LogWebsocketData', ['LogStore']); export const clean7DaysWebsocketLog = cleanOldData('LogWebsocketData', ['LogStore'], 'timestamp', { keyPath: 'id', autoIncrement: true });
export const clean7DaysMailboxLog = cleanOldData('mailbox', ['dirs', 'maillist', 'listrow', 'mailinfo', 'draft']); export const clean7DaysMailboxLog = cleanOldData('mailbox', ['dirs', 'maillist', 'listrow', 'mailinfo', 'draft']);

Loading…
Cancel
Save