json.commits_count @compare_result['Commits']&.size # json.commits @compare_result['Commits'], partial: 'pull_requests/commit', as: :commit json.commits do json.array! @compare_result['Commits'] do |commit| json.author do # TODO: 获取头像地址待优化 forge_user = User.includes(:user_extension).select(:id, :login).find_by(login: commit['Author']['Name']) json.login commit['Author']['Name'] json.name commit['Author']['Name'] json.image_url forge_user.nil? ? '' : url_to_avatar(forge_user) end json.committer do # TODO: 获取头像地址待优化 forge_user = User.includes(:user_extension).select(:id, :login).find_by(login: commit['Committer']['Name']) json.login commit['Committer']['Name'] json.name commit['Committer']['Name'] json.image_url forge_user.nil? ? '' : url_to_avatar(forge_user) end json.timestamp render_unix_time(commit['Committer']['When']) json.time_from_now time_from_now(commit['Committer']['When']) json.created_at render_format_time_with_date(commit['Committer']['When']) json.message commit['CommitMessage'] json.sha commit['Sha'] end end json.diff do if @compare_result['Diff'].blank? json.nil! else json.files_count @compare_result['Diff']['NumFiles'] json.total_addition @compare_result['Diff']['TotalAddition'] json.total_deletion @compare_result['Diff']['TotalDeletion'] # TODO: 解决render partil耗时间问题 # json.files @compare_result['Diff']['Files'], partial: 'pull_requests/diff_file', as: :file, locals: {sha: @compare_result['LatestSha']} json.files do json.array! @compare_result['Diff']['Files'] do |file| json.sha @compare_result['LatestSha'] json.name file['Name'] json.old_name file['OldName'] json.index file['Index'] json.addition file['Addition'] json.deletion file['Deletion'] json.type file['Type'] json.isCreated file['IsCreated'] json.isDeleted file['IsDeleted'] json.isBin file['IsBin'] json.isLFSFile file['IsLFSFile'] json.isRenamed file['IsRenamed'] json.isSubmodule file['IsSubmodule'] json.isLFSFile file['IsLFSFile'] json.sections do json.array! file['Sections'] do |section| json.fileName section['FileName'] json.name section['Name'] json.lines do json.array! section['Lines'] do |line| json.leftIdx line['LeftIdx'] json.rightIdx line['RightIdx'] json.type line['Type'] json.content line['Content'] json.sectionInfo do if line['SectionInfo'].blank? json.nil! else json.path line['SectionInfo']['Path'] json.lastLeftIdx line['SectionInfo']['LastLeftIdx'] json.lastRightIdx line['SectionInfo']['LastRightIdx'] json.leftIdx line['SectionInfo']['LeftIdx'] json.rightIdx line['SectionInfo']['RightIdx'] json.leftHunkSize line['SectionInfo']['LeftHunkSize'] json.rightHunkSize line['SectionInfo']['RightHunkSize'] end end end end end end end end end end