diff options
Diffstat (limited to 'app/models/event.rb')
-rw-r--r-- | app/models/event.rb | 330 |
1 files changed, 0 insertions, 330 deletions
diff --git a/app/models/event.rb b/app/models/event.rb deleted file mode 100644 index c9a88ffa8e0..00000000000 --- a/app/models/event.rb +++ /dev/null @@ -1,330 +0,0 @@ -# == Schema Information -# -# Table name: events -# -# id :integer not null, primary key -# target_type :string(255) -# target_id :integer -# title :string(255) -# data :text -# project_id :integer -# created_at :datetime -# updated_at :datetime -# action :integer -# author_id :integer -# - -class Event < ActiveRecord::Base - include Sortable - default_scope { where.not(author_id: nil) } - - CREATED = 1 - UPDATED = 2 - CLOSED = 3 - REOPENED = 4 - PUSHED = 5 - COMMENTED = 6 - MERGED = 7 - JOINED = 8 # User joined project - LEFT = 9 # User left project - - delegate :name, :email, to: :author, prefix: true, allow_nil: true - delegate :title, to: :issue, prefix: true, allow_nil: true - delegate :title, to: :merge_request, prefix: true, allow_nil: true - delegate :title, to: :note, prefix: true, allow_nil: true - - belongs_to :author, class_name: "User" - belongs_to :project - belongs_to :target, polymorphic: true - - # For Hash only - serialize :data - - # Callbacks - after_create :reset_project_activity - - # Scopes - scope :recent, -> { order("created_at DESC") } - scope :code_push, -> { where(action: PUSHED) } - scope :in_projects, ->(project_ids) { where(project_id: project_ids).recent } - scope :with_associations, -> { includes(project: :namespace) } - - class << self - def reset_event_cache_for(target) - Event.where(target_id: target.id, target_type: target.class.to_s). - order('id DESC').limit(100). - update_all(updated_at: Time.now) - end - - def contributions - where("action = ? OR (target_type in (?) AND action in (?))", - Event::PUSHED, ["MergeRequest", "Issue"], - [Event::CREATED, Event::CLOSED, Event::MERGED]) - end - end - - def proper? - if push? - true - elsif membership_changed? - true - elsif created_project? - true - else - (issue? || merge_request? || note? || milestone?) && target - end - end - - def project_name - if project - project.name_with_namespace - else - "(deleted project)" - end - end - - def target_title - target.title if target && target.respond_to?(:title) - end - - def created? - action == CREATED - end - - def push? - action == PUSHED && valid_push? - end - - def merged? - action == MERGED - end - - def closed? - action == CLOSED - end - - def reopened? - action == REOPENED - end - - def joined? - action == JOINED - end - - def left? - action == LEFT - end - - def commented? - action == COMMENTED - end - - def membership_changed? - joined? || left? - end - - def created_project? - created? && !target - end - - def created_target? - created? && target - end - - def milestone? - target_type == "Milestone" - end - - def note? - target_type == "Note" - end - - def issue? - target_type == "Issue" - end - - def merge_request? - target_type == "MergeRequest" - end - - def milestone - target if milestone? - end - - def issue - target if issue? - end - - def merge_request - target if merge_request? - end - - def note - target if note? - end - - def action_name - if push? - if new_ref? - "pushed new" - elsif rm_ref? - "deleted" - else - "pushed to" - end - elsif closed? - "closed" - elsif merged? - "accepted" - elsif joined? - 'joined' - elsif left? - 'left' - elsif commented? - "commented on" - elsif created_project? - if project.import? - "imported" - else - "created" - end - else - "opened" - end - end - - def valid_push? - data[:ref] && ref_name.present? - rescue - false - end - - def tag? - Gitlab::Git.tag_ref?(data[:ref]) - end - - def branch? - Gitlab::Git.branch_ref?(data[:ref]) - end - - def new_ref? - Gitlab::Git.blank_ref?(commit_from) - end - - def rm_ref? - Gitlab::Git.blank_ref?(commit_to) - end - - def md_ref? - !(rm_ref? || new_ref?) - end - - def commit_from - data[:before] - end - - def commit_to - data[:after] - end - - def ref_name - if tag? - tag_name - else - branch_name - end - end - - def branch_name - @branch_name ||= Gitlab::Git.ref_name(data[:ref]) - end - - def tag_name - @tag_name ||= Gitlab::Git.ref_name(data[:ref]) - end - - # Max 20 commits from push DESC - def commits - @commits ||= (data[:commits] || []).reverse - end - - def commits_count - data[:total_commits_count] || commits.count || 0 - end - - def ref_type - tag? ? "tag" : "branch" - end - - def push_with_commits? - !commits.empty? && commit_from && commit_to - end - - def last_push_to_non_root? - branch? && project.default_branch != branch_name - end - - def note_commit_id - target.commit_id - end - - def target_iid - target.respond_to?(:iid) ? target.iid : target_id - end - - def note_short_commit_id - Commit.truncate_sha(note_commit_id) - end - - def note_commit? - target.noteable_type == "Commit" - end - - def note_project_snippet? - target.noteable_type == "Snippet" - end - - def note_target - target.noteable - end - - def note_target_id - if note_commit? - target.commit_id - else - target.noteable_id.to_s - end - end - - def note_target_iid - if note_target.respond_to?(:iid) - note_target.iid - else - note_target_id - end.to_s - end - - def note_target_type - if target.noteable_type.present? - target.noteable_type.titleize - else - "Wall" - end.downcase - end - - def body? - if push? - push_with_commits? - elsif note? - true - else - target.respond_to? :title - end - end - - def reset_project_activity - if project - project.update_column(:last_activity_at, self.created_at) - end - end -end |