Sha256: 09c15bf7eef08cc733ea91b1a39ee7f09f5eace45a2df144112247b3790ad285

Contents?: true

Size: 1.02 KB

Versions: 9

Compression:

Stored size: 1.02 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)) }

    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

9 entries across 9 versions & 1 rubygems

Version Path
hubstats-0.3.0 app/models/hubstats/label.rb
hubstats-0.2.3 app/models/hubstats/label.rb
hubstats-0.2.2 app/models/hubstats/label.rb
hubstats-0.2.1 app/models/hubstats/label.rb
hubstats-0.2.0 app/models/hubstats/label.rb
hubstats-0.1.3 app/models/hubstats/label.rb
hubstats-0.1.2 app/models/hubstats/label.rb
hubstats-0.1.1 app/models/hubstats/label.rb
hubstats-0.1.0 app/models/hubstats/label.rb