const { readGroupList, writeGroupList } = require('../utils/storage') const { HostListDB } = require('../utils/db-class') const hostListDB = new HostListDB().getInstance() async function getGroupList({ res }) { let data = await readGroupList() data = data.map(item => { return { ...item, id: item._id } }) data?.sort((a, b) => Number(b.index || 0) - Number(a.index || 0)) res.success({ data }) } const addGroupList = async ({ res, request }) => { let { body: { name, index } } = request if (!name) return res.fail({ data: false, msg: '参数错误' }) let groupList = await readGroupList() let group = { name, index } groupList.push(group) await writeGroupList(groupList) res.success({ data: '添加成功' }) } const updateGroupList = async ({ res, request }) => { let { params: { id } } = request let { body: { name, index } } = request if (!id || !name) return res.fail({ data: false, msg: '参数错误' }) let groupList = await readGroupList() let idx = groupList.findIndex(item => item._id === id) if (idx === -1) return res.fail({ data: false, msg: `分组ID${ id }不存在` }) const { _id } = groupList[idx] let group = { _id, name, index: Number(index) || 0 } groupList.splice(idx, 1, group) await writeGroupList(groupList) res.success({ data: '修改成功' }) } const removeGroup = async ({ res, request }) => { let { params: { id } } = request if (id === 'default') return res.fail({ data: false, msg: '保留分组, 禁止删除' }) let groupList = await readGroupList() let idx = groupList.findIndex(item => item._id === id) if (idx === -1) return res.fail({ msg: '分组不存在' }) // 移除分组将所有该分组下host分配到default中去 let hostList = await hostListDB.findAsync({}) if (Array.isArray(hostList) && hostList.length > 0) { for (let item of hostList) { if (item.group === groupList[idx]._id) { item.group = 'default' await hostListDB.updateAsync({ _id: item._id }, item) } } } groupList.splice(idx, 1) await writeGroupList(groupList) res.success({ data: '移除成功' }) } module.exports = { addGroupList, getGroupList, updateGroupList, removeGroup }