Browse Source

新增:存储pull_request源仓库信息

pull/347/head
yystopf 1 year ago
parent
commit
c9df8fa3fe
7 changed files with 50 additions and 28 deletions
  1. +4
    -0
      app/controllers/projects_controller.rb
  2. +21
    -19
      app/models/pull_request.rb
  3. +6
    -0
      app/services/projects/transfer_service.rb
  4. +5
    -2
      app/services/pull_requests/create_service.rb
  5. +4
    -4
      app/views/pull_requests/index.json.jbuilder
  6. +4
    -3
      app/views/pull_requests/show.json.jbuilder
  7. +6
    -0
      db/migrate/20240719015447_add_fork_project_owner_identifier_to_pull_requests.rb

+ 4
- 0
app/controllers/projects_controller.rb View File

@@ -217,6 +217,10 @@ class ProjectsController < ApplicationController

new_project_params = project_params.except(:private).merge(is_public: !private)
@project.update_attributes!(new_project_params)
fork_pull_requests = PullRequest.where(fork_project_id: @project.id)
if fork_pull_requests.present?
fork_pull_requests.update_all(fork_project_identifier: @project.identifier)
end
@project.forked_projects.map{|p| p.update!(is_public: @project.is_public)}
gitea_params = {
private: private,


+ 21
- 19
app/models/pull_request.rb View File

@@ -2,25 +2,27 @@
#
# Table name: pull_requests
#
# id :integer not null, primary key
# gitea_id :integer
# gitea_number :integer
# user_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# status :integer default("0")
# project_id :integer
# title :string(255)
# milestone :integer
# body :text(4294967295)
# head :string(255)
# base :string(255)
# issue_id :integer
# fork_project_id :integer
# is_original :boolean default("0")
# comments_count :integer default("0")
# commits_count :integer default("0")
# files_count :integer default("0")
# id :integer not null, primary key
# gitea_id :integer
# gitea_number :integer
# user_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# status :integer default("0")
# project_id :integer
# title :string(255)
# milestone :integer
# body :text(4294967295)
# head :string(255)
# base :string(255)
# issue_id :integer
# fork_project_id :integer
# is_original :boolean default("0")
# comments_count :integer default("0")
# commits_count :integer default("0")
# files_count :integer default("0")
# fork_project_owner :string(255)
# fork_project_identifier :string(255)
#

class PullRequest < ApplicationRecord


+ 6
- 0
app/services/projects/transfer_service.rb View File

@@ -15,6 +15,7 @@ class Projects::TransferService < ApplicationService
update_repo_url
update_visit_teams
update_fork_info
update_fork_pull_request_info
end

Rails.logger.info("##### Project transfer_service end ######")
@@ -49,6 +50,11 @@ class Projects::TransferService < ApplicationService
fork_user.update(user_id: @new_owner.id) if fork_user.present?
end

def update_fork_pull_request_info
fork_pull_requests = PullRequest.where(fork_project_id: @project.id)
fork_pull_requests.update_all(fork_project_owner: @new_owner&.login) if fork_pull_requests.present?
end

def gitea_update_owner
begin
@gitea_repo = $gitea_hat_client.post_repos_transfer_by_owner_repo(owner&.login, project.identifier, {body: {new_owner: new_owner&.login}.to_json})


+ 5
- 2
app/services/pull_requests/create_service.rb View File

@@ -1,6 +1,6 @@
class PullRequests::CreateService < ApplicationService

attr_reader :current_user, :owner, :project, :params
attr_reader :current_user, :owner, :project, :params, :fork_project
attr_accessor :pull_issue, :pull_request

def initialize(current_user, owner, project, params)
@@ -8,6 +8,7 @@ class PullRequests::CreateService < ApplicationService
@project = project
@params = params
@current_user = current_user
@fork_project = Project.find_by_id(params[:fork_project_id])
end

def call
@@ -102,7 +103,9 @@ class PullRequests::CreateService < ApplicationService
fork_project_id: @params[:fork_project_id],
is_original: is_original,
files_count: @params[:files_count] || 0,
commits_count: @params[:commits_count] || 0
commits_count: @params[:commits_count] || 0,
fork_project_owner: @fork_project&.owner&.login,
fork_project_identifier: @fork_project&.identifier
})
end



+ 4
- 4
app/views/pull_requests/index.json.jbuilder View File

@@ -23,10 +23,10 @@ json.issues do
json.pull_request_base pr.base
json.pull_request_staus pr.status == 1 ? "merged" : (pr.status == 2 ? "closed" : "open")
json.is_original pr.is_original
json.fork_project_id pr.fork_project_id.present? ? pr.fork_project_id : pr.project_id
json.fork_project_identifier pr.fork_project_id.present? ? pr&.fork_project&.identifier : pr.project&.identifier
json.fork_project_user pr.fork_project_id.present? ? pr&.fork_project&.owner.try(:login) : pr.project&.owner.try(:login)
json.fork_project_user_name pr.fork_project_id.present? ? pr&.fork_project&.owner.try(:show_real_name) : pr.project&.owner.try(:show_real_name)
json.fork_project_id pr.fork_project_id
json.fork_project_identifier pr.fork_project.present? ? pr&.fork_project&.identifier : pr.fork_project_identifier
json.fork_project_user pr.fork_project.present? ? pr&.fork_project&.owner.try(:login) : pr.fork_project_owner
json.fork_project_user_name pr.fork_project.present? ? pr&.fork_project&.owner.try(:show_real_name) : User.find_by(login: pr.fork_project_owner).try(:show_real_name)
json.reviewers pr.reviewers.pluck(:login)

json.id issue.id


+ 4
- 3
app/views/pull_requests/show.json.jbuilder View File

@@ -25,9 +25,10 @@ end
json.pull_request do
json.extract! @pull_request, :id,:base, :head, :status, :is_original
json.pull_request_staus @pull_request.status == 1 ? "merged" : (@pull_request.status == 2 ? "closed" : "open")
json.fork_project_id @pull_request.fork_project_id.present? ? @pull_request.fork_project_id : @pull_request.project_id
json.fork_project_user @pull_request.fork_project_id.present? ? @pull_request&.fork_project&.owner.try(:login) : @pull_request.project&.owner.try(:login)
json.fork_project_user_name @pull_request.fork_project_id.present? ? @pull_request&.fork_project&.owner.try(:show_real_name) : @pull_request.project&.owner.try(:show_real_name)
json.fork_project_id @pull_request.fork_project_id
json.fork_project_identifier @pull_request.fork_project.present? ? @pull_request&.fork_project&.identifier : @pull_request.fork_project_identifier
json.fork_project_user @pull_request.fork_project.present? ? @pull_request&.fork_project&.owner.try(:login) : @pull_request.fork_project_owner
json.fork_project_user_name @pull_request.fork_project.present? ? @pull_request&.fork_project&.owner.try(:show_real_name) : User.find_by(login: @pull_request.fork_project_owner).try(:show_real_name)
json.create_user @pull_request&.user&.login
json.mergeable @gitea_pull["mergeable"]
json.state @gitea_pull["state"]


+ 6
- 0
db/migrate/20240719015447_add_fork_project_owner_identifier_to_pull_requests.rb View File

@@ -0,0 +1,6 @@
class AddForkProjectOwnerIdentifierToPullRequests < ActiveRecord::Migration[5.2]
def change
add_column :pull_requests, :fork_project_owner, :string
add_column :pull_requests, :fork_project_identifier, :string
end
end

Loading…
Cancel
Save