2024-08-18 15:02:31 +08:00

65 lines
2.2 KiB
JavaScript

const localShellJson = require('../config/shell.json')
const { readScriptList, writeScriptList } = require('../utils/storage')
const { randomStr } = require('../utils/tools')
let localShell = JSON.parse(JSON.stringify(localShellJson)).map((item) => {
return { ...item, id: randomStr(10), index: '--', description: item.description + '|内置脚本' }
})
async function getScriptList({ res }) {
let data = await readScriptList()
data = data.map(item => {
return { ...item, id: item._id }
})
data?.sort((a, b) => Number(b.index || 0) - Number(a.index || 0))
data.push(...localShell)
res.success({ data })
}
async function getLocalScriptList({ res }) {
res.success({ data: localShell })
}
const addScript = async ({ res, request }) => {
let { body: { name, description, command, index } } = request
if (!name || !command) return res.fail({ data: false, msg: '参数错误' })
index = Number(index) || 0
let scriptsList = await readScriptList()
let record = { name, description, command, index }
scriptsList.push(record)
await writeScriptList(scriptsList)
res.success({ data: '添加成功' })
}
const updateScriptList = async ({ res, request }) => {
let { params: { id } } = request
let { body: { name, description, command, index } } = request
if (!name || !command) return res.fail({ data: false, msg: '参数错误' })
let scriptsList = await readScriptList()
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: '修改成功' })
}
const removeScript = async ({ res, request }) => {
let { params: { id } } = request
let scriptsList = await readScriptList()
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: '移除成功' })
}
module.exports = {
addScript,
getScriptList,
getLocalScriptList,
updateScriptList,
removeScript
}