Sha256: b2c77850ea2de41dc09a2f51011ec49ef1bff2f7481b34a8c8e98c0e922b768f

Contents?: true

Size: 1.05 KB

Versions: 4

Compression:

Stored size: 1.05 KB

Contents

module Hubstats
  class Label < ActiveRecord::Base
    scope :with_a_pull_request, lambda { |pull_ids|
      select("hubstats_labels.*")
      .select("COUNT(hubstats_labels_pull_requests.pull_request_id) AS pull_request_count")
      .joins("LEFT JOIN hubstats_labels_pull_requests ON hubstats_labels_pull_requests.label_id = hubstats_labels.id")
      .with_ids(pull_ids)
      .having("pull_request_count > 0")
      .group("hubstats_labels.id")
    }

    scope :with_ids, lambda { |pull_ids| (where("hubstats_labels_pull_requests.pull_request_id" => pull_ids)) unless pull_ids.blank? }

    scope :with_state, lambda {|state| (where(state: state) unless state == 'all') if state}

    attr_accessible :url, :name, :color

    has_and_belongs_to_many :pull_requests, :join_table => 'hubstats_labels_pull_requests'

    def self.first_or_create(label)
      if exists = Hubstats::Label.where(name: label[:name]).first
        return exists
      else
        Hubstats::Label.new(name: label[:name], url: label[:url], color: label[:color])
      end
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hubstats-0.0.23 app/models/hubstats/label.rb
hubstats-0.0.22 app/models/hubstats/label.rb
hubstats-0.0.21 app/models/hubstats/label.rb
hubstats-0.0.20 app/models/hubstats/label.rb