From 113351712762484fb5957ccb00b8350ba6a9c314 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Mon, 29 Jun 2020 16:05:22 +0800 Subject: [PATCH] ADD simple project api --- app/controllers/projects_controller.rb | 9 ++++++++- app/helpers/projects_helper.rb | 14 ++++++++++++++ app/models/repository.rb | 18 ++++++++++++++++++ config/routes.rb | 5 +++-- 4 files changed, 43 insertions(+), 3 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 0c8aaf2c9..fdda05dee 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -1,7 +1,8 @@ class ProjectsController < ApplicationController include ApplicationHelper include OperateProjectAbilityAble - before_action :require_login, except: %i[index branches group_type_list] + include ProjectsHelper + before_action :require_login, except: %i[index branches group_type_list simple] before_action :find_project_with_id, only: %i[show branches update destroy fork_users praise_users watch_users] before_action :authorizate_user_can_edit_project!, only: %i[update] before_action :project_public?, only: %i[fork_users praise_users watch_user] @@ -98,6 +99,12 @@ class ProjectsController < ApplicationController @fork_users = paginate(fork_users) end + def simple + project = Project.includes(:owner).select(:id, :name, :identifier, :user_id).find params[:id] + + json_response(project) + end + private def project_params params.permit(:user_id, :name, :description, :repository_name, diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index b9cd457e3..7079ae936 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -27,4 +27,18 @@ module ProjectsHelper def find_user_by_login_or_mail(identifier) (User.find_by_login identifier) || (User.find_by_mail identifier) end + + def json_response(project) + json = { + identifier: project.identifier, + name: project.name, + id: project.id, + author: { + login: project.owner.login, + name: project.owner.real_name, + image_url: url_to_avatar(project.owner) + } + } + render json: json + end end diff --git a/app/models/repository.rb b/app/models/repository.rb index 0cd5ed511..6d20afce5 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -15,4 +15,22 @@ class Repository < ApplicationRecord def set_mirror! self.build_mirror(status: Mirror.statuses[:waiting]).save end + + def mirror_status + self&.mirror&.numerical_for_status + end + + def mirror_num + self&.mirror&.sync_num + end + + def first_sync? + self&.mirror&.sync_num === 1 + end + + def sync_mirror! + repo_mirror = self.mirror + repo_mirror.set_status!(Mirror.statuses[:waiting]) + repo_mirror.increment!(:sync_num) + end end diff --git a/config/routes.rb b/config/routes.rb index 24ae81176..13ca78ff7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -32,8 +32,8 @@ Rails.application.routes.draw do delete 'commons/delete', to: 'commons#delete' resources :issues, except: [:index, :new,:create, :update, :edit, :destroy] do - resources :journals, only: [:index, :create, :destroy, :edit, :update] do - member do + resources :journals, only: [:index, :create, :destroy, :edit, :update] do + member do get :get_children_journals end end @@ -118,6 +118,7 @@ Rails.application.routes.draw do get :watch_users get :praise_users get :fork_users + get :simple end end