class MarkFilesController < ApplicationController
  before_action :require_login
  before_action :load_project 
  before_action :load_pull_request

  def index
    @files_result = Gitea::PullRequest::FilesService.call(@owner.login, @project.identifier, @pull_request.gitea_number, current_user&.gitea_token, { "only-file-name": true })
    @mark_files = MarkFile.where(pull_request_id: @pull_request.id)
  end

  def create
    # unless @pull_request.mark_files.present?
    #   MarkFile.bulk_insert(*%i[pull_request_id, file_path_sha file_path created_at updated_at]) do |worker|
    #     @files_result['Files'].each do |file|
    #       worker.add(pull_request_id: @pull_request.id, file_path_sha: SecureRandom.uuid.gsub("-", ""), file_path: file['Name'])
    #     end
    #   end
    # end
  end

  def mark_file_as_unread
    tip_exception "参数错误" if params[:file_path_sha].blank?
    file_path = Base64.strict_decode64(params[:file_path_sha].to_s)
    mark_file = @pull_request.mark_files.find_or_initialize_by(file_path_sha: params[:file_path_sha])
    mark_file.file_path = file_path
    mark_file.user_id = current_user.id
    mark_file.mark_as_read = false
    mark_file.save
    render_ok
  rescue Exception => e
    tip_exception "参数解析错误"
  end

  def mark_file_as_read
    tip_exception "参数错误" if params[:file_path_sha].blank?
    file_path = Base64.strict_decode64(params[:file_path_sha].to_s)
    mark_file = @pull_request.mark_files.find_or_initialize_by(file_path_sha: params[:file_path_sha])
    mark_file.file_path = file_path
    mark_file.user_id = current_user.id
    mark_file.mark_as_read = true
    mark_file.save
    render_ok
  rescue Exception => e
    tip_exception "参数解析错误"
  end

  private 
  def review_params 
    params.require(:review).permit(:content, :commit_id, :status)
  end

  def load_pull_request
    @pull_request = @project.pull_requests.where(gitea_number: params[:id]).where.not(id: params[:id]).take || @project.pull_requests.find_by_id(params[:id])
  end

end