21 lines
474 B
Ruby
21 lines
474 B
Ruby
class PostSearchContext
|
|
extend Memoist
|
|
attr_reader :id, :seq, :tags
|
|
|
|
def initialize(params)
|
|
@id = params[:id].to_i
|
|
@seq = params[:seq]
|
|
@tags = params[:tags].presence || "status:any"
|
|
end
|
|
|
|
def post_id
|
|
if seq == "prev"
|
|
Post.tag_match(tags).where("posts.id > ?", id).reorder("posts.id asc").first.try(:id)
|
|
else
|
|
Post.tag_match(tags).where("posts.id < ?", id).reorder("posts.id desc").first.try(:id)
|
|
end
|
|
end
|
|
|
|
memoize :post_id
|
|
end
|