12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- const API = require("../../lib/API")
- const db = require("../../plugin/DataBase/db")
- const AccessControl = require("../../lib/AccessControl")
- const { BaseStdResponse } = require("../../BaseStdResponse")
- const simpleGit = require('simple-git')
- class GetRepoList extends API {
- constructor() {
- super()
- this.setPath('/Repos/List')
- this.setMethod('GET')
- }
- async onRequest(req, res) {
- let {
- uuid,
- session,
- keyword
- } = req.query
- if ([uuid, session].some(value => value === '' || value === null || value === undefined))
- return res.json({
- ...BaseStdResponse.MISSING_PARAMETER
- })
- // 检查 session
- if (!await AccessControl.checkSession(uuid, session))
- return res.status(401).json({
- ...BaseStdResponse.ACCESS_DENIED
- })
- let sql = 'SELECT id, name, url, path, create_time, state, logo, update_time FROM repos WHERE create_user = ?'
- let params = [uuid]
- if ((keyword ?? '').trim() !== '') {
- sql += ' AND name LIKE ?'
- params.push(`%${keyword}%`)
- }
- sql += ' ORDER BY update_time DESC'
- let rows = await db.query(sql, params)
- if (!rows || rows.length === 0)
- return res.json({
- ...BaseStdResponse.OK,
- data: []
- })
- try {
- const git = simpleGit()
- const statusPromises = rows.map(async item => {
- await git.cwd(item.path)
- delete item.path
- const status = await git.status()
- return {
- ...item,
- status: {
- current: status.current
- }
- }
- })
- const items = await Promise.all(statusPromises)
- res.json({
- ...BaseStdResponse.OK,
- data: items
- })
- } catch (error) {
- console.error('获取仓库状态失败:', error)
- res.json({
- ...BaseStdResponse.ERR,
- message: '获取仓库状态失败'
- })
- }
- }
- }
- module.exports.GetRepoList = GetRepoList
|