Files
labmanager/server/controller/stability.js
2026-05-11 16:01:22 +08:00

100 lines
3.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import express from 'express'
import { requireAuth, requireAdmin } from './user.js'
import Stability from '../model/stability.js'
const router = express.Router()
// 列出所有稳定性实验
router.get('/', requireAuth, async (req, res) => {
try {
const stabilities = await Stability.find().populate(['checks.checker', 'creater'])
res.json(stabilities)
} catch (error) {
res.status(500).json({ message: '服务器错误', error: error.message })
}
})
// 列出未完成的稳定性实验
router.get('/unend', requireAuth, async (req, res) => {
try {
const statilities = await Stability.find({ ended: false }).populate(['checks.checker', 'creater'])
res.json(statilities)
} catch (error) {
res.status(500).json({ message: '服务器错误', error: error.message })
}
})
// 创建稳定性实验
router.post('/', requireAuth, async (req, res) => {
if (!req.body.batch) {
return res.status(400).json({ message: '缺少必要字段' })
}
try {
const stability = await Stability.create({
creater: req.user.id,
...req.body,
})
if (stability) {
res.json(stability)
} else {
res.status(400).json({ message: '资源创建失败' })
}
} catch (error) {
res.status(500).json({ message: '服务器错误', error: error.message })
}
})
// 删除稳定性实验
router.delete('/:id', requireAuth, requireAdmin, async (req, res) => {
try {
const stability = await Stability.findByIdAndDelete(req.params.id)
if (stability) {
res.json({ message: '删除成功' })
} else {
res.status(404).json({ message: '删除失败' })
}
} catch (error) {
res.status(500).json({ message: '服务器错误', error: error.message })
}
})
// 对 指定的稳定性实验进行check
// id稳定性实验id
// checkid检查点id
router.post('/check/:id/:checkid', requireAuth, async (req, res) => {
try {
const stability = await Stability.findById(req.params.id)
if (!stability) {
return res.status(404).json({ message: `未找到id为${req.params.id}的记录` })
}
stability.checks.forEach((check) => {
if (check._id == req.params.checkid) {
check.checked = true
check.checker = req.user.id
}
})
stability.ended = stability.checks.every((check) => check.checked)
await stability.save()
res.json(stability)
} catch (error) {
res.status(500).json({ message: '服务器错误', error: error.message })
}
})
// 更新稳定性实验
router.patch('/:id', requireAuth, async (req, res) => {
try {
const stability = await Stability.findByIdAndUpdate(req.params.id, req.body, { returnDocument: 'after' })
if (stability) {
res.json(stability)
} else {
res.status(404).json({ message: `未找到id为${req.params.id}的记录` })
}
} catch (error) {
res.status(500).json({ message: '服务器错误', error: error.message })
}
})
export { router as stabilityRouter }