From 13472b23111774f3f3ea00acd782b21fdb2cb1a6 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 11 Aug 2022 15:21:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=E8=AF=84=E8=AE=BA=E6=9F=A5=E8=AF=A2is=5Ffull?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/docs/slate/source/includes/_pulls.md | 1 + app/models/journal.rb | 1 + .../v1/projects/pulls/journals/list_service.rb | 16 ++++++++++------ public/docs/api.html | 7 +++++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/app/docs/slate/source/includes/_pulls.md b/app/docs/slate/source/includes/_pulls.md index 85b77e181..ac5714db8 100644 --- a/app/docs/slate/source/includes/_pulls.md +++ b/app/docs/slate/source/includes/_pulls.md @@ -1249,6 +1249,7 @@ await octokit.request('GET /api/v1/yystopf/ceshi_commit/pulls/3/journals.json') |state |否| |string |状态, opened: 开启的, resolved: 已解决的, disabled: 无效的| |parent_id |否| |integer|父评论ID| |path |否| |string |评论文件路径| +|is_full |否| |bool |是否展示全部评论(包括回复)| |sort_by |否|created_on|string |排序字段 created_on: 创建时间, updated_on: 更新时间| |sort_direction |否|asc |string |排序类型 desc: 倒序, asc: 正序| diff --git a/app/models/journal.rb b/app/models/journal.rb index e0dbf36d3..20297dd99 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -42,6 +42,7 @@ class Journal < ApplicationRecord belongs_to :resolveer, class_name: 'User', foreign_key: :resolveer_id, optional: true has_many :journal_details, :dependent => :delete_all has_many :attachments, as: :container, dependent: :destroy + has_many :children_journals, class_name: 'Journal', foreign_key: :parent_id scope :journal_includes, ->{includes(:user, :journal_details, :attachments)} scope :parent_journals, ->{where(parent_id: nil)} diff --git a/app/services/api/v1/projects/pulls/journals/list_service.rb b/app/services/api/v1/projects/pulls/journals/list_service.rb index 010fb3651..b7a79c98b 100644 --- a/app/services/api/v1/projects/pulls/journals/list_service.rb +++ b/app/services/api/v1/projects/pulls/journals/list_service.rb @@ -1,12 +1,13 @@ class Api::V1::Projects::Pulls::Journals::ListService < ApplicationService include ActiveModel::Model - attr_reader :project, :pull_request, :keyword, :review_id, :need_respond, :state, :parent_id, :path, :sort_by, :sort_direction, :user + attr_reader :project, :pull_request, :keyword, :review_id, :need_respond, :state, :parent_id, :path, :is_full, :sort_by, :sort_direction, :user attr_accessor :queried_journals validates :sort_by, inclusion: {in: Journal.column_names, message: '请输入正确的SortBy'} validates :sort_direction, inclusion: {in: %w(asc desc), message: '请输入正确的SortDirection'} validates :need_respond, inclusion: {in: [true, false], message: '请输入正确的NeedRespond'}, allow_nil: true + validates :is_full, inclusion: {in: [true, false], message: '请输入正确的IsFull'} validates :state, inclusion: {in: %w(opened resolved disabled)}, allow_nil: true def initialize(project, pull_request, params, user) @@ -19,6 +20,7 @@ class Api::V1::Projects::Pulls::Journals::ListService < ApplicationService @parent_id = params[:parent_id] @sort_by = params[:sort_by] || 'created_on' @sort_direction = params[:sort_direction] || 'asc' + @is_full = ActiveModel::Type::Boolean.new.cast(params[:is_full]) || false @path = params[:path] @user = user end @@ -33,10 +35,12 @@ class Api::V1::Projects::Pulls::Journals::ListService < ApplicationService private def journal_query_data journals = @pull_request.journals - if parent_id.present? - journals = journals.where(parent_id: parent_id) - else - journals = journals.parent_journals + if !is_full + if parent_id.present? + journals = journals.where(parent_id: parent_id) + else + journals = journals.parent_journals + end end journals = journals.where(review_id: review_id) if review_id.present? @@ -45,7 +49,7 @@ class Api::V1::Projects::Pulls::Journals::ListService < ApplicationService journals = journals.where(path: path) if path.present? q = journals.ransack(notes_cont: keyword) - scope = q.result.includes(:user, :resolveer, review: [:reviewer, pull_request: :issue]) + scope = q.result.includes(:user, :resolveer, :children_journals, review: [:reviewer, pull_request: :issue]) scope = scope.order("journals.#{sort_by} #{sort_direction}") @queried_journals = scope diff --git a/public/docs/api.html b/public/docs/api.html index 9689aabe0..c43f7c403 100644 --- a/public/docs/api.html +++ b/public/docs/api.html @@ -14776,6 +14776,13 @@ http://localhost:3000/api/v1/yystopf/ceshi/pulls/1/reviews.json 评论文件路径 +is_full +否 + +bool +是否展示全部评论(包括回复) + + sort_by 否 created_on