From aabfaad458615c65e65c25ec594eb4cf71864763 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 30 Sep 2021 11:09:13 +0800 Subject: [PATCH] add: release use database data --- .../version_releases_controller.rb | 7 +++---- app/models/version_release.rb | 6 ++++++ .../_version_release.json.jbuilder | 20 +++++++++---------- .../version_releases/index.json.jbuilder | 18 +++++++---------- app/views/version_releases/show.json.jbuilder | 4 ++-- ...10930025555_add_sha_to_version_releases.rb | 5 +++++ 6 files changed, 33 insertions(+), 27 deletions(-) create mode 100644 db/migrate/20210930025555_add_sha_to_version_releases.rb diff --git a/app/controllers/version_releases_controller.rb b/app/controllers/version_releases_controller.rb index ade2d07ec..c66a4bf0d 100644 --- a/app/controllers/version_releases_controller.rb +++ b/app/controllers/version_releases_controller.rb @@ -5,11 +5,9 @@ class VersionReleasesController < ApplicationController before_action :find_version , only: [:show, :edit, :update, :destroy] def index - version_releases = Gitea::Versions::ListService.new(@user.gitea_token, @user.try(:login), @repository.try(:identifier)).call - @version_releases = version_releases + @version_releases = kaminari_paginate(@repository.version_releases.order(created_at: :desc)) @user_permission = current_user.present? && (@repository.project.all_developers.include?(current_user) || current_user.admin?) @user_admin_permission = current_user.present? && (@repository.project.all_managers.include?(current_user) || current_user.admin?) - @forge_releases = @repository.version_releases.select(:id,:version_gid, :created_at).includes(:attachments) end def new @@ -24,7 +22,7 @@ class VersionReleasesController < ApplicationController end def show - @release = Gitea::Versions::GetService.call(current_user.gitea_token, @user&.login, @repository&.identifier, @version&.version_gid) + # @release = Gitea::Versions::GetService.call(current_user.gitea_token, @user&.login, @repository&.identifier, @version&.version_gid) end def create @@ -49,6 +47,7 @@ class VersionReleasesController < ApplicationController zipball_url: git_version_release["zipball_url"], url: git_version_release["url"], version_gid: git_version_release["id"], + sha: git_version_release["sha"] } version_release.update_attributes!(update_params) version_release.project_trends.create(user_id: current_user.id, project_id: @project.id, action_type: "create") diff --git a/app/models/version_release.rb b/app/models/version_release.rb index 16b823a78..3c97420ea 100644 --- a/app/models/version_release.rb +++ b/app/models/version_release.rb @@ -17,6 +17,7 @@ # created_at :datetime not null # updated_at :datetime not null # repository_id :integer +# sha :string(255) # # Indexes # @@ -29,4 +30,9 @@ class VersionRelease < ApplicationRecord has_many :project_trends, as: :trend, dependent: :destroy scope :releases_size, ->{where(draft: false, prerelease: false).size} has_many :attachments, as: :container, dependent: :destroy + + def update_sha + git_release = Gitea::Versions::GetService.call(user.gitea_token, repository&.owner&.login, repository&.identifier, version_gid) + self.update(sha: git_release["sha"]) + end end diff --git a/app/views/version_releases/_version_release.json.jbuilder b/app/views/version_releases/_version_release.json.jbuilder index 86165d5af..ddf59ee75 100644 --- a/app/views/version_releases/_version_release.json.jbuilder +++ b/app/views/version_releases/_version_release.json.jbuilder @@ -1,14 +1,14 @@ json.version_id version.try(:id) -json.id re["id"] -json.tag_name re["tag_name"] -json.target_commitish re["target_commitish"] -json.name re["name"] -json.sha re["sha"] -json.body re["body"] -json.url re["url"] -json.tarball_url render_tar_url(@owner, @repository, re["tag_name"]) -json.zipball_url render_zip_url(@owner, @repository, re["tag_name"]) -json.draft re["draft"] ? "草稿" : (re["prerelease"] ? "预发行" : "稳定") +json.id version&.version_gid +json.tag_name version&.tag_name +json.target_commitish version&.target_commitish +json.name version&.name +json.sha version&.sha +json.body version&.body +json.url version&.url +json.tarball_url render_tar_url(@owner, @repository, version&.tag_name) +json.zipball_url render_zip_url(@owner, @repository, version&.tag_name) +json.draft version&.draft ? "草稿" : (version&.prerelease ? "预发行" : "稳定") json.created_at format_time(version.created_at.to_s.to_time) json.published_at format_time(version.created_at.to_s.to_time) json.user_name user.present? ? user.try(:show_real_name) : "" diff --git a/app/views/version_releases/index.json.jbuilder b/app/views/version_releases/index.json.jbuilder index 8efb88bc1..300b1b60d 100644 --- a/app/views/version_releases/index.json.jbuilder +++ b/app/views/version_releases/index.json.jbuilder @@ -3,18 +3,14 @@ json.user_permission @user_permission json.user_admin_permission @user_admin_permission # json.releases @version_releases json.releases do - json.array! @version_releases.to_a.each do |re| - if re.present? - user = User.select(:id, :gitea_uid, :login, :lastname,:firstname, :nickname).find_by_gitea_uid(re["author"]["id"]) - version = @forge_releases.find_by(version_gid: re["id"]) - if @user_permission && re["draft"] - json.partial! "version_release", locals: {version: version, user: user, re: re} - else - unless re["draft"] - json.partial! "version_release", locals: {version: version, user: user, re: re} - end + json.array! @version_releases.each do |version| + version.update_sha if version.sha.nil? + if @user_permission && version&.draft + json.partial! "version_release", locals: {version: version, user: version&.user} + else + unless version&.draft + json.partial! "version_release", locals: {version: version, user: version&.user} end end - end end diff --git a/app/views/version_releases/show.json.jbuilder b/app/views/version_releases/show.json.jbuilder index 803ae477a..716f5d7b2 100644 --- a/app/views/version_releases/show.json.jbuilder +++ b/app/views/version_releases/show.json.jbuilder @@ -1,2 +1,2 @@ -user = User.select(:id, :gitea_uid, :login, :lastname,:firstname, :nickname).find_by_gitea_uid(@release["author"]["id"]) -json.partial! "version_release", locals: {version: @version, user: user, re: @release} \ No newline at end of file + +json.partial! "version_release", locals: {version: @version, user: @version&.user} \ No newline at end of file diff --git a/db/migrate/20210930025555_add_sha_to_version_releases.rb b/db/migrate/20210930025555_add_sha_to_version_releases.rb new file mode 100644 index 000000000..475d361f8 --- /dev/null +++ b/db/migrate/20210930025555_add_sha_to_version_releases.rb @@ -0,0 +1,5 @@ +class AddShaToVersionReleases < ActiveRecord::Migration[5.2] + def change + add_column :version_releases, :sha, :string + end +end