notes_load.rb 1.12 KB
class NotesLoad < BaseContext
  def execute
    target_type = params[:target_type]
    target_id   = params[:target_id]
    first_id    = params[:first_id]
    last_id     = params[:last_id]


    @notes = case target_type
             when "commit" 
               then project.commit_notes(project.commit(target_id)).fresh.limit(20)
             when "snippet"
               then  project.snippets.find(target_id).notes
             when "wall"
               then project.common_notes.order("created_at DESC").fresh.limit(50)
             when "issue"
               then project.issues.find(target_id).notes.inc_author.order("created_at DESC").limit(20)
             when "merge_request"
               then project.merge_requests.find(target_id).notes.inc_author.order("created_at DESC").limit(20)
             when "wiki"
               then project.wikis.reverse.map {|w| w.notes.fresh }.flatten[0..20]
             end

    @notes = if last_id
               @notes.where("id > ?", last_id)
             elsif first_id
               @notes.where("id < ?", first_id)
             else 
               @notes
             end
  end
end