DeleteRepo.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const API = require("../../lib/API")
  2. const AccessControl = require("../../lib/AccessControl")
  3. const { BaseStdResponse } = require("../../BaseStdResponse")
  4. const db = require("../../plugin/DataBase/db")
  5. const fs = require('fs')
  6. // 删除仓库
  7. class DeleteRepo extends API {
  8. constructor() {
  9. super()
  10. this.setMethod("DELETE")
  11. this.setPath("/Repos")
  12. }
  13. async onRequest(req, res) {
  14. let { uuid, session, id } = req.body
  15. if ([uuid, session, id].some(value => value === '' || value === null || value === undefined))
  16. return res.json({
  17. ...BaseStdResponse.MISSING_PARAMETER
  18. })
  19. // 检查 session
  20. if (!await AccessControl.checkSession(uuid, session))
  21. return res.status(401).json({
  22. ...BaseStdResponse.ACCESS_DENIED
  23. })
  24. let sql = 'SELECT path FROM repos WHRER create_user = ? AND id = ?'
  25. let r = await db.query(sql, [uuid, id])
  26. sql = 'DELETE FROM repos WHERE create_user = ? AND id = ?'
  27. let result = await db.query(sql, [uuid, id])
  28. if (result && result.affectedRows > 0) {
  29. res.json({
  30. ...BaseStdResponse.OK
  31. })
  32. if (r && r[0].path)
  33. fs.rm(r[0].path, { recursive: true, force: true }, (err) => { })
  34. } else {
  35. res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '删除仓库失败!' })
  36. }
  37. }
  38. }
  39. module.exports.DeleteRepo = DeleteRepo