diff --git a/app/services/discourse_rewind/rewind/action/create_posts_count_report.rb b/app/services/discourse_rewind/rewind/action/create_posts_count_report.rb index c7b5bcd..9b62c83 100644 --- a/app/services/discourse_rewind/rewind/action/create_posts_count_report.rb +++ b/app/services/discourse_rewind/rewind/action/create_posts_count_report.rb @@ -4,10 +4,19 @@ module DiscourseRewind class Rewind::Action::CreatePostsCountReport < Service::ActionBase option :params option :guardian + option :date + option :user delegate :username, :year, to: :params, private: true def call + p date + p user + p guardian + p username + p year + p params + { data: { count: 5 }, identifier: "posts-count-report" } end end diff --git a/app/services/discourse_rewind/rewind/fetch.rb b/app/services/discourse_rewind/rewind/fetch.rb index 492888d..90d86b6 100644 --- a/app/services/discourse_rewind/rewind/fetch.rb +++ b/app/services/discourse_rewind/rewind/fetch.rb @@ -35,16 +35,26 @@ module DiscourseRewind validates :username, presence: true end + model :user + model :date model :reports private - def fetch_reports(params:, guardian:) + def fetch_user(params:) + User.find_by_username(params.username) + end + + def fetch_date(params:) + Date.new(params.year).all_year + end + + def fetch_reports(params:, date:, user:, guardian:) key = "rewind:#{params.username}:#{params.year}" reports = Discourse.redis.get(key) if Rails.env.development? || !reports - reports = REPORTS.map { |report| report.call(params:, guardian:) } + reports = REPORTS.map { |report| report.call(params:, date:, user:, guardian:) } Discourse.redis.setex(key, CACHE_DURATION, MultiJson.dump(reports)) else reports = MultiJson.load(reports, symbolize_keys: true)