diff --git a/app/controllers/api/v1/projects/sync_repositories_controller.rb b/app/controllers/api/v1/projects/sync_repositories_controller.rb index 41ea1393f..f4caef955 100644 --- a/app/controllers/api/v1/projects/sync_repositories_controller.rb +++ b/app/controllers/api/v1/projects/sync_repositories_controller.rb @@ -2,7 +2,7 @@ class Api::V1::Projects::SyncRepositoriesController < Api::V1::BaseController before_action :require_public_and_member_above def create - @sync_repositories = Api::V1::Projects::SyncRepositories::CreateService.call(@project, sync_repository_params) + @sync_repository1, @sync_repository2, @sync_repository_branch1, @sync_repository_branch2 = Api::V1::Projects::SyncRepositories::CreateService.call(@project, sync_repository_params) end def sync @@ -18,7 +18,7 @@ class Api::V1::Projects::SyncRepositoriesController < Api::V1::BaseController private def sync_repository_params - param.permit(:type, :external_token, :external_repo_address, :sync_granularity, :external_branch_name, :gitlink_branch_name, :first_sync_direction) + params.permit(:type, :external_token, :external_repo_address, :sync_granularity, :external_branch_name, :gitlink_branch_name, :first_sync_direction) end end \ No newline at end of file diff --git a/app/jobs/touch_sync_job.rb b/app/jobs/touch_sync_job.rb index e30b1cd31..d4c83be73 100644 --- a/app/jobs/touch_sync_job.rb +++ b/app/jobs/touch_sync_job.rb @@ -15,9 +15,9 @@ class TouchSyncJob < ApplicationJob result = Reposync::SyncBranchService.call(sync_repository.repo_name, touchable.external_branch_name, sync_repository.sync_direction) end if result.is_a?(Array) - touchable.update_column(:sync_status, 1) + touchable.update_attributes!({sync_status: 1, sync_time: Time.now}) else - touchable.update_column(:sync_status, 2) + touchable.update_attributes!({sync_status: 2, sync_time: Time.now}) end end end diff --git a/app/models/sync_repository.rb b/app/models/sync_repository.rb index 5ffdd5425..7b3af11ca 100644 --- a/app/models/sync_repository.rb +++ b/app/models/sync_repository.rb @@ -20,6 +20,7 @@ class SyncRepository < ApplicationRecord belongs_to :project + has_many :sync_repository_branches, dependent: :destroy validates :repo_name, uniqueness: { message: "已存在" } end diff --git a/app/models/sync_repository_branch.rb b/app/models/sync_repository_branch.rb index 2f2478231..5e10dfa12 100644 --- a/app/models/sync_repository_branch.rb +++ b/app/models/sync_repository_branch.rb @@ -20,4 +20,6 @@ class SyncRepositoryBranch < ApplicationRecord belongs_to :sync_repository + + enum sync_status: {success: 1, failure: 2} end diff --git a/app/services/api/v1/projects/sync_repositories/create_service.rb b/app/services/api/v1/projects/sync_repositories/create_service.rb index 088bd7b3b..1816c3e85 100644 --- a/app/services/api/v1/projects/sync_repositories/create_service.rb +++ b/app/services/api/v1/projects/sync_repositories/create_service.rb @@ -3,7 +3,7 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService include ActiveModel::Model attr_reader :project, :type, :external_token, :external_repo_address, :sync_granularity, :external_branch_name, :gitlink_branch_name, :first_sync_direction - attr_accessor :sync_repository1, :sync_repository2 + attr_accessor :sync_repository1, :sync_repository2, :sync_repository_branch1, :sync_repository_branch2 validates :type, inclusion: {in: %w(SyncRepositories::Gitee SyncRepositories::Github)} validates :external_repo_address, format: { with: CustomRegexp::URL_REGEX, multiline: true, message: "地址格式不正确" } @@ -36,6 +36,8 @@ class Api::V1::Projects::SyncRepositories::CreateService < ApplicationService touch_first_sync end create_webhook + + [@sync_repository1, @sync_repository2, @sync_repository_branch1, @sync_repository_branch2] end def check_gitlink_branch_name diff --git a/app/views/api/v1/projects/sync_repositories/create.json.jbuilder b/app/views/api/v1/projects/sync_repositories/create.json.jbuilder new file mode 100644 index 000000000..ac7b6c1a9 --- /dev/null +++ b/app/views/api/v1/projects/sync_repositories/create.json.jbuilder @@ -0,0 +1,5 @@ +json.gitlink_repo_address "#{EduSetting.get("gitlink_repo_domain")}/#{@project.owner&.login}/#{@project.identifier}.git" +json.external_repo_address @sync_repository1.external_repo_address +json.sync_granularity @sync_repository1.sync_granularity +json.gitlink_branch_name @sync_repository_branch1.gitlink_branch_name +json.external_branch_name @sync_repository_branch1.external_branch_name \ No newline at end of file