FrankYan93/nanotwitter

View on GitHub
service/tweet.rb

Summary

Maintainability
A
25 mins
Test Coverage
def insertIntoAllFollower(theId, tweet)
    theFollowers = hisFollowers theId
    user=JSON.parse $redis.get("User"+theId.to_s)
    if user.nil?
      user=User.find(theId)
      $redis.set("User"+theId.to_s,user)
    end
    theFollowers<<user
    theFollowers.each do |x|
      print x,"\n"

        next if $redis.ttl(x["id"]) == -2
        print x['id'],"\n"

        n = 100
        # tweet is the whole record
        $redis.lpush(x['id'], tweet.to_json)
        $redis.rpop x if $redis.llen(x) > n
    end
end

get '/:username/likes/tweets' do
    @user_name = params[:username]
    user = User.find_by username: @user_name

    if user.nil?
        "user dosen't exit!"
    else
        @user = user

        n = 50
        all_likes = Like.where(user_id: user[:id]).order(create_time: :desc).limit(n)
        al_tweets = []
        all_likes.each do |like|
            al_tweets << Tweet.find_by(id: like.tweet_id).to_json
        end
        @all_tweets = al_tweets

        @n = params[:n].to_i || 0
        erb :userlikes
    end
end