diff options
author | rhenium <re4k@re4k.info> | 2013-05-31 22:46:49 +0900 |
---|---|---|
committer | rhenium <re4k@re4k.info> | 2013-05-31 22:46:49 +0900 |
commit | 85424b0c01fe508ffdfa8e38e4423853986d7451 (patch) | |
tree | f5f8edf87fca35b009b5359af9b08dcea2dde588 /app | |
parent | a0e5995cd5b8bea5f58b88b092a2f928682e8f20 (diff) | |
download | aclog-85424b0c01fe508ffdfa8e38e4423853986d7451.tar.gz |
improve Tweet.recent
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/search_controller.rb | 11 | ||||
-rw-r--r-- | app/models/tweet.rb | 4 |
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 } |