From 587facfb3d98fc68dfeb9320f7b5200fe63d3834 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 7 Feb 2023 17:12:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E4=BA=BA=E5=92=8C=E7=8A=B6=E6=80=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/base_controller.rb | 9 +++++++++ app/controllers/api/v1/issues/authors_controller.rb | 9 +++++++++ app/controllers/api/v1/issues/statues_controller.rb | 10 ++++++++++ .../{projects => }/issues/_simple_detail.json.jbuilder | 0 app/views/api/v1/issues/authors/index.json.jbuilder | 4 ++++ app/views/api/v1/issues/statues/index.json.jbuilder | 4 ++++ config/routes/api.rb | 8 +++++++- 7 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 app/controllers/api/v1/issues/authors_controller.rb create mode 100644 app/controllers/api/v1/issues/statues_controller.rb rename app/views/api/v1/{projects => }/issues/_simple_detail.json.jbuilder (100%) create mode 100644 app/views/api/v1/issues/authors/index.json.jbuilder create mode 100644 app/views/api/v1/issues/statues/index.json.jbuilder diff --git a/app/controllers/api/v1/base_controller.rb b/app/controllers/api/v1/base_controller.rb index b937d798e..771adcc05 100644 --- a/app/controllers/api/v1/base_controller.rb +++ b/app/controllers/api/v1/base_controller.rb @@ -20,10 +20,19 @@ class Api::V1::BaseController < ApplicationController # User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token # end # end + + def kaminary_select_paginate(relation) + limit = params[:limit] || params[:per_page] + limit = (limit.to_i.zero? || limit.to_i > 100) ? 100 : limit.to_i + page = params[:page].to_i.zero? ? 1 : params[:page].to_i + + relation.page(page).per(limit) + end def limit params.fetch(:limit, 15) end + def page params.fetch(:page, 1) end diff --git a/app/controllers/api/v1/issues/authors_controller.rb b/app/controllers/api/v1/issues/authors_controller.rb new file mode 100644 index 000000000..8c7a4f7e6 --- /dev/null +++ b/app/controllers/api/v1/issues/authors_controller.rb @@ -0,0 +1,9 @@ +class Api::V1::Issues::AuthorsController < Api::V1::BaseController + before_action :require_public_and_member_above, only: [:index] + + # 发布人列表 + def index + @authors = User.joins(issues: :project).where(projects: {id: @project&.id}) + @authors = kaminary_select_paginate(@authors) + end +end \ No newline at end of file diff --git a/app/controllers/api/v1/issues/statues_controller.rb b/app/controllers/api/v1/issues/statues_controller.rb new file mode 100644 index 000000000..0e9eff43f --- /dev/null +++ b/app/controllers/api/v1/issues/statues_controller.rb @@ -0,0 +1,10 @@ +class Api::V1::Issues::StatuesController < Api::V1::BaseController + + before_action :require_public_and_member_above, only: [:index] + + # 状态列表 + def index + @statues = IssueStatus.order("position asc") + @statues = kaminary_select_paginate(@statues) + end +end \ No newline at end of file diff --git a/app/views/api/v1/projects/issues/_simple_detail.json.jbuilder b/app/views/api/v1/issues/_simple_detail.json.jbuilder similarity index 100% rename from app/views/api/v1/projects/issues/_simple_detail.json.jbuilder rename to app/views/api/v1/issues/_simple_detail.json.jbuilder diff --git a/app/views/api/v1/issues/authors/index.json.jbuilder b/app/views/api/v1/issues/authors/index.json.jbuilder new file mode 100644 index 000000000..dd1a4174a --- /dev/null +++ b/app/views/api/v1/issues/authors/index.json.jbuilder @@ -0,0 +1,4 @@ +json.total_count @authors.total_count +json.authors @authors.each do |author| + json.partial! 'api/v1/users/simple_user', locals: { user: author} +end \ No newline at end of file diff --git a/app/views/api/v1/issues/statues/index.json.jbuilder b/app/views/api/v1/issues/statues/index.json.jbuilder new file mode 100644 index 000000000..2cc91fb52 --- /dev/null +++ b/app/views/api/v1/issues/statues/index.json.jbuilder @@ -0,0 +1,4 @@ +json.total_count @statues.total_count +json.statues @statues.each do |status| + json.(status, :id, :name) +end \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index 19531526e..fac227d73 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -28,6 +28,13 @@ defaults format: :json do # projects文件夹下的 scope module: :projects do resources :issues + scope module: :issues do + resources :milestones, except: [:new, :edit] + resources :issue_statues, only: [:index], controller: '/api/v1/issues/statues' + resources :issue_authors, only: [:index], controller: '/api/v1/issues/authors' + resources :issue_assigners, only: [:index], controller: '/api/v1/issues/assigners' + end + resources :pulls, module: 'pulls' do resources :versions, only: [:index] do member do @@ -38,7 +45,6 @@ defaults format: :json do resources :reviews, only: [:index, :create] end - resources :versions resources :release_versions resources :webhooks do member do