DeleteRepo.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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 redis = require('../../plugin/DataBase/Redis')
  6. const fs = require('fs')
  7. // 删除仓库
  8. class DeleteRepo extends API {
  9. constructor() {
  10. super()
  11. this.setMethod("DELETE")
  12. this.setPath("/Repos")
  13. }
  14. async onRequest(req, res) {
  15. let { uuid, session, id } = req.body
  16. if ([uuid, session, id].some(value => value === '' || value === null || value === undefined))
  17. return res.json({
  18. ...BaseStdResponse.MISSING_PARAMETER
  19. })
  20. // 检查 session
  21. if (!await AccessControl.checkSession(uuid, session))
  22. return res.status(401).json({
  23. ...BaseStdResponse.ACCESS_DENIED
  24. })
  25. let sql = 'SELECT path FROM repos WHRER \`create_user\` = ? AND id = ?'
  26. let r = await db.query(sql, [uuid, id])
  27. if (r && r[0].path) {
  28. const redisKey = [`gitLogs:${r[0].path}`,`contributors:${r[0].path}`,`codeStats:${r[0].path}`]
  29. await redis.del(redisKey)
  30. fs.rm(r[0].path, { recursive: true, force: true }, (err) => {
  31. this.logger.error('删除仓库失败!' + err)
  32. res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '删除仓库失败!' })
  33. })
  34. }
  35. sql = 'DELETE FROM repos WHERE create_user = ? AND id = ?'
  36. let result = await db.query(sql, [uuid, id])
  37. if (result && result.affectedRows > 0) {
  38. res.json({
  39. ...BaseStdResponse.OK
  40. })
  41. } else {
  42. res.json({ ...BaseStdResponse.ERR, endpoint: 7894378, msg: '删除仓库失败!' })
  43. }
  44. }
  45. }
  46. module.exports.DeleteRepo = DeleteRepo