class CategoryFeaturedUser < ActiveRecord::Base
  belongs_to :category
  belongs_to :user

  def self.max_featured_users
    5
  end

  def self.feature_users_in(category)
    # Figure out major posters in the category
    user_counts = exec_sql "
      SELECT p.user_id,
             COUNT(*) AS category_posts
      FROM posts AS p
      INNER JOIN topics AS ft ON ft.id = p.topic_id
      WHERE ft.category_id = :category_id
      GROUP BY p.user_id
      ORDER BY category_posts DESC
      LIMIT :max_featured_users
    ", category_id: category.id, max_featured_users: max_featured_users

    transaction do
      CategoryFeaturedUser.delete_all category_id: category.id
      user_counts.each do |uc|
        create(category_id: category.id, user_id: uc['user_id'])
      end
    end

  end

end

# == Schema Information
#
# Table name: category_featured_users
#
#  id          :integer          not null, primary key
#  category_id :integer
#  user_id     :integer
#  created_at  :datetime         not null
#  updated_at  :datetime         not null
#
# Indexes
#
#  index_category_featured_users_on_category_id_and_user_id  (category_id,user_id) UNIQUE
#