35 lines
1.2 KiB
Ruby
35 lines
1.2 KiB
Ruby
class DailyProjectStatisticsJob < ApplicationJob
|
|
queue_as :cache
|
|
|
|
def perform
|
|
date = (Date.today - 1.days).to_s
|
|
daily_data_keys = $redis_cache.keys("v2-project-statistic:*-#{date}")
|
|
daily_data_keys.each do |key|
|
|
result = $redis_cache.hgetall(key)
|
|
project_id = key.gsub('v2-project-statistic:', '').gsub("-#{date}", '')
|
|
next unless Project.find_by_id(project_id).present?
|
|
visits = result["visits"].to_i
|
|
watchers = result["watchers"].to_i
|
|
praises = result["praises"].to_i
|
|
forks = result["forks"].to_i
|
|
issues = result["issues"].to_i
|
|
closed_issues = result["closed_issues"].to_i
|
|
pullrequests = result["pullrequests"].to_i
|
|
commits = result["commits"].to_i
|
|
score = visits *1 + watchers *5 + praises * 5 + forks * 10 + issues *5 + pullrequests * 10 + commits * 5
|
|
DailyProjectStatistic.create!(
|
|
project_id: project_id,
|
|
date: date,
|
|
score: score ,
|
|
visits: visits,
|
|
watchers: watchers,
|
|
praises: praises,
|
|
forks: forks,
|
|
issues: issues,
|
|
closed_issues: closed_issues,
|
|
pullrequests: pullrequests,
|
|
commits: commits
|
|
)
|
|
end
|
|
end
|
|
end |