DeleteRepo.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. if (r && r[0].path)
  27. fs.rm(r[0].path, { recursive: true, force: true }, (err) => {
  28. this.logger.error('删除仓库失败!' + err)
  29. res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '删除仓库失败!' })
  30. })
  31. sql = 'DELETE FROM repos WHERE create_user = ? AND id = ?'
  32. let result = await db.query(sql, [uuid, id])
  33. if (result && result.affectedRows > 0) {
  34. res.json({
  35. ...BaseStdResponse.OK
  36. })
  37. } else {
  38. res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '删除仓库失败!' })
  39. }
  40. }
  41. }
  42. module.exports.DeleteRepo = DeleteRepo