Browse Source

新增:仓库列表和分支列表

pull/347/head
yystopf 2 years ago
parent
commit
8b1ef7bf15
7 changed files with 39 additions and 5 deletions
  1. +11
    -0
      app/controllers/api/v1/projects/sync_repositories_controller.rb
  2. +2
    -4
      app/models/project.rb
  3. +1
    -0
      app/models/sync_repository_branch.rb
  4. +11
    -0
      app/views/api/v1/projects/sync_repositories/branches.json.jbuilder
  5. +7
    -0
      app/views/api/v1/projects/sync_repositories/index.json.jbuilder
  6. +2
    -1
      config/routes/api.rb
  7. +5
    -0
      db/migrate/20240417025003_add_enable_to_sync_repository_branch.rb

+ 11
- 0
app/controllers/api/v1/projects/sync_repositories_controller.rb View File

@@ -1,6 +1,11 @@
class Api::V1::Projects::SyncRepositoriesController < Api::V1::BaseController
before_action :require_public_and_member_above

def index
@sync_repositories = @project.sync_repositories
@group_sync_repository = @project.sync_repositories.group(:type, :external_repo_address, :sync_granularity).count
end

def create
@sync_repository1, @sync_repository2, @sync_repository_branch1, @sync_repository_branch2 = Api::V1::Projects::SyncRepositories::CreateService.call(@project, sync_repository_params)
end
@@ -16,6 +21,12 @@ class Api::V1::Projects::SyncRepositoriesController < Api::V1::BaseController
end
end

def branches
return render_error("请输入正确的同步项目ID") unless params[:sync_repository_ids].present?
@sync_repository_branches = SyncRepositoryBranch.where(sync_repository_id: params[:sync_repository_ids].split(","))
@group_sync_repository_branch = @sync_repository_branches.group(:gitlink_branch_name, :external_branch_name).count
end

private
def sync_repository_params
params.permit(:type, :external_token, :external_repo_address, :sync_granularity, :external_branch_name, :gitlink_branch_name, :first_sync_direction)


+ 2
- 4
app/models/project.rb View File

@@ -55,14 +55,13 @@
# default_branch :string(255) default("master")
# website :string(255)
# lesson_url :string(255)
# use_blockchain :boolean default("0")
# is_pinned :boolean default("0")
# recommend_index :integer default("0")
# use_blockchain :boolean default("0")
# pr_view_admin :boolean default("0")
#
# Indexes
#
# index_projects_on_forked_count (forked_count)
# index_projects_on_forked_from_project_id (forked_from_project_id)
# index_projects_on_identifier (identifier)
# index_projects_on_invite_code (invite_code)
@@ -72,7 +71,6 @@
# index_projects_on_license_id (license_id)
# index_projects_on_name (name)
# index_projects_on_platform (platform)
# index_projects_on_praises_count (praises_count)
# index_projects_on_project_category_id (project_category_id)
# index_projects_on_project_language_id (project_language_id)
# index_projects_on_project_type (project_type)
@@ -80,7 +78,6 @@
# index_projects_on_rgt (rgt)
# index_projects_on_status (status)
# index_projects_on_updated_on (updated_on)
# index_projects_on_user_id (user_id)
#

class Project < ApplicationRecord
@@ -138,6 +135,7 @@ class Project < ApplicationRecord
has_many :commit_logs, dependent: :destroy
has_many :daily_project_statistics, dependent: :destroy
has_one :project_dataset, dependent: :destroy
has_many :sync_repositories, dependent: :destroy
after_create :incre_user_statistic, :incre_platform_statistic
after_save :check_project_members
before_save :set_invite_code, :reset_unmember_followed, :set_recommend_and_is_pinned, :reset_cache_data


+ 1
- 0
app/models/sync_repository_branch.rb View File

@@ -11,6 +11,7 @@
# reposync_branch_id :integer
# created_at :datetime not null
# updated_at :datetime not null
# enable :boolean default("1")
#
# Indexes
#


+ 11
- 0
app/views/api/v1/projects/sync_repositories/branches.json.jbuilder View File

@@ -0,0 +1,11 @@
json.total_count @group_sync_repository_branch.keys.count
json.sync_repository_branches @group_sync_repository_branch.each do |key|
json.gitlink_branch_name key[0][0]
json.external_branch_name key[0][1]
branches = @sync_repository_branches.where(gitlink_branch_name: key[0][0], external_branch_name: key[0][1])
branch = branches.last
json.sync_time branch.sync_time
json.sync_status branch.sync_status
json.enable branch.enable
json.reposync_branch_ids branches.pluck(:reposync_branch_id)
end

+ 7
- 0
app/views/api/v1/projects/sync_repositories/index.json.jbuilder View File

@@ -0,0 +1,7 @@
json.total_count @group_sync_repository.keys.count
json.sync_repositories @group_sync_repository.each do |key|
json.type key[0][0]
json.external_repo_address key[0][1]
json.sync_granularity key[0][2]
json.sync_repository_ids @sync_repositories.where(type: key[0][0], external_repo_address: key[0][1], sync_granularity: key[0][2]).pluck(:id)
end

+ 2
- 1
config/routes/api.rb View File

@@ -78,9 +78,10 @@ defaults format: :json do

# projects文件夹下的
scope module: :projects do
resources :sync_repositories, only: [:create] do
resources :sync_repositories, only: [:create, :index] do
collection do
post :sync
get :branches
end
end
resource :dataset, only: [:create, :update, :show]


+ 5
- 0
db/migrate/20240417025003_add_enable_to_sync_repository_branch.rb View File

@@ -0,0 +1,5 @@
class AddEnableToSyncRepositoryBranch < ActiveRecord::Migration[5.2]
def change
add_column :sync_repository_branches, :enable, :boolean, default: true
end
end

Loading…
Cancel
Save