refactoring
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
module PostSets
|
||||
class Base
|
||||
def has_wiki?
|
||||
is_single_tag?
|
||||
false
|
||||
end
|
||||
|
||||
def wiki_page
|
||||
@@ -9,20 +9,20 @@ module PostSets
|
||||
end
|
||||
|
||||
def has_artist?
|
||||
is_single_tag?
|
||||
false
|
||||
end
|
||||
|
||||
def artist
|
||||
end
|
||||
|
||||
def presenter
|
||||
@presenter ||= PostSetPresenter.new(self)
|
||||
end
|
||||
|
||||
def is_single_tag?
|
||||
false
|
||||
end
|
||||
|
||||
def presenter
|
||||
raise NotImplementedError
|
||||
end
|
||||
|
||||
def arbitrary_sql_order_clause(ids, table_name)
|
||||
if ids.empty?
|
||||
return "#{table_name}.id desc"
|
||||
|
||||
@@ -1,20 +1,10 @@
|
||||
module PostSets
|
||||
class Favorite < Base
|
||||
attr_reader :user, :page, :favorites, :posts
|
||||
attr_reader :user, :page, :favorites
|
||||
|
||||
def initialize(user_id, page)
|
||||
@user = ::User.find(user_id)
|
||||
@page = [page.to_i, 1].max
|
||||
@favorites = ::Favorite.model_for(user.id).for_user(user.id).page(page)
|
||||
@posts = ::Post.where("id in (?)", post_ids).order(arbitrary_sql_order_clause(post_ids, "posts")).page("b0")
|
||||
end
|
||||
|
||||
def post_ids
|
||||
@post_ids ||= favorites.map(&:post_id)
|
||||
end
|
||||
|
||||
def offset
|
||||
(page - 1) * records_per_page
|
||||
@favorites = ::Favorite.model_for(user.id).for_user(user.id).paginate(page)
|
||||
end
|
||||
|
||||
def tag_array
|
||||
@@ -24,5 +14,13 @@ module PostSets
|
||||
def tag_string
|
||||
tag_array.join(" ")
|
||||
end
|
||||
|
||||
def posts
|
||||
favorites.map(&:post)
|
||||
end
|
||||
|
||||
def presenter
|
||||
@presenter ||= ::PostSetPresenters::Favorite.new(self)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -13,11 +13,7 @@ module PostSets
|
||||
end
|
||||
|
||||
def has_wiki?
|
||||
if tag_array.any?
|
||||
::WikiPage.titled(tag_string).exists?
|
||||
else
|
||||
false
|
||||
end
|
||||
tag_array.any? && ::WikiPage.titled(tag_string).exists?
|
||||
end
|
||||
|
||||
def wiki_page
|
||||
@@ -28,8 +24,20 @@ module PostSets
|
||||
end
|
||||
end
|
||||
|
||||
def has_artist?
|
||||
tag_array.any? && ::Artist.name_equals(tag_string).exists?
|
||||
end
|
||||
|
||||
def artist
|
||||
::Artist.name_equals(tag_string).first
|
||||
end
|
||||
|
||||
def is_single_tag?
|
||||
tag_array.size == 1
|
||||
end
|
||||
|
||||
def presenter
|
||||
@presenter ||= ::PostSetPresenters::Post.new(self)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user