♻️ 重构本地数据库-onekey模块

This commit is contained in:
chaos-zhu 2024-10-22 23:00:12 +08:00
parent 9b71b28e46
commit 90ee38ff44
3 changed files with 11 additions and 58 deletions

View File

@ -1,7 +1,8 @@
const { readOneKeyRecord, deleteOneKeyRecord } = require('../utils/storage') const { OnekeyDB } = require('../utils/db-class')
const onekeyDB = new OnekeyDB().getInstance()
async function getOnekeyRecord({ res }) { async function getOnekeyRecord({ res }) {
let data = await readOneKeyRecord() let data = await onekeyDB.findAsync({})
data = data.map(item => { data = data.map(item => {
return { ...item, id: item._id } return { ...item, id: item._id }
}) })
@ -11,14 +12,11 @@ async function getOnekeyRecord({ res }) {
const removeOnekeyRecord = async ({ res, request }) => { const removeOnekeyRecord = async ({ res, request }) => {
let { body: { ids } } = request let { body: { ids } } = request
let onekeyRecord = await readOneKeyRecord()
if (ids === 'ALL') { if (ids === 'ALL') {
ids = onekeyRecord.map(item => item._id) await onekeyDB.removeAsync({}, { multi: true })
await deleteOneKeyRecord(ids)
res.success({ data: '移除全部成功' }) res.success({ data: '移除全部成功' })
} else { } else {
if (!onekeyRecord.some(item => ids.includes(item._id))) return res.fail({ msg: '批量指令记录ID不存在' }) await onekeyDB.removeAsync({ _id: { $in: ids } })
await deleteOneKeyRecord(ids)
res.success({ data: '移除成功' }) res.success({ data: '移除成功' })
} }
} }

View File

@ -1,13 +1,14 @@
const { Server } = require('socket.io') const { Server } = require('socket.io')
const { Client: SSHClient } = require('ssh2') const { Client: SSHClient } = require('ssh2')
const { asyncSendNotice } = require('../utils/notify') const { asyncSendNotice } = require('../utils/notify')
const { readSSHRecord, writeOneKeyRecord } = require('../utils/storage') const { readSSHRecord } = require('../utils/storage')
const { verifyAuthSync } = require('../utils/verify-auth') const { verifyAuthSync } = require('../utils/verify-auth')
const { shellThrottle } = require('../utils/tools') const { shellThrottle } = require('../utils/tools')
const { AESDecryptAsync } = require('../utils/encrypt') const { AESDecryptAsync } = require('../utils/encrypt')
const { isAllowedIp } = require('../utils/tools') const { isAllowedIp } = require('../utils/tools')
const { HostListDB } = require('../utils/db-class') const { HostListDB, OnekeyDB } = require('../utils/db-class')
const hostListDB = new HostListDB().getInstance() const hostListDB = new HostListDB().getInstance()
const onekeyDB = new OnekeyDB().getInstance()
const execStatusEnum = { const execStatusEnum = {
connecting: '连接中', connecting: '连接中',
@ -207,7 +208,7 @@ module.exports = (httpServer) => {
item.status = execStatusEnum.socketInterrupt item.status = execStatusEnum.socketInterrupt
} }
}) })
await writeOneKeyRecord(execResult) await onekeyDB.insertAsync(execResult)
isExecuting = false isExecuting = false
execResult = [] execResult = []
execClient = [] execClient = []

View File

@ -1,4 +1,4 @@
const { KeyDB, SshRecordDB, ScriptsDB, OnekeyDB } = require('./db-class') const { KeyDB, SshRecordDB, OnekeyDB } = require('./db-class')
const readKey = async () => { const readKey = async () => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -64,53 +64,7 @@ const writeSSHRecord = async (record = []) => {
}) })
} }
const readOneKeyRecord = async () => {
return new Promise((resolve, reject) => {
const onekeyDB = new OnekeyDB().getInstance()
onekeyDB.find({}, (err, docs) => {
if (err) {
consola.error('读取onekey record错误: ', err)
reject(err)
} else {
onekeyDB.compactDatafile()
resolve(docs)
}
})
})
}
const writeOneKeyRecord = async (records =[]) => {
return new Promise((resolve, reject) => {
const onekeyDB = new OnekeyDB().getInstance()
onekeyDB.insert(records, (err, newDocs) => {
if (err) {
consola.error('写入新的onekey记录出错:', err)
reject(err)
} else {
onekeyDB.compactDatafile()
resolve(newDocs)
}
})
})
}
const deleteOneKeyRecord = async (ids =[]) => {
return new Promise((resolve, reject) => {
const onekeyDB = new OnekeyDB().getInstance()
onekeyDB.remove({ _id: { $in: ids } }, { multi: true }, function (err, numRemoved) {
if (err) {
consola.error('Error deleting onekey record(s):', err)
reject(err)
} else {
onekeyDB.compactDatafile()
resolve(numRemoved)
}
})
})
}
module.exports = { module.exports = {
readSSHRecord, writeSSHRecord, readSSHRecord, writeSSHRecord,
readKey, writeKey, readKey, writeKey
readOneKeyRecord, writeOneKeyRecord, deleteOneKeyRecord
} }