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

This commit is contained in:
chaos-zhu 2024-10-22 22:50:00 +08:00
parent 98d44e8ab4
commit 9b71b28e46
4 changed files with 9 additions and 69 deletions

View File

@ -1,13 +1,14 @@
const localShellJson = require('../config/shell.json') const localShellJson = require('../config/shell.json')
const { readScriptList, writeScriptList } = require('../utils/storage')
const { randomStr } = require('../utils/tools') const { randomStr } = require('../utils/tools')
const { ScriptsDB } = require('../utils/db-class')
const scriptsDB = new ScriptsDB().getInstance()
let localShell = JSON.parse(JSON.stringify(localShellJson)).map((item) => { let localShell = JSON.parse(JSON.stringify(localShellJson)).map((item) => {
return { ...item, id: randomStr(10), index: '--', description: item.description + '|内置脚本' } return { ...item, id: randomStr(10), index: '--', description: item.description + '|内置脚本' }
}) })
async function getScriptList({ res }) { async function getScriptList({ res }) {
let data = await readScriptList() let data = await scriptsDB.findAsync({})
data = data.map(item => { data = data.map(item => {
return { ...item, id: item._id } return { ...item, id: item._id }
}) })
@ -24,10 +25,8 @@ const addScript = async ({ res, request }) => {
let { body: { name, description, command, index } } = request let { body: { name, description, command, index } } = request
if (!name || !command) return res.fail({ data: false, msg: '参数错误' }) if (!name || !command) return res.fail({ data: false, msg: '参数错误' })
index = Number(index) || 0 index = Number(index) || 0
let scriptsList = await readScriptList()
let record = { name, description, command, index } let record = { name, description, command, index }
scriptsList.push(record) await scriptsDB.insertAsync(record)
await writeScriptList(scriptsList)
res.success({ data: '添加成功' }) res.success({ data: '添加成功' })
} }
@ -35,23 +34,13 @@ const updateScriptList = async ({ res, request }) => {
let { params: { id } } = request let { params: { id } } = request
let { body: { name, description, command, index } } = request let { body: { name, description, command, index } } = request
if (!name || !command) return res.fail({ data: false, msg: '参数错误' }) if (!name || !command) return res.fail({ data: false, msg: '参数错误' })
let scriptsList = await readScriptList() await scriptsDB.updateAsync({ _id: id }, { name, description, command, index })
let idx = scriptsList.findIndex(item => item._id === id)
if (idx === -1) return res.fail({ data: false, msg: `脚本ID${ id }不存在` })
const { _id } = scriptsList[idx]
let record = Object.assign({ _id }, { name, description, command, index })
scriptsList.splice(idx, 1, record)
await writeScriptList(scriptsList)
res.success({ data: '修改成功' }) res.success({ data: '修改成功' })
} }
const removeScript = async ({ res, request }) => { const removeScript = async ({ res, request }) => {
let { params: { id } } = request let { params: { id } } = request
let scriptsList = await readScriptList() await scriptsDB.removeAsync({ _id: id })
let idx = scriptsList.findIndex(item => item._id === id)
if (idx === -1) return res.fail({ msg: '脚本ID不存在' })
scriptsList.splice(idx, 1)
await writeScriptList(scriptsList)
res.success({ data: '移除成功' }) res.success({ data: '移除成功' })
} }

View File

@ -1,4 +1,4 @@
const { KeyDB, SshRecordDB, NotifyDB, NotifyConfigDB, ScriptsDB, OnekeyDB } = require('./db-class') const { KeyDB, SshRecordDB, ScriptsDB, OnekeyDB } = require('./db-class')
const readKey = async () => { const readKey = async () => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@ -64,55 +64,6 @@ const writeSSHRecord = async (record = []) => {
}) })
} }
// const getNotifySwByType = async (type) => {
// if (!type) throw Error('missing params: type')
// try {
// let notifyList = await readNotifyList()
// let { sw } = notifyList.find((item) => item.type === type)
// return sw
// } catch (error) {
// consola.error(`通知类型[${ type }]不存在`)
// return false
// }
// }
const readScriptList = async () => {
return new Promise((resolve, reject) => {
const scriptsDB = new ScriptsDB().getInstance()
scriptsDB.find({}, (err, docs) => {
if (err) {
consola.error('读取scripts list错误: ', err)
reject(err)
} else {
resolve(docs)
}
})
})
}
const writeScriptList = async (list = []) => {
return new Promise((resolve, reject) => {
const scriptsDB = new ScriptsDB().getInstance()
scriptsDB.remove({}, { multi: true }, (err) => {
if (err) {
consola.error('清空scripts list出错:', err)
reject(err)
} else {
scriptsDB.compactDatafile()
scriptsDB.insert(list, (err, newDocs) => {
if (err) {
consola.error('写入新的group list出错:', err)
reject(err)
} else {
scriptsDB.compactDatafile()
resolve(newDocs)
}
})
}
})
})
}
const readOneKeyRecord = async () => { const readOneKeyRecord = async () => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const onekeyDB = new OnekeyDB().getInstance() const onekeyDB = new OnekeyDB().getInstance()
@ -161,6 +112,5 @@ const deleteOneKeyRecord = async (ids =[]) => {
module.exports = { module.exports = {
readSSHRecord, writeSSHRecord, readSSHRecord, writeSSHRecord,
readKey, writeKey, readKey, writeKey,
readScriptList, writeScriptList,
readOneKeyRecord, writeOneKeyRecord, deleteOneKeyRecord readOneKeyRecord, writeOneKeyRecord, deleteOneKeyRecord
} }

View File

@ -18,7 +18,7 @@ const useStore = defineStore({
localScriptList: [], localScriptList: [],
HostStatusSocket: null, HostStatusSocket: null,
user: localStorage.getItem('user') || null, user: localStorage.getItem('user') || null,
token: sessionStorage.getItem('token') || localStorage.getItem('token') || null, token: localStorage.getItem('token') || sessionStorage.getItem('token') || null,
title: '', title: '',
isDark: false, isDark: false,
menuCollapse: localStorage.getItem('menuCollapse') === 'true', menuCollapse: localStorage.getItem('menuCollapse') === 'true',

View File

@ -142,6 +142,7 @@ onMounted(async () => {
const { data } = await $api.getPubPem() const { data } = await $api.getPubPem()
if (!data) return (notKey.value = true) if (!data) return (notKey.value = true)
localStorage.setItem('publicKey', data) localStorage.setItem('publicKey', data)
$store.removeJwtToken()
}) })
</script> </script>