Add /favorites.json endpoint.

This commit is contained in:
evazion
2020-02-24 22:28:08 -06:00
parent 928c7f8a0a
commit 7c71311eef
2 changed files with 25 additions and 1 deletions

View File

@@ -3,7 +3,28 @@ class Favorite < ApplicationRecord
belongs_to :post
belongs_to :user
scope :for_user, ->(user_id) {where("user_id % 100 = #{user_id.to_i % 100} and user_id = #{user_id.to_i}")}
scope :public_favorites, -> { where(user: User.bit_prefs_match(:enable_private_favorites, false)) }
def self.visible(user)
user.is_admin? ? all : for_user(user.id).or(public_favorites)
end
def self.search(params)
q = super
q = q.search_attributes(params, :post)
if params[:user_id].present?
q = q.for_user(params[:user_id])
end
q.order(post_id: :desc)
end
def self.available_includes
[:post, :user]
end
def self.add(post:, user:)
Favorite.transaction do