|
|
@ -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']);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|