Sha256: d8452088f5c2f8cb7e6335c87dfb605ab92602334d8c4be6dfee6002bab7a5ec
Contents?: true
Size: 1.6 KB
Versions: 8
Compression:
Stored size: 1.6 KB
Contents
module Hubstats class Label < ActiveRecord::Base # 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