From 7d11ecab11a4fe1d4e2ea9bdf73d2819b493f396 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 5 Nov 2025 16:01:07 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E8=80=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/projects/developers_controller.rb | 11 +++++++++++ .../api/v1/projects/developers/index.json.jbuilder | 14 ++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 app/controllers/api/v1/projects/developers_controller.rb create mode 100644 app/views/api/v1/projects/developers/index.json.jbuilder diff --git a/app/controllers/api/v1/projects/developers_controller.rb b/app/controllers/api/v1/projects/developers_controller.rb new file mode 100644 index 000000000..86a44fe67 --- /dev/null +++ b/app/controllers/api/v1/projects/developers_controller.rb @@ -0,0 +1,11 @@ +class Api::V1::Projects::DevelopersController < Api::V1::BaseController + def index + @query_result = ActiveRecord::Base.connection.select_all("select user_id, count(*), count(DISTINCT project_id), (select count(1) from issues where issues.author_id = commit_logs.user_id) as issues_count from commit_logs group by user_id") + @rows = kaminari_array_paginate(@query_result.rows) + end + + def count + @query_result = ActiveRecord::Base.connection.select_all("select user_id, count(*), count(DISTINCT project_id), (select count(1) from issues where issues.author_id = commit_logs.user_id) as issues_count from commit_logs group by user_id") + render_ok({count: @query_result.rows.count}) + end +end \ No newline at end of file diff --git a/app/views/api/v1/projects/developers/index.json.jbuilder b/app/views/api/v1/projects/developers/index.json.jbuilder new file mode 100644 index 000000000..d499b648f --- /dev/null +++ b/app/views/api/v1/projects/developers/index.json.jbuilder @@ -0,0 +1,14 @@ +json.total_count @rows.total_count +json.users @rows.each do |row| + user = User.find(row[0]) + if user.blank? + json.user nil + else + json.user do + json.partial! "api/v1/users/simple_user", user: user + end + end + json.commit_count row[1] + json.project_count row[2] + json.issues_count row[3] +end \ No newline at end of file