Sha256: b6ed6ee99b9eda3a7eb24439917e05b68885a8116354f198ddee4588dbc0e0ae

Contents?: true

Size: 1.64 KB

Versions: 8

Compression:

Stored size: 1.64 KB

Contents

module Hubstats
  class Label < ActiveRecord::Base

    def self.record_timestamps; false; end

    # Various checks that can be used to filter and find info about labels.
    scope :with_ids, lambda {|pull_ids| (where("hubstats_labels_pull_requests.pull_request_id" => pull_ids))}
    scope :with_state, lambda {|state| (where(state: state) unless state == 'all') if state}

    # Public - Counts all of the labels that are assigned to one of the PRs that is passed in. This is then 
    # merged with the list of PRs. It also shows a count of the number of PRs with each specific label.
    #
    # pull_requests - the PRs that are shown on the given index page
    #
    # Returns - the labels data
    def self.count_by_pull_requests(pull_requests)
      select("hubstats_labels.*")
       .select("COUNT(hubstats_labels_pull_requests.pull_request_id) AS pull_request_count")
       .joins(:pull_requests).merge(pull_requests)
       .having("pull_request_count > 0")
       .group("hubstats_labels.id")
       .order("pull_request_count DESC")
    end

    attr_accessible :url, :name, :color

    has_and_belongs_to_many :pull_requests, :join_table => 'hubstats_labels_pull_requests'

    # Public - Checks if the label is currently existing, and if it isn't, then makes a new label with 
    # the specifications that are passed in.
    #
    # label - the info that's passed in about the new label
    #
    # Returns - the label 
    def self.first_or_create(label)
      if exists = Hubstats::Label.where(name: label[:name]).first
        return exists
      else
        Label.new(name: label[:name], url: label[:url], color: label[:color])
      end
    end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
hubstats-0.6.0 app/models/hubstats/label.rb
hubstats-0.5.12 app/models/hubstats/label.rb
hubstats-0.5.11 app/models/hubstats/label.rb
hubstats-0.5.10 app/models/hubstats/label.rb
hubstats-0.5.9 app/models/hubstats/label.rb
hubstats-0.5.7 app/models/hubstats/label.rb
hubstats-0.5.6 app/models/hubstats/label.rb
hubstats-0.5.5 app/models/hubstats/label.rb