aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorrhenium <re4k@re4k.info>2013-05-31 22:46:49 +0900
committerrhenium <re4k@re4k.info>2013-05-31 22:46:49 +0900
commit85424b0c01fe508ffdfa8e38e4423853986d7451 (patch)
treef5f8edf87fca35b009b5359af9b08dcea2dde588 /app
parenta0e5995cd5b8bea5f58b88b092a2f928682e8f20 (diff)
downloadaclog-85424b0c01fe508ffdfa8e38e4423853986d7451.tar.gz
improve Tweet.recent
Diffstat (limited to 'app')
-rw-r--r--app/controllers/search_controller.rb11
-rw-r--r--app/models/tweet.rb4
2 files changed, 7 insertions, 8 deletions
diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 7d94393..aa13660 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -1,7 +1,9 @@
class SearchController < ApplicationController
+ include Aclog::Twitter
+
def search
@caption = "search"
- @tweets = Tweet.where(parse_query(params[:query])).order_by_id.reacted.list(params, force_page: true)
+ @tweets = Tweet.where(parse_query(params[:query])).reacted.recent(7).order_by_id.list(params, force_page: true)
end
private
@@ -43,7 +45,7 @@ class SearchController < ApplicationController
uid = u && u.id || 0
tweets[:user_id].__send__(positive ? :eq :not_eq, uid)
when /^-?date:(\d{4}(-?)\d{2}\2\d{2})(?:\.\.|-)(\d{4}\2\d{2}\2\d{2})$/ # $1: begin, $2: end
- tweets[:id].__send__(positive ? :in : :not_in, date_to_id($1)...date_to_id($3, 1))
+ tweets[:id].__send__(positive ? :in : :not_in, snowflake(Date.parse($1))...snowflake(Date.parse($3) + 1))
when /^-?favs?:(\d+)$/
tweets[:favorites_count].__send__(positive ? :gteq : :lt, $1.to_i)
when /^-?rts?:(\d+)$/
@@ -58,9 +60,4 @@ class SearchController < ApplicationController
tweets[:text].__send__(positive ? :matches : :does_not_match, "%#{search_text}%")
end
end
-
- def date_to_id(str, offset = 0)
- time = (Date.parse(str) + offset).to_datetime
- (time.to_i * 1000 - 1288834974657) << 22
- end
end
diff --git a/app/models/tweet.rb b/app/models/tweet.rb
index c57849e..dd7d0bc 100644
--- a/app/models/tweet.rb
+++ b/app/models/tweet.rb
@@ -1,4 +1,6 @@
class Tweet < ActiveRecord::Base
+ extend Aclog::Twitter
+
belongs_to :user
has_many :favorites, -> { order("favorites.id") }, dependent: :delete_all
has_many :retweets, -> { order("retweets.id") }, dependent: :delete_all
@@ -6,7 +8,7 @@ class Tweet < ActiveRecord::Base
has_many :favoriters, -> {order("favorites.id") }, through: :favorites, source: :user
has_many :retweeters, -> { order("retweets.id") }, through: :retweets, source: :user
- scope :recent, -> { where("tweets.tweeted_at > ?", Time.zone.now - 3.days) }
+ scope :recent, ->(days = 3) { where("tweets.id > ?", snowflake(Time.zone.now - days.days)) }
scope :reacted, -> {where("tweets.favorites_count > 0 OR tweets.retweets_count > 0") }
scope :not_protected, -> { includes(:user).where(users: {protected: false}) }
scope :max_id, -> id { where("tweets.id <= ?", id.to_i) if id }